Resolve Portal Request
Resolves one portal or S3 request to a serve/deny decision in a single call, returning the bucket's portal config, canonical URL and cache version alongside the result (upload, folder listing, alias-access-required or denied). Without verified_access_key_id the path resolves exactly as the public GetPublicUpload does (visibility, alias passwords, virtual files). With it, the api reloads the key, requires it to be live, enabled and covering the bucket, then serves the upload even when private; integration-hidden uploads and virtual-file folders stay not-found, and keyed folder paths currently return not-found. Unknown buckets, missing paths and access failures come back as the denied result, not as Connect errors.
Access: internal only — the portal worker, authenticated by the shared X-Upl-Internal-Token header matching S3_CREDENTIALS_INTERNAL_TOKEN (FailedPrecondition when unset, Unauthenticated on mismatch). No user authentication.
JWT access token obtained via OAuth2 flow or service account
In: header
Header Parameters
Define the version of the Connect protocol
Define the timeout, in ms
Request Body
application/json
Full path including slug (e.g. "/photos/image.jpg", "/" for root listing).
1 <= length <= 512length <= 4096Set when the worker has verified a SigV4 signature (header or presigned query) for this access key on the current request. The api loads the key, checks it is live + enabled, and applies its grants — private content is served when the key covers the bucket at READ or above.
length <= 128Response Body
application/json
application/json
curl -X POST "https://uploads-api.xeonr.io/uplim.api.v1.InternalPortalService/ResolvePortalRequest" \ -H "Connect-Protocol-Version: 1" \ -H "Connect-Timeout-Ms: 1000" \ -H "Content-Type: application/json" \ -d '{}'{
"portalConfig": {
"cdnMode": true
},
"cacheVersion": "string",
"canonicalUrl": "string",
"aliasAccessRequired": {
"sizeBytes": "string",
"requirement": "ALIAS_ACCESS_REQUIREMENT_UNSPECIFIED",
"thumbnailContentTypeUrn": "string"
}
}{
"code": "not_found",
"message": "string",
"details": [
{
"type": "string",
"value": "string",
"debug": {}
}
]
}