This is an n8n community node. It lets you use Lucca in your n8n workflows.
Lucca is a HRIS solutions designed to automate administrative processes such as leave management, expense reports, time tracking, and employee data.
n8n is a fair-code licensed workflow automation platform.
Installation Operations Credentials Compatibility Usage Resources Version history
- n8n: Version 1.0.0 or later.
- mkcert: For local development with HTTPS (optional but recommended).
- Clone this repository.
- Run
npm installto install dependencies.
# Without https (almost impossible to test webhooks locally)
npm run dev # Start the n8n server in HTTP mode.
# Optionnal but recommended for local development with HTTPS and a tunel:
set WEBHOOK_URL=https://<your-tunnel-url>
mkcert -install # Install the local CA (Certificate Authority) in your system trust store.
npm run cert # Generate a local SSL certificate for localhost (creates cert.pem and key.pem).5
npm run dev:https # Start the n8n server in HTTPS mode using the generated certificate.
- Open your n8n instance.
- Go to Settings > Community Nodes.
- Click on Install.
- Enter the package name:
@lucca/n8n-nodes-lucca.
This node provides a generic interface to the Lucca Public API, allowing you to interact with various resources:
- Employees, JobPositions, Employments, Departments, LegalEntities, BusinessEstablishments.
- More resources to come
- Webhook Trigger: Receive real-time events from Lucca (e.g. department update, employee creation).
This node uses OAuth2 for authentication.
- Create an API Key/Application in your Lucca instance (refer to Lucca documentation).
- in n8n, create a new credential for Lucca API.
- Enter your Lucca Domain (e.g.,
mydomainforhttps://mydomain.ilucca.net). - Enter your Client ID and Client Secret.
Tested with n8n version 2.12.3.
This node uses the OpenAPI definition to dynamically generate available operations.
- Select the Lucca node.
- Choose the Resource you want to interact with (e.g., Employees, Departments).
- Select the Operation (e.g., Get by ID, Create).
- Fill in the required parameters.
This node uses the @devlikeapro/n8n-openapi-node library to bridge n8n with the Lucca API.
Why? The Lucca Public API aims to be comprehensive, eventually covering many different domains (Core HR, Leaves, Time, etc.). Developing and maintaining specific n8n operations for hundreds of endpoints manually is not feasible.
How?
We include the official Open API specification (Swagger) for Lucca in the repository. The @devlikeapro/n8n-openapi-node library parses this specification to generate:
- Node Operations: All API endpoints are automatically available as operations in the node.
- UI Parameters: Input fields for the node are created based on the API parameters and schema.
This approach ensures that the node stays up-to-date with the API definition and provides full coverage of the available features.
Important
@devlikeapro/n8n-openapi-node is a build-time-only dependency — it is never loaded at runtime.
n8n Cloud does not allow community nodes to ship with runtime dependencies. To comply, the OpenAPI parsing happens at build time, not at run time:
- Build time (
npm run generate, run as part ofnpm run build): the script inlib/build/generateOpenApiProperties.ctsparses the Lucca OpenAPI spec with@devlikeapro/n8n-openapi-nodeand emits two static files —nodes/Lucca/openApiProperties.jsonandnodes/Lucca/parametersOptions.json. These JSON files are generated artifacts (git-ignored) and are produced fresh on every build. - Run time (inside n8n):
Lucca.node.tssimply imports those pre-generated JSON files. Neither@devlikeapro/n8n-openapi-nodenoropenapi-typesis present in the published package — they live indevDependenciesonly, so the shipped node has zero runtime dependencies.
Consequently, the build script lives in lib/build/ (outside nodes/) and uses the .cts extension so it is
excluded from the n8n community-node lint rules, which forbid third-party imports and Node.js built-ins in node
source. If you change the OpenAPI spec, re-run npm run generate (or npm run build) to regenerate the JSON.