{openapi: 3.0.3,info: {title: Umakers Hammercore Client API,description: "Serves per-client configuration files (colors, designs, buttons, styles, static assets) to SvelteKit and Umbraco.",version: 1.0.0},servers: [{url: http://localhost:3999,description: Local development}],security: [{bearerAuth: []}],components: {securitySchemes: {bearerAuth: {type: http,scheme: bearer}},schemas: {ColorItem: {type: object,required: [name,value,description],properties: {name: {type: string,description: Display name shown in Umbraco color picker,example: Standard},value: {type: string,description: CSS class name applied to the element,example: def-color},description: {type: string,description: Editor-facing description,example: Hvid baggrund med blå accenter}}},ColorsResponse: {type: object,required: [items],properties: {$schema: {type: string},items: {type: array,items: {$ref: "#/components/schemas/ColorItem"}}}},DesignItem: {type: object,required: [name,value,description],properties: {name: {type: string,example: Standard},value: {type: string,description: CSS class applied to the block,example: design-default},description: {type: string,example: Standard hero layout},default: {type: boolean,description: Pre-selected option in Umbraco,example: true}}},DesignGroup: {type: object,required: [name,data],properties: {name: {type: string,description: Content type alias,example: sectionElementHero},data: {type: array,items: {$ref: "#/components/schemas/DesignItem"}}}},DesignsResponse: {type: object,required: [items],properties: {$schema: {type: string},items: {type: array,items: {$ref: "#/components/schemas/DesignGroup"}}}},HealthResponse: {type: object,properties: {ok: {type: boolean,example: true}}}}},paths: {/: {get: {summary: Root,description: Basic liveness check. No auth required.,security: [],responses: {"200": {description: Service is running,content: {text/plain: {schema: {type: string,example: Umakers}}}},"405": {description: Method not allowed}}}},/health: {get: {summary: Health check,description: Structured liveness check. No auth required.,security: [],responses: {"200": {description: Service is healthy,content: {application/json: {schema: {$ref: "#/components/schemas/HealthResponse"}}}},"405": {description: Method not allowed}}}},/clients.json: {get: {summary: List clients,description: "Returns a sorted list of all available client names (all folders under `config/` except `template`).",responses: {"200": {description: List of client names,content: {application/json: {schema: {type: array,items: {type: string},example: [dfa,croplife,faaborg-flyt]}}}},"401": {description: Unauthorized},"405": {description: Method not allowed}}}},"/{client}/colors.json": {get: {summary: Get color palettes,description: Returns the color palette options for the client. Used by Umbraco to populate color pickers and by SvelteKit to resolve color class names.,parameters: [{name: client,in: path,required: true,schema: {type: string,pattern: "^[a-z0-9-]+$"},example: dfa}],responses: {"200": {description: Color palette options,content: {application/json: {schema: {$ref: "#/components/schemas/ColorsResponse"},example: {items: [{name: Standard,value: def-color,description: Hvid baggrund med blå accenter},{name: Blå,value: theme-blue,description: Blå baggrund med hvid tekst}]}}}},"401": {description: Unauthorized},"404": {description: Client or file not found},"405": {description: Method not allowed}}}},"/{client}/designs.json": {get: {summary: Get design variants,description: Returns design variant options grouped by content type alias. Used by Umbraco design pickers.,parameters: [{name: client,in: path,required: true,schema: {type: string,pattern: "^[a-z0-9-]+$"},example: dfa}],responses: {"200": {description: Design variant options per content type,content: {application/json: {schema: {$ref: "#/components/schemas/DesignsResponse"},example: {items: [{name: sectionElementHero,data: [{name: Standard,value: design-default,description: Standard hero layout,default: true}]}]}}}},"401": {description: Unauthorized},"404": {description: Client or file not found},"405": {description: Method not allowed}}}},"/{client}/buttons.json": {get: {summary: Get button styles,description: Returns button style options. Uses the same schema as colors.json.,parameters: [{name: client,in: path,required: true,schema: {type: string,pattern: "^[a-z0-9-]+$"},example: dfa}],responses: {"200": {description: Button style options,content: {application/json: {schema: {$ref: "#/components/schemas/ColorsResponse"},example: {items: [{name: Primær farve,value: btn-1,description: Primær knap},{name: Sekundær farve,value: btn-2,description: Sekundær knap}]}}}},"401": {description: Unauthorized},"404": {description: Client or file not found},"405": {description: Method not allowed}}}},"/{client}/styles.css": {get: {summary: Get compiled CSS,description: "Returns the compiled CSS for the client — all PostCSS files merged and built. Injected by SvelteKit as the client stylesheet. Run `bun run styles` if this returns 404.",parameters: [{name: client,in: path,required: true,schema: {type: string,pattern: "^[a-z0-9-]+$"},example: dfa}],responses: {"200": {description: Compiled CSS,content: {text/css: {schema: {type: string}}}},"401": {description: Unauthorized},"404": {description: "CSS not compiled — run `bun run styles`"},"405": {description: Method not allowed}}}},"/{client}/static/{path}": {get: {summary: Get static asset,description: "Serves arbitrary static files from `config/:client/static/`. Used for fonts, SVGs, favicons, manifests, robots.txt etc.",parameters: [{name: client,in: path,required: true,schema: {type: string,pattern: "^[a-z0-9-]+$"},example: dfa},{name: path,in: path,required: true,schema: {type: string},example: fonts/myfont.woff2}],responses: {"200": {description: Static file contents},"401": {description: Unauthorized},"404": {description: File not found under config/:client/static/},"405": {description: Method not allowed}}}}}}