---
title: "Store the working order and flags. One transaction, all or nothing."
method: PUT
path: "/api/v1/marketing-showcase/admin/config"
tags: ["Marketing"]
---

# Store the working order and flags. One transaction, all or nothing.

`PUT /api/v1/marketing-showcase/admin/config`

## Request

- Base URL: `https://api.avatarfactory.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.avatarfactory.io/api/v1/marketing-showcase/admin/config`
- Auth: one of:
  - API key in cookie `session`
  - HTTP bearer

<br/>400 is a slug that is not in the roster. 422 is a payload that broke<br/>a bound in SaveConfigRequest (an over-long note, more than 500<br/>entries): flask-openapi3 rejects those at the boundary, before this<br/>handler runs. 503 is an empty roster, which means the YAML folder is<br/>missing from the deployment and nothing was written.

## Request body

- SaveConfigRequest: The admin page's full working state. `order` is the rail order the admin sees; `hidden` and `regen` carry the flags. Anything absent from `regen` is treated as unflagged, so a save is a complete replacement of the state for every slug it mentions rather than a partial patch. A slug the `hidden` map never mentions keeps a null override, so its YAML `hideFromRail` stands. Every collection is capped and the note is length-limited. A payload that breaks a bound never reaches the service: flask-openapi3 rejects it at the boundary with a 422, which the route documents.
  - `hidden` object
  - `order` string[]
  - `regen` object

## Response `200`

OK

- SaveConfigResponse
  - `ok` boolean, required
  - `saved` integer, required

## Other responses

- `400`: Bad Request
- `422`: Unprocessable Entity
- `503`: Service Unavailable

---

[API](https://skmtc.dev/avatarfactory/apis/avatarfactory-api.md) · [All operations](https://skmtc.dev/avatarfactory/apis/avatarfactory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/avatarfactory/apis/avatarfactory-api/revisions/66fc7aa3f296?raw)
