nullsense
nullsense2mo ago

Search Organization Metadata API Not Found

Hello, It seems that Searching Organization Metadata is deprecated with the following API: https://zitadel.com/docs/apis/resources/mgmt/management-service-list-org-metadata and is supported (in beta) with the following API instead: https://zitadel.com/docs/apis/resources/org_service_v2beta/zitadel-org-v-2-beta-organization-service-list-organization-metadata I'm confused about the documentation and looking for help: - Is there a reason we're not keeping a stable undeprecated API while one is under beta? - Which Zitadel versions are these released/in beta-development/deprecated under? It's difficult knowing which docs apply to the version I currently use (2.71.11) despite still being maintained by Zitadel Thank you in advance for the help! \
ZITADEL Docs
Get the metadata of an organization filtered by your query.
ZITADEL Docs
List Organization Metadata
8 Replies
Rajat
Rajat2mo ago
hey @nullsense thanks for your question and feedback, I am raising this internally as we speak, V2 is still evolving and we are slowly getting rid of V1 apis so there's a lot of mix and matches and hence can create confusion, apologies for that. For now, if that matters, Both APIs work. I just tested them, the old one is deprecated but functional. Also, please test the beta API for future-proofing, but note it may still evolve.
nullsense
nullsenseOP2mo ago
What I mean is the docs don’t seem clear whether the V2 API is available on our self-hosted v2.71.11 and we’re hoping someone on the Zitadel team can confirm (and make the docs more clear). If it is indeed not available (and only available on 4.0.0-rc?), then unfortunately we won’t be able to test the api at this time.
Rajat
Rajat2mo ago
hey @nullsense most feature releases are backwards compatible while a Zitadel version that is actively supported. According to this doc, Zitadel v2.x is still stable, so you should have the API v2 endpoints working on them.
nullsense
nullsenseOP2mo ago
@Rajat Thanks for letting me know. Can you help me understand what I'm missing in the following requests then? I wanted to try reaching a different v2 api with rest to validate we can access those apis
curl -L 'https://$CUSTOM-DOMAIN/v2/users/329304651826463004' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <token>'
curl -L 'https://$CUSTOM-DOMAIN/v2/users/329304651826463004' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <token>'
which is successful ✅
{"details":{"sequence":"1", "changeDate":"2025-07-17T18:27:47.959776Z", "resourceOwner":"322930458348290329", "creationDate":"2025-07-17T18:27:47.959776Z"}, "user":{"userId":"329304651826463004", "details":{"sequence":"1", "changeDate":"2025-07-17T18:27:47.959776Z", "resourceOwner":"322930458348290329", "creationDate":"2025-07-17T18:27:47.959776Z"}, "state":"USER_STATE_ACTIVE", "username":"test", "loginNames":["test"], "preferredLoginName":"test", "machine":{"name":"test"}}}
{"details":{"sequence":"1", "changeDate":"2025-07-17T18:27:47.959776Z", "resourceOwner":"322930458348290329", "creationDate":"2025-07-17T18:27:47.959776Z"}, "user":{"userId":"329304651826463004", "details":{"sequence":"1", "changeDate":"2025-07-17T18:27:47.959776Z", "resourceOwner":"322930458348290329", "creationDate":"2025-07-17T18:27:47.959776Z"}, "state":"USER_STATE_ACTIVE", "username":"test", "loginNames":["test"], "preferredLoginName":"test", "machine":{"name":"test"}}}
when I change it to the metadata request though, as the docs show here:
curl -X POST -L 'https://$CUSTOM-DOMAIN/v2/users/329304651826463004/metadata/search' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <token>' \
-d '{
"pagination": {
"offset": 0,
"limit": 10,
"asc": false
},
"filters": [
]
}'
curl -X POST -L 'https://$CUSTOM-DOMAIN/v2/users/329304651826463004/metadata/search' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <token>' \
-d '{
"pagination": {
"offset": 0,
"limit": 10,
"asc": false
},
"filters": [
]
}'
I get the following error
{"code":5, "message":"Not Found"}
{"code":5, "message":"Not Found"}
I must be missing something small... Do you see anything? Again, I'm on a self-hosted v2.71.11
Rajat
Rajat2mo ago
hey @nullsense good morning 🙂 yes the V2 search metadata is not working please go ahead and use V1 Search User Metadata for now.
Rajat
Rajat2mo ago
No description
nullsense
nullsenseOP2mo ago
Thanks @Rajat ! Is this a bug we might see resolved?
Rajat
Rajat2mo ago
yes it will be resolved, we are transtioning a LOT of apis from v1->v2 and the process is still going on. For now, this endpoint should work for you 🙂 hey @nullsense the issue to this error of not found was very simple actually, I only got the response from my engineers just now. can you try it with all files in a clean directory and with fresh data?
docker compose down -v
mkdir /tmp/clean
cd /tmp/clean
docker compose down -v
mkdir /tmp/clean
cd /tmp/clean
and then try running all the wget/docker commands form here https://zitadel.com/docs/self-hosting/deploy/compose docker thinks it should mount not yet existing directories (not files) and it creates the directories. This breaks future attempts of docker compose up. That is why you kept on getting this error

Did you find this page helpful?