immich/open-api/typescript-sdk
Timon 1fcc2b704b
feat(server)!: add isOwned filter to albums API (#28213)
* feat(server)!: add owned filter to albums API

BREAKING CHANGE: GET /albums with no parameters now returns all accessible albums (owned + shared-with-me) instead of only owned albums.

* document tri-state matrix

* web impl

* collapse to single method and handover branching to sql

* dedupe

* verify that owned, shared, and notShared counts are mapped independently from their respective queries

* refactor(server): add select:['id'] overload to albumRepository.getAll

Avoid fetching full album rows (with albumUsers/sharedLinks subqueries) in map.service where only album IDs are needed.

* focus relevant test filters

* fmt

* Revert "verify that owned, shared, and notShared counts are mapped independently from their respective queries"

This reverts commit 47aab458192c766de4662aada5a6841b091d2a80.

* sync sql

* Revert "document tri-state matrix"

This reverts commit a5b2355d0c6a084f2c021d517bf5ee80123d108c.

* address review comments

* inline shared condition and return as ternary

* sync sql

* use [...albums].sort

Array.toSorted() is not supported in Chrome 109

* use isShared and isOwned nomenclature

* fix e2e tests

* add params to sql query
2026-05-07 12:13:07 -04:00
..
src feat(server)!: add isOwned filter to albums API (#28213) 2026-05-07 12:13:07 -04:00
.npmignore chore: publish sdk on release (#7895) 2024-03-12 12:01:12 -04:00
.nvmrc chore(deps): update node.js to v24.15.0 (#28006) 2026-04-21 09:47:32 +00:00
package.json chore(deps): update node.js to v24.15.0 (#28006) 2026-04-21 09:47:32 +00:00
README.md feat(server): user preferences (#9736) 2024-05-28 09:16:53 +07:00
tsconfig.json chore(deps): update dependency typescript to v6 (#27577) 2026-04-07 17:15:55 +02:00

@immich/sdk

A TypeScript SDK for interfacing with the Immich API.

Install

npm i --save @immich/sdk

Usage

For a more detailed example, check out the @immich/cli.

import { getAllAlbums, getMyUser, init } from "@immich/sdk";

const API_KEY = "<API_KEY>"; // process.env.IMMICH_API_KEY

init({ baseUrl: "https://demo.immich.app/api", apiKey: API_KEY });

const user = await getMyUser();
const albums = await getAllAlbums({});

console.log({ user, albums });