Webshop Config Service - Admin API
Admin endpoints for managing webshop configuration, themes, and publishing.
Download OpenAPI specification:
Get webshop details
Returns the webshop record for a project, enriched with draft config for the specified environment. Returns 404 if the environment is not activated.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X GET \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Create a new webshop
Reserves a slug and creates a webshop record. The environment from the path is activated as the primary environment. If appStoreUrl or playStoreUrl is provided, store scraping and theme generation are triggered automatically. Organization ID is read from the Unity-Organization gateway header.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "slug": "string", "publisherSlug": "string", "name": "string", "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Update webshop metadata and config
Updates the webshop. Only provided fields change; theme, deepLink, and frontendVersion target the draft for this environment. Renaming the slug while the primary environment is published republishes the webshop at the new URL. To rename the organization's publisher slug, use .
PATCH /organizations/{organizationId}/publisherAuthorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Request body for "{title}"
Media Type:
application/jsonApple App Store URL for the game. Omit to leave it unchanged, send (empty string) to clear it, or send a URL to set it. Clearing additionally wipes any screenshots and scrape metadata derived from this URL across every environment of the webshop. User-uploaded screenshots are preserved.
""Google Play Store URL for the game. Omit to leave it unchanged, send (empty string) to clear it, or send a URL to set it. Clearing additionally wipes any playStore-sourced screenshots across every environment of the webshop, plus the scrape metadata when no App Store URL remains. User-uploaded screenshots are preserved.
""Code samples for "{title}":
Request example
curl -X PATCH \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "slug": "string", "name": "string", "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "theme": { "colors": { "background": "string", "foreground": "string", "card": "string", "cardText": "string", "mutedText": "string", "primary": "string", "primaryText": "string", "border": "string", "bonusBadge": "string", "bonusBadgeText": "string", "saleBadge": "string", "saleBadgeText": "string", "salePrice": "string", "limitedBadge": "string", "limitedBadgeText": "string", "categoryActive": "string", "categoryActiveText": "string", "categoryInactiveText": "string" }, "typography": { "fontFamily": "string", "fontFamilyHeading": "string", "googleFontsUrl": null }, "radius": "string", "motion": { "intensity": "playful", "reducedMotion": false }, "zones": { "page": { "backgroundImage": "string", "backdropFilter": "string" }, "header": { "glow": "string", "backgroundGradient": "string", "borderGlow": "string" }, "heroBanner": { "overlay": "string" }, "productCard": { "shape": "rounded", "layout": "detailed", "borderStyle": "solid", "glow": "string", "flashStyle": "pulse", "image": { "background": "string", "display": "contain", "ratio": "1:1", "padding": "string", "backdrop": "off" } }, "particles": { "effect": "none", "zone": "fullPage" } } }, "deepLink": {}, "authConfig": {}, "frontendVersion": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Delete webshop
Permanently deletes the webshop, all its environments, and associated assets. Published content is taken offline.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X DELETE \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop"
Response example
{ "type": "string", "title": "string", "status": 0, "detail": "string", "instance": "string", "code": "slug_taken"}
Publish webshop configuration
Only the primary environment can be published. Non-primary environments are draft-only workspaces accessed via /_preview and return 409 if a publish is attempted. For the primary env, this snapshots the current draft config into webshop_publications and regenerates the pre-rendered HTML shell served at the public URL. The storefront HTML propagates asynchronously — typically within seconds of the 200 response. A draft config is not required: publishing without one (e.g. before any theme generation) takes the shop live on the predefined default layout. Snapshot semantics: the snapshot is taken as-of the click, not as-of the commit. A PATCH /webshop that commits between this request arriving and the publish completing will NOT be included in this publication and requires a follow-up publish to surface. Concurrent publish / unpublish on the same webshop are serialized so the final state is deterministic.
A successful publish may carry a array on the response: non-fatal advisories about the published shop, each prefixed with a stable code. Currently is emitted when the environment has no payment-provider routing configured, in which case players see external payment as unavailable until routing is set up.
warningspayment-routing-not-configuredAuthorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/publish"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Promote a non-primary env's draft state into the primary env
Copies the source environment's draft state — draft_config (theme, deepLink, frontendVersion), screenshot_urls, branding_urls, scrape_data, and generation_* fields — into the webshop's primary environment's draft_config. The source environment is the env in the URL path; the target is always the webshop's primary environment. Does not publish.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/promote"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Unpublish webshop configuration
Only the primary environment can be unpublished. Non-primary envs have no publication to reverse and return 409 if attempted. For the primary env, deletes the webshop_publications row and removes the pre-rendered GCS HTML shell. Idempotent — no error if already in draft.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/unpublish"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Check if a (publisher, webshop) slug pair is available for this org
Pre-flight availability check for the dashboard slug editor. HEAD request — answer is fully carried by HTTP status: 200 available, 409 taken, 400 bad format, 500 error. Scoped by organization since publishers are globally-unique but claimed by exactly one org.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X HEAD \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/organizations/{organizationId}/webshop/slug-availability"
Response example
{ "type": "string", "title": "string", "status": 0, "detail": "string", "instance": "string", "code": "slug_taken"}
Fetch app store metadata and screenshots
Scrapes every store URL configured on this webshop (Apple App Store and/or Google Play). Returns game metadata (name, genre, description) and screenshot URLs merged from all configured stores; when both are configured, Apple metadata takes precedence. Replaces any previously scraped data; user-uploaded screenshots are preserved. When one store fails but another succeeds, the successful store's results are returned.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/scrape"
Response example
{ "gameName": "string", "gameDescription": "string", "genre": "string", "developer": "string", "iconUrl": "string", "screenshotUrls": [ { "url": "string", "source": "appStore" } ]}
Upload screenshots for theme generation
Uploads screenshot images to Live Content. CDN URLs are appended to the webshop's screenshotUrls.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: multipart/form-data" \ -d '{"screenshots":["string"]}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/screenshots"
Response example
{ "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "rejected": [ { "fileName": "string", "reason": "tooLarge" } ]}
Delete uploaded screenshots
Removes user-uploaded screenshot files from Live Content and their references from the database. Scraped App Store screenshots are preserved.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X DELETE \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/screenshots"
Response example
{ "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "rejected": [ { "fileName": "string", "reason": "tooLarge" } ]}
Upload hero banner image
Uploads a hero banner image for the webshop. The image is resized to 1920x384 pixels (5:1) and converted to WebP format. Replaces any existing hero banner.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: multipart/form-data" \ -d '{"banner":"string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/hero-banner"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Delete hero banner
Clears the hero banner image and returns the updated webshop.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X DELETE \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/hero-banner"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Upload backdrop image
Uploads the full-page background rendered behind the storefront. The image is re-encoded to WebP (downscaled when very large) and replaces any existing page backdrop.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: multipart/form-data" \ -d '{"backdrop":"string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/backdrop"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Delete backdrop
Clears the page backdrop and its focal point, and returns the updated webshop.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X DELETE \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/backdrop"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Set backdrop focal point
Sets the page backdrop's focal point — the point of the image the player keeps in view as the cover-fit crop changes with viewport size. Requires a page backdrop to be set. Send x=50, y=50 to return to centered.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X PUT \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "x": 0, "y": 0}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/backdrop/position"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Upload thumbnail image
Uploads a thumbnail image for the webshop. The image is resized to 1200x1200 pixels (square) and converted to WebP format. Replaces any existing thumbnail.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: multipart/form-data" \ -d '{"thumbnail":"string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/thumbnail"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Delete thumbnail
Removes the thumbnail image from GCS and clears thumbnail from the draft config.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X DELETE \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/thumbnail"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Remove the webshop icon
Removes the icon derived from the app-store listing — the logo, logo thumbnail, favicon, and apple-touch-icon — from the webshop branding. The app-store icon reference is also cleared so regenerating the theme does not bring the icon back; other scraped metadata and screenshots are kept, so a fresh theme can still be generated without an icon.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X DELETE \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/icon"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Trigger AI theme generation
Starts async theme generation from scraped assets and screenshots. Poll GET /webshop to check generation.status for completion.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "feedback": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/generate-theme"
Response example
{ "generationStatus": "pending", "themeBudget": { "daily": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" }, "weekly": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" } }}
Reset theme and generation state
Clears the theme from draft config and resets generation status, allowing regeneration. and are preserved in every scope.
deepLinkfrontendVersionAuthorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Query parameters for "{title}"
What to clear. (default) clears the theme only — branding, screenshots, and scrape data are preserved for reuse on the next generation. additionally clears uploaded branding, screenshots, and scraped App Store metadata so the next generation starts from a clean slate.
stylesallCode samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/reset-theme"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Cancel an in-flight theme generation
Signals the background theme-generation job for this environment to stop. The webshop's flips to asynchronously once the queue confirms cancellation; the response body reflects the env state at the moment the cancel was accepted.
generation.statuscancelledAuthorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/cancel-theme-generation"
Response example
{ "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "appStoreUrl": "https://example.com", "playStoreUrl": "https://example.com", "screenshotUrls": [ { "url": "string", "source": "appStore" } ], "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": "https://example.com", "width": 0 } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" }, "livePublication": { "publisherSlug": "string", "slug": "string", "publishedAt": "2024-01-01T00:00:00Z", "brandingUrls": { "logoUrl": "https://example.com", "logoThumbUrl": "https://example.com", "faviconUrl": "https://example.com", "appleTouchIconUrl": "https://example.com", "heroBanner": { "url": "https://example.com", "enabled": true, "effects": { "glow": "string", "borderStyle": "none", "borderColor": "string", "borderWidth": "string" }, "sources": [ { "url": null, "width": null } ] }, "pageBackdrop": "https://example.com", "pageBackdropFocus": { "x": 0, "y": 0 }, "thumbnailUrl": "https://example.com" } }, "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ], "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z", "theme": {}, "deepLink": {}, "authConfig": {}, "frontendVersion": "string", "warnings": [ "string" ]}
Refine the draft theme from natural-language feedback
Starts an asynchronous agent turn that edits the draft theme to satisfy the supplied feedback. Poll GET /webshop/refine/turns/{turnId} for the resulting theme edit receipt.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "feedback": "string", "environmentName": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/refine"
Response example
{ "turnId": "string", "themeBudget": { "daily": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" }, "weekly": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" } }}
Get the status of a theme-refine turn
Returns the status of a refine turn and, once complete, the resulting theme edit receipt.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X GET \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/refine/turns/{turnId}"
Response example
{ "turnId": "string", "status": "pending", "receipt": { "theme": { "colors": { "background": "string", "foreground": "string", "card": "string", "cardText": "string", "mutedText": "string", "primary": "string", "primaryText": "string", "border": "string", "bonusBadge": "string", "bonusBadgeText": "string", "saleBadge": "string", "saleBadgeText": "string", "salePrice": "string", "limitedBadge": "string", "limitedBadgeText": "string", "categoryActive": "string", "categoryActiveText": "string", "categoryInactiveText": "string" }, "typography": { "fontFamily": "string", "fontFamilyHeading": "string", "googleFontsUrl": null }, "radius": "string", "motion": { "intensity": "playful", "reducedMotion": false }, "zones": { "page": { "backgroundImage": "string", "backdropFilter": "string" }, "header": { "glow": "string", "backgroundGradient": "string", "borderGlow": "string" }, "heroBanner": { "overlay": "string" }, "productCard": { "shape": "rounded", "layout": "detailed", "borderStyle": "solid", "glow": "string", "flashStyle": "pulse", "image": { "background": null, "display": null, "ratio": null, "padding": null, "backdrop": null } }, "particles": { "effect": "none", "zone": "fullPage" } } }, "snapshotId": "string", "previewUrl": "string", "changes": [ { "path": "string", "section": "string", "kind": "color", "before": "string", "after": "string" } ] }, "error": "string", "themeBudget": { "daily": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" }, "weekly": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" } }}
Get the active theme-chat session and recent messages
Returns the active conversation along with its most recent messages.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X GET \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/theme-chat/session"
Response example
{ "session": { "id": "string", "status": "active", "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "themeBudget": { "daily": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" }, "weekly": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" } } }, "messages": [ { "id": "string", "seq": 0, "role": "user", "kind": "message", "content": {}, "status": "final", "createdAt": "2024-01-01T00:00:00Z" } ]}
Open or resume the theme-chat session
Returns the environment's active theme-chat conversation, starting a new one if none is open.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/theme-chat/session"
Response example
{ "id": "string", "status": "active", "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "themeBudget": { "daily": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" }, "weekly": { "limitCents": 0, "usedCents": 0, "resetsAt": "2024-01-01T00:00:00Z" } }}
Send a message to the theme-chat session
Sends a natural-language message and starts processing the resulting turn, returning ids to track it.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "text": "string", "environmentName": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/theme-chat/messages"
Response example
{ "messageId": "string", "turnId": "string"}
Cancel an in-progress theme-chat turn
Requests cancellation of a turn that is still being processed.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "turnId": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/theme-chat/cancel"
Response example
{ "type": "string", "title": "string", "status": 0, "detail": "string", "instance": "string", "code": "slug_taken"}
Submit thumbs-up/down feedback on a theme-chat turn
Records a human rating of a completed turn as a quality signal. The rating is stored for reporting and does not change the theme.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "value": "up"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/theme-chat/turns/{turnId}/feedback"
Response example
{ "type": "string", "title": "string", "status": 0, "detail": "string", "instance": "string", "code": "slug_taken"}
Approve or reject a proposed theme-chat plan
Resolves a plan the assistant proposed for a larger change. Approving starts a new turn that applies it.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "messageId": "string", "approved": true, "edits": { "intent": "string", "touchedFields": [ "string" ], "expectedOutcome": "string" }, "environmentName": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/theme-chat/approve-plan"
Response example
{ "turnId": "string"}
Archive the active theme-chat session
Ends the active conversation. The next message starts a fresh one.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/theme-chat/archive"
Response example
{ "type": "string", "title": "string", "status": 0, "detail": "string", "instance": "string", "code": "slug_taken"}
Restore a theme snapshot within the chat session
Reverts the draft theme to an earlier snapshot and records it in the conversation. Returns the resulting theme edit receipt.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "snapshotId": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/theme-chat/snapshots/restore"
Response example
{ "theme": { "colors": { "background": "string", "foreground": "string", "card": "string", "cardText": "string", "mutedText": "string", "primary": "string", "primaryText": "string", "border": "string", "bonusBadge": "string", "bonusBadgeText": "string", "saleBadge": "string", "saleBadgeText": "string", "salePrice": "string", "limitedBadge": "string", "limitedBadgeText": "string", "categoryActive": "string", "categoryActiveText": "string", "categoryInactiveText": "string" }, "typography": { "fontFamily": "string", "fontFamilyHeading": "string", "googleFontsUrl": null }, "radius": "string", "motion": { "intensity": "playful", "reducedMotion": false }, "zones": { "page": { "backgroundImage": "string", "backdropFilter": "string" }, "header": { "glow": "string", "backgroundGradient": "string", "borderGlow": "string" }, "heroBanner": { "overlay": "string" }, "productCard": { "shape": "rounded", "layout": "detailed", "borderStyle": "solid", "glow": "string", "flashStyle": "pulse", "image": { "background": "string", "display": "contain", "ratio": "1:1", "padding": "string", "backdrop": "off" } }, "particles": { "effect": "none", "zone": "fullPage" } } }, "snapshotId": "string", "previewUrl": "string", "changes": [ { "path": "string", "section": "string", "kind": "color", "before": "string", "after": "string" } ]}
Generate a preview URL with HMAC token
Generates an HMAC-signed preview token that unlocks draft config access. Token is valid for 72 hours. Requires admin auth.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "environmentName": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/preview-token"
Response example
{ "url": "string", "expiresAt": "2024-01-01T00:00:00Z"}
Read payment-provider routing config for this environment
Returns the current payment-provider routing configuration for this
environment, or an empty default if none has been set.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X GET \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/payment-provider/configuration"
Response example
{ "providerRouting": {}, "fallbackProvider": "string"}
Replace payment-provider routing config for this environment
Overwrites the payment-provider routing configuration for this
environment. Partial updates are not supported; the full
configuration in the request body replaces any existing one.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X PUT \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "providerRouting": {}, "fallbackProvider": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/payment-provider/configuration"
Response example
{ "providerRouting": {}, "fallbackProvider": "string"}
Reset payment-provider routing config for this environment
Removes the payment-provider routing configuration for this
environment. Idempotent — returns 204 whether or not a configuration
existed.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X DELETE \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/payment-provider/configuration"
Response example
{ "type": "string", "title": "string", "status": 0, "detail": "string", "instance": "string", "code": "slug_taken"}
Deactivate an environment for the webshop
Deactivates a non-primary environment. If the environment was published, its published content is taken offline. Cannot deactivate the primary environment — returns 400. Path convention: every environment-scoped operation lives under the prefix (this delete included). The create/list collection is the one deliberate exception, since it has no environment in the path.
…/environments/{environmentId}/webshop/……/webshop/environmentsAuthorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X DELETE \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/environments/{environmentId}/webshop/environment"
Response example
{ "type": "string", "title": "string", "status": 0, "detail": "string", "instance": "string", "code": "slug_taken"}
List active environments
Returns all activated environments and their statuses for the project's webshop.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X GET \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/webshop/environments"
Response example
{ "environments": [ { "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z" } ]}
Activate a new environment
Adds a new environment to the webshop (max 25 per webshop). Starts with status=draft.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X POST \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "environmentId": "string"}' \ "https://services.unity.com/api/webshop/v1/projects/{projectId}/webshop/environments"
Response example
{ "environmentId": "string", "status": "draft", "isPrimary": true, "publishedAt": "2024-01-01T00:00:00Z"}
List webshops for an organization
Returns webshops under publishers claimed by this organization. Supports cursor-based pagination and optional status/projectId filters.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X GET \ -H "Authorization: Bearer <YOUR_TOKEN>" \ "https://services.unity.com/api/webshop/v1/organizations/{organizationId}/webshops"
Response example
{ "webshops": [ { "id": "string", "slug": "string", "publisherSlug": "string", "projectId": "string", "environmentId": "string", "name": "string", "status": "draft", "publishedAt": "2024-01-01T00:00:00Z", "generation": { "status": "none", "error": "string", "feedback": "string", "startedAt": "2024-01-01T00:00:00Z" }, "logoUrl": "string", "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z", "draftUpdatedAt": "2024-01-01T00:00:00Z" } ], "next": "string"}
Rename an organization's publisher
Renames the publisher slug for the organization. Every published webshop owned by the publisher is republished at the new path; the response carries per-webshop relocation status so callers can retry any that didn't fully relocate.
Authorizations
User
HTTP: User
HTTP Authorization Scheme: bearer
Code samples for "{title}":
Request example
curl -X PATCH \ -H "Authorization: Bearer <YOUR_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "from": "string", "to": "string"}' \ "https://services.unity.com/api/webshop/v1/organizations/{organizationId}/publisher"
Response example
{ "publisherSlug": "string", "relocations": [ { "webshopId": "string", "slug": "string", "status": "relocated", "error": "string" } ]}
List available frontend bundle versions
Returns the frontend bundle versions available for pinning on a webshop. The sentinel is always included as the first entry and resolves to the most recently deployed bundle. Authenticated but not authorization-scoped — the response is global and identical for every dashboard caller, so per-resource permissioning would be noise.
latestAuthorizations
User
HTTP: User
HTTP Authorization Scheme: bearer