Xeonr Developer Docs

Resolve Portal Request

POST
/uplim.api.v1.InternalPortalService/ResolvePortalRequest

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.

AuthorizationBearer <token>

JWT access token obtained via OAuth2 flow or service account

In: header

Header Parameters

Connect-Protocol-Version?number

Define the version of the Connect protocol

Connect-Timeout-Ms?number

Define the timeout, in ms

Request Body

application/json

bucketRef?&
path?string

Full path including slug (e.g. "/photos/image.jpg", "/" for root listing).

Length1 <= length <= 512
aliasPassword?string|null
Lengthlength <= 4096
verifiedAccessKeyId?string|null

Set 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.

Lengthlength <= 128
[key: string]?never

Response 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": {}
    }
  ]
}