Skip to content

Update expansion

PATCH
/api/v1/games/{gameId}/expansions/{expansionId}

Changes an expansion of a game. Requires the stx-engine:expansion-update role, which only the game catalog service has: it updates an expansion when a published candidate is approved again with new values.

gameId
required
string format: uuid

Public game identifier

expansionId
required
string format: uuid

Public expansion identifier

Idempotency-Key
required
string

Client-generated UUIDv7, required on every mutating request (POST, PUT, PATCH, DELETE), that makes the request safe to retry. A repeated request with the same key and the same payload returns the stored response (marked with the Idempotent-Replayed: true header) instead of executing again; the same key with a different payload is refused with 422. Keys older than the retention window (30 days) are rejected. A key that is not a UUID is refused with 400.

If-Match
required
string

ETag of the resource being modified, for optimistic concurrency control: the request is refused with 412 when the resource changed since. Obtain it from the ETag response header of a previous GET or mutation.

Every field is optional; an absent field keeps its value. Only the fields that can be empty (description, imageUrl) accept null, which clears them.

object
displayName

Name of a game or expansion (game.display_name, candidate.display_name)

string
>= 1 characters <= 255 characters
description
Any of:

Free text

string
<= 10000 characters
imageUrl
Any of:

At most 500 characters (the column it is stored in); a longer URL is refused with 400. Not declared as maxLength: the services read a uri as a URI type, which length validation does not apply to, so they check the length themselves.

string format: uri

Expansion retrieved or changed successfully

object
id
required
string format: uuid
game
required
object
id
required
string format: uuid
displayName
required
string
displayName
required

Name of a game or expansion (game.display_name, candidate.display_name)

string
>= 1 characters <= 255 characters
description

Free text

string
<= 10000 characters
imageUrl

At most 500 characters (the column it is stored in); a longer URL is refused with 400. Not declared as maxLength: the services read a uri as a URI type, which length validation does not apply to, so they check the length themselves.

string format: uri
sourceRef

Where a game or expansion came from, as <source>:<id>, e.g. bgg:199792. Unique per game and per expansion: creating a second one with the same source is refused with 409.

string
<= 64 characters /^[a-z]+:[0-9]+$/
createdAt
required

Date-time (ISO 8601)

string format: date-time
updatedAt

Date-time (ISO 8601)

string format: date-time
ETag
string

Current version of the resource; send it as If-Match to change or delete it

Idempotent-Replayed
string
Allowed values: true

Present (true) when the response was replayed from an earlier request with the same Idempotency-Key, instead of being executed again

Request validation failed

object
type
required

Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
errors
Array<object>
object
field
required

Field or property that failed validation

string
code
required

Machine-readable validation error code, e.g. REQUIRED, VALUE_TOO_LONG, INVALID_FORMAT, OUT_OF_RANGE. Canonical list is maintained per resource in the documentation.

string
message
required

Human readable validation message

string
rejectedValue

The actual value that failed validation. Omitted if the value is sensitive.

Examples
{
"type": "https://errors.stratastax.dev/validation",
"title": "Bad Request",
"status": 400,
"detail": "Received invalid request data",
"errors": [
{
"field": "displayName",
"code": "REQUIRED",
"message": "missing required field"
}
]
}

Authentication required or token invalid

object
type
required

Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
Examples
{
"type": "https://errors.stratastax.dev/authentication",
"title": "Unauthorized",
"status": 401,
"detail": "Authentication required"
}

Insufficient permissions

object
type
required

Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
Examples
{
"type": "https://errors.stratastax.dev/authorization",
"title": "Access denied",
"status": 403,
"detail": "Insufficient permissions"
}

Resource not found

object
type
required

Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
Examples
{
"type": "https://errors.stratastax.dev/not-found",
"title": "Resource not found",
"status": 404,
"detail": "The requested resource could not be found"
}

The requested mutation is not allowed in the resource’s current state, or it conflicts with existing data (a unique value that is already taken)

object
type
required

Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
Examples
{
"type": "https://errors.stratastax.dev/conflict",
"title": "Already exists",
"status": 409,
"detail": "A game with source bgg:199792 already exists."
}

The If-Match header did not match the current resource’s ETag

object
type
required

Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
Examples
{
"type": "https://errors.stratastax.dev/precondition-failed",
"title": "Resource has changed",
"status": 412,
"detail": "The resource was modified since you last fetched it. Reload and try again."
}

The Idempotency-Key was already used for a request with a different payload

object
type
required

Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
errors
Array<object>
object
field
required

Field or property that failed validation

string
code
required

Machine-readable validation error code, e.g. REQUIRED, VALUE_TOO_LONG, INVALID_FORMAT, OUT_OF_RANGE. Canonical list is maintained per resource in the documentation.

string
message
required

Human readable validation message

string
rejectedValue

The actual value that failed validation. Omitted if the value is sensitive.

Examples
{
"type": "https://errors.stratastax.dev/validation",
"title": "Unprocessable Content",
"status": 422,
"detail": "Idempotency key reused for a different request",
"errors": [
{
"field": "Idempotency-Key",
"code": "IDEMPOTENCY_KEY_REUSED",
"message": "0192f100-0000-7000-8000-0000000000a5 was already used for a different request"
}
]
}

Unexpected server error

object
type
required

Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
Examples
{
"type": "https://errors.stratastax.dev/internal",
"title": "Oops! Something went wrong.",
"status": 500,
"detail": "Try again later."
}