Contributing
This repository is auto-generated from the Immich OpenAPI specification.
Pull requests
Pull requests are welcome! However, modifications to auto-generated code will be rejected.
Prerequisites
We manage the project with mise. To get started, install mise and run mise setup. Then, you can run any task with mise run <task>. To see all available tasks, run mise tasks ls.
PR checklist
Before submitting a pull request, please ensure:
- Run
mise run ci:checkto verify all checks pass - Run all tests (see Testing)
Auto-generated code restrictions
The following directories contain auto-generated code and must not be modified:
immich/client/generated/- Auto-generated clientimmich/cli/commands/- Auto-generated CLI commands
Testing
To run tests, run any of the mise run test:* tasks.
Make sure all tests pass before submitting a pull request.
If you don't have a local Immich server and cannot run End-to-End tests, please mention this in the pull request.
Issues
- Immich API/spec problems (missing/incorrect endpoints, schema issues, breaking API changes): open an issue in the upstream Immich repository.
- Generation issues (bad codegen output, typing problems introduced by generation, workflow automation problems): open an issue on GitHub.
When reporting, include:
- The
IMMICH-VERSIONfrom this repo - The Immich server version you are running
- A minimal reproduction (request/response or endpoint + payload)
Testing Strategy
| Component | How it’s built | Unit tests | E2E tests |
|---|---|---|---|
| Client | auto | yes | no 1 |
| Client wrapper methods | manual | yes | yes |
| CLI commands | auto | yes | yes (partially) 2 |
| CLI custom/wrapper commands | manual | yes | yes |
-
Autogenerated code is not tested end-to-end because it contains no owned logic and exhaustive testing would only re-test the generator and spec rather than catch regressions in our code. ↩
-
Autogenerated CLI commands are E2E-tested only by representative command shapes to verify integration boundaries, since testing every generated command would add duplication without new signal. ↩