Upload assets
Step 2 of 3 in Manage design assets.
Every upload sends raw bytes with the real content type in the Content-Type header, not a JSON
envelope. The response carries a content-addressed uri and an integrity hash; those two values go
into a render variant's logo or background slot, or into issuer design branding.
Tenant-scoped, design-agnostic asset (the assetType path segment is informational):
Asset for one credential design, locale and slot (LOGO, BACKGROUND_IMAGE, SVG_TEMPLATE,
PDF_TEMPLATE; locale is a BCP-47 tag such as en or nl):
The per-design route (/designs/credentials/{designId}/assets/{locale}/{assetType}) stores the bytes
the same way, by content hash, and also records the asset as the current one for that design, locale
and slot. The returned uri is the same content-addressed URL; attach it and its integrity to the
design or variant yourself.
The asset library upload is for tenant branding (namespace brand), for example the logos the
tenant brand uses in Align the tenant brand.
Do not use it for render variants or issuer designs.
Uploading the same bytes again returns the same uri and integrity. That is deduplication, not an
error. Prefer formats wallets render well at small sizes; nothing downsamples a large image for the
holder.
Next
Continue with step 3, Serve and remove assets.