I
Immichβ€’3mo ago
Sargates

[CLOSED] API - Blank data but 200 code

I'm writing a JS thing with the immich API. I'm trying to get the asset ID from the filepath and I'm getting a 200 code but the data is empty. The introduction page for the API is also empty, so I don't know what I'm doing wrong.
No description
28 Replies
Immich
Immichβ€’3mo ago
:wave: Hey @Sargates, Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:. References - Container Logs: docker compose logs docs - Container Status: docker ps -a docs - Reverse Proxy: https://immich.app/docs/administration/reverse-proxy - Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJA Checklist I have... 1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time). 2. :ballot_box_with_check: read applicable release notes. 3. :ballot_box_with_check: reviewed the FAQs for known issues. 4. :ballot_box_with_check: reviewed Github for known issues. 5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy). 6. :ballot_box_with_check: uploaded the relevant information (see below). 7. :blue_square: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable (an item can be marked as "complete" by reacting with the appropriate number) Information In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider: - Your docker-compose.yml and .env files. - Logs from all the containers and their status (see above). - All the troubleshooting steps you've tried so far. - Any recent changes you've made to Immich or your system. - Details about your system (both software/OS and hardware). - Details about your storage (filesystems, type of disks, output of commands like fdisk -l and df -h). - The version of the Immich server, mobile app, and other relevant pieces. - Any other information that you think might be relevant. Please paste files and logs with proper code formatting, and especially avoid blurry screenshots. Without the right information we can't work out what the problem is. Help us help you ;) If this ticket can be closed you can use the /close command, and re-open it later if needed. Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
Sargates
SargatesOPβ€’3mo ago
I'm running in a Docker container, everything is set up correctly, e.g. the volume mounts and API keys
bo0tzz
bo0tzzβ€’3mo ago
Can you share the request you're making, what you're expecting etc?
Sargates
SargatesOPβ€’3mo ago
This is the equivalent request with curl with the exception that the curl is dumping the response headers to stdout. In TS I'm using the Immich SDK which I found out about after digging through the github repo.
No description
Sargates
SargatesOPβ€’3mo ago
This is typescript code:
import * as immich from "@immich/sdk";

let improper_path: string = "/mnt/pool/containers/immich/library/library/3068ae30-8f9b-4767-83ff-168b1107d4bb/2018/06-26/IMG_6722.PNG" // corrupted file within ZFS pool


let proper_path: string = "upload/" + improper_path.replace("/mnt/pool/containers/immich/library/", "");
// proper_path = "upload/library/3068ae30-8f9b-4767-83ff-168b1107d4bb/2018/06-26/IMG_6722.PNG"

let asset: immich.AssetResponseDto[] = await immich.getAssetsByOriginalPath({ path: proper_path});
console.log(asset);
import * as immich from "@immich/sdk";

let improper_path: string = "/mnt/pool/containers/immich/library/library/3068ae30-8f9b-4767-83ff-168b1107d4bb/2018/06-26/IMG_6722.PNG" // corrupted file within ZFS pool


let proper_path: string = "upload/" + improper_path.replace("/mnt/pool/containers/immich/library/", "");
// proper_path = "upload/library/3068ae30-8f9b-4767-83ff-168b1107d4bb/2018/06-26/IMG_6722.PNG"

let asset: immich.AssetResponseDto[] = await immich.getAssetsByOriginalPath({ path: proper_path});
console.log(asset);
However, I am assuming that the API searches for the asset based on the originalPath column in the assets table within the database, but clearly I'm wrong. I attached a screenshot of querying the database from pgAdmin where it should find a match.
No description
Sargates
SargatesOPβ€’3mo ago
I'm probably just using the API wrong, but as I mentioned the "Introduction" page is blank Also, to clarify: "What I'm expecting" is the uuid for the given asset based on its originalPath in the database
bo0tzz
bo0tzzβ€’3mo ago
Try dropping the filename off the end of the path
Daniel
Danielβ€’3mo ago
Also, as a random side note; "upload/" + path.replace("...", "") is extremely cursed lmao. Why not just path.replace("...", "upload/")? :P
Sargates
SargatesOPβ€’3mo ago
Yeah, It used to just be the replace call, and then I looked at the database and saw the upload prefix. I just wasnt thinking about it does not work either
Sargates
SargatesOPβ€’3mo ago
No description
bo0tzz
bo0tzzβ€’3mo ago
You added something new to the start tho πŸ˜›
Sargates
SargatesOPβ€’3mo ago
ah I had just woken up, sorry.
Sargates
SargatesOPβ€’3mo ago
Still doesn't work
No description
bo0tzz
bo0tzzβ€’3mo ago
Open up the folder view in the web UI and check in devtools what requests it's making for that folder Then replicate that
Sargates
SargatesOPβ€’3mo ago
After a further look into it, I realized the issue is my API key. I overlooked the fact that creating an API key is done in the "Account Settings" page and not "Administration" page, so I assumed that an API key created by an administrator would have administration priviledges when interacting with the API
Sargates
SargatesOPβ€’3mo ago
Using a path within my user's storage directory works fine
No description
Sargates
SargatesOPβ€’3mo ago
For posterity, the upload/ prefix is required in the path, as matching with the originalPath column in the database for a given asset, thus the filename shouldn't be included in the request Before I close this out, is there any way to create an API key with admin rights? i.e. accessing and managing all users libraries?
Daniel
Danielβ€’3mo ago
Currently there is not
Sargates
SargatesOPβ€’3mo ago
Is that atleast planned? or coming soon🀞?
Daniel
Danielβ€’3mo ago
Neither It should be rather straightforward to implement though, PRs are always welcome :)
Zeus
Zeusβ€’3mo ago
Is that not blocked by the sharing and library changes..? I thought that would be a pretty major rework
Daniel
Danielβ€’3mo ago
You wouldn't need to touch assets or such I think it's literally just writing to one table, but I could be wrong. Haven't looked at it
bo0tzz
bo0tzzβ€’3mo ago
We should consider 'total' access in the permission rework, I don't think that's something we should just yolo in :P
Daniel
Danielβ€’3mo ago
I mean... we even have scopes for api keys already, but yeah that's fair :)
Sargates
SargatesOPβ€’3mo ago
I was wanting to contribute in the future, but I don't know a thing about web development. I'd have to do a lot of reading to know where to start but I don't have a lot of time right now. Should I rename this thread to something else before closing it?
Daniel
Danielβ€’3mo ago
Nah that's fine
Sargates
SargatesOPβ€’3mo ago
πŸ‘
Immich
Immichβ€’3mo ago
This thread has been closed. To re-open, use the button below.

Did you find this page helpful?