Upload
upload.presignAvatar
Tenant-scoped tRPC mutation upload.presignAvatar. Requires a verified session cookie or an OAuth Bearer token; OAuth callers additionally need the simrs:write scope. Mutations are RBAC-gated server-side (requireRoles) — a broad scope never widens the user's roles.
AuthorizationBearer <token>
OAuth 2.0 / OIDC issued by the API itself (better-auth oidcProvider). Dynamic client registration per RFC 7591 at /api/auth/oauth2/register.
In: header
Scope: simrs:write
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
contentType*string
Value in
- "image/jpeg"
- "image/png"
- "image/webp"
size*integer
Range
0 < value <= 5242880Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/trpc/upload.presignAvatar" \ -H "Content-Type: application/json" \ -d '{ "contentType": "image/jpeg", "size": 1 }'{ "result": { "data": null }}{ "error": { "message": "string", "code": 0, "data": { "code": "string", "httpStatus": 0, "path": "string" } }}{ "error": { "message": "string", "code": 0, "data": { "code": "string", "httpStatus": 0, "path": "string" } }}{ "error": { "message": "string", "code": 0, "data": { "code": "string", "httpStatus": 0, "path": "string" } }}{ "error": { "message": "string", "code": 0, "data": { "code": "string", "httpStatus": 0, "path": "string" } }}Is this page helpful?