This is the Adyen Node.js API Library, providing Node.js developers with an easy way to interact with the Adyen API. The library is a wrapper around the Adyen API, generated from OpenAPI specifications.
A significant portion of this library, particularly the API services and data models, is automatically generated.
- Engine: We use OpenAPI Generator with custom Mustache templates to convert Adyen's OpenAPI specifications into TypeScript code.
- Templates: The custom templates are located in the
/templates-v7/typescriptdirectory. These templates are tailored to fit our custom HTTP client and model structure. - Automation:
- Centralized: The primary generation process is managed in a separate repository,
adyen-sdk-automation. Changes to the OpenAPI specs trigger a GitHub workflow in that repository, which generates the code and opens Pull Requests in this library. - Local: For development and testing, you must use the
adyen-sdk-automationrepository.
- Centralized: The primary generation process is managed in a separate repository,
To test new features or changes to the templates, you must run the generation process from a local clone of the adyen-sdk-automation repository.
-
Clone the automation repository:
git clone https://github.com/Adyen/adyen-sdk-automation.git
-
Link this library: The automation project needs to target your local clone of
adyen-node-api-library. From inside theadyen-sdk-automationdirectory, run the following commands. This will replace thenode/repodirectory with a symlink to your local project.rm -rf node/repo ln -s /path/to/your/adyen-node-api-library node/repo
-
Run the generator: You can now run the Gradle commands to generate code.
- To generate all services for the Node.js library:
./gradlew :node:services
- To generate a single service (e.g., Checkout):
./gradlew :node:checkout
- To clean the repository before generating:
./gradlew :node:cleanRepo :node:checkout
- To generate all services for the Node.js library:
src/client.ts: The central class for configuring the library (API key, environment, etc.) and accessing API services.src/service.ts: The base class for all API services, containing the generic HTTP client logic.src/services/: This package contains the generated service classes (e.g.,CheckoutAPI,Management) that expose methods for specific API endpoints.src/typings/: This package contains the generated TypeScript types (models) used for API requests and responses.src/typings/index.ts: Re-exports all models. This file must be manually updated to export models from any new service.
This is a standard Node.js/TypeScript project.
To compile the TypeScript source code into JavaScript, run:
npm run buildTo execute the unit tests using Jest:
npm testWe use ESLint for linting.
- Check for style violations:
npm run lint
- Apply automatic fixes:
npm run lint:fix
The build will fail if there are any linting errors. Run npm run lint:fix and fix any remaining issues before committing.
The release process is automated via GitHub Actions. When a release is triggered:
- A script determines the next version number (major, minor, or patch).
- The
package.jsonand other version files are updated. - A pull request is created with the version bump.
- Once merged, a GitHub release is created, and the new version is published to npm.