> ## Documentation Index
> Fetch the complete documentation index at: https://docs.summerengine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Patch game revision

> PATCH /v1/management/games/{gameId}/revisions/{revisionId}



## OpenAPI

````yaml scripts/reference/sources/openapi/management.json PATCH /v1/management/games/{gameId}/revisions/{revisionId}
openapi: 3.1.0
info:
  title: Summer Creator Management API
  version: summer.management.creator/v1
  description: >-
    Create and manage your Summer Games store games: store page drafts,
    revisions, preview links, media, builds and releases, and the owner approval
    that publishes them.
servers:
  - url: https://api.summer.games
security:
  - developerBearer: []
tags:
  - name: Games
  - name: Items
  - name: Media
paths:
  /v1/management/games/{gameId}/revisions/{revisionId}:
    parameters:
      - $ref: '#/components/parameters/GameID'
      - $ref: '#/components/parameters/RevisionID'
    patch:
      tags:
        - Games
      operationId: patchGameRevision
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
        - $ref: '#/components/parameters/IfMatch'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchGameRevisionRequest'
      responses:
        '200':
          $ref: '#/components/responses/Resource'
        '412':
          $ref: '#/components/responses/PreconditionFailed'
        '422':
          $ref: '#/components/responses/ValidationFailed'
components:
  parameters:
    GameID:
      name: gameId
      in: path
      required: true
      schema:
        type: string
        pattern: ^game_[A-Za-z0-9_-]{8,123}$
    RevisionID:
      name: revisionId
      in: path
      required: true
      schema:
        type: string
        pattern: ^(grev|irev)_[A-Za-z0-9_-]{8,123}$
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 128
    IfMatch:
      name: If-Match
      in: header
      required: true
      schema:
        type: string
        minLength: 3
        maxLength: 160
  schemas:
    PatchGameRevisionRequest:
      type: object
      additionalProperties: false
      minProperties: 1
      properties:
        minimumAge:
          type:
            - integer
            - 'null'
          enum:
            - 3
            - 7
            - 12
            - 16
            - 18
            - null
          description: >-
            Optional declared minimum age; not an official rating or access
            rule. Omission preserves the value on PATCH; null resets it to All
            ages. Published metadata changes only after revision publication.
        featuredItemIds:
          type: array
          maxItems: 6
          uniqueItems: true
          items:
            type: string
            pattern: ^item_[A-Za-z0-9_-]+$
          description: >-
            Ordered currently published Items of this Game. Empty clears
            selection; prices remain live.
        languages:
          $ref: '#/components/schemas/GameLanguages'
        subtitle:
          type: string
          maxLength: 160
          description: Optional single-line subtitle; empty clears it.
        supportedPlatforms:
          $ref: '#/components/schemas/SupportedPlatforms'
        name:
          type: string
          minLength: 1
          maxLength: 120
        description:
          type: string
          minLength: 1
          maxLength: 5000
        tags:
          type: array
          maxItems: 20
          uniqueItems: true
          items:
            type: string
        mediaAssetIds:
          type: array
          maxItems: 20
          uniqueItems: true
          items:
            type: string
        iconAssetId:
          type: string
          pattern: ^(|asset_[0-9A-Za-z]{26})$
          description: >-
            Verified image in mediaAssetIds used as the Game icon. Empty string
            clears it; omission preserves the selection.
        release:
          oneOf:
            - $ref: '#/components/schemas/GameRelease'
            - type: 'null'
          description: >-
            Declared release. Omission preserves it; null clears it, so the Game
            is out once published. A published Coming Soon Game is listed but
            cannot be bought, played or downloaded until a revision that
            releases it is published.
        systemRequirements:
          oneOf:
            - $ref: '#/components/schemas/SystemRequirements'
            - type: 'null'
          description: >-
            Omission preserves; null clears. Published with the reviewed
            revision.
        aiDisclosure:
          oneOf:
            - $ref: '#/components/schemas/AIDisclosure'
            - type: 'null'
          description: >-
            Omission preserves; null clears. Published with the reviewed
            revision.
        contentSurvey:
          oneOf:
            - $ref: '#/components/schemas/ContentSurvey'
            - type: 'null'
          description: >-
            Omission preserves; null clears. Published with the reviewed
            revision.
        mediaSlots:
          oneOf:
            - $ref: '#/components/schemas/MediaSlots'
            - type: 'null'
          description: >-
            Omission preserves; null clears; a value replaces every slot. Each
            referenced asset must be in this revision's mediaAssetIds (send both
            together when they change). Published with the reviewed revision.
        longDescription:
          type:
            - string
            - 'null'
          maxLength: 12000
          description: >-
            The store page's About this game, plain text; blank lines separate
            paragraphs (trimmed, up to 12000 characters). The short description
            is `description`. Omission preserves; null or an empty string
            clears. Published with the reviewed revision.
        genres:
          oneOf:
            - $ref: '#/components/schemas/GameGenres'
            - type: 'null'
          description: >-
            Omission preserves; null clears. Published with the reviewed
            revision.
        features:
          oneOf:
            - $ref: '#/components/schemas/GameFeatures'
            - type: 'null'
          description: >-
            Omission preserves; null clears. Published with the reviewed
            revision.
        credits:
          oneOf:
            - $ref: '#/components/schemas/GameCredits'
            - type: 'null'
          description: >-
            Omission preserves; null clears; a value replaces the credits.
            Published with the reviewed revision.
        languageSupport:
          oneOf:
            - $ref: '#/components/schemas/GameLanguageSupport'
            - type: 'null'
          description: >-
            Omission preserves; null clears the support matrix and keeps
            languages. A value sets languages to its codes when languages is
            omitted; when both are sent, or languages is sent alone while
            support is declared, the codes must equal languages or the edit is
            422. Published with the reviewed revision.
        externalLinks:
          oneOf:
            - $ref: '#/components/schemas/GameExternalLinks'
            - type: 'null'
          description: >-
            Omission preserves; null clears; a value replaces every link.
            Published with the reviewed revision.
        mobile:
          oneOf:
            - $ref: '#/components/schemas/GameMobileListing'
            - type: 'null'
          description: >-
            The iPhone and Android tagline and description. Omission preserves;
            null clears it, and so does a value whose texts are all null or
            empty, so the phone apps use the desktop subtitle and description. A
            value replaces both texts. Revision reads always carry `mobile`,
            null when cleared. Published with the reviewed revision.
    GameLanguages:
      type: array
      items:
        type: string
        pattern: ^[a-z]{2,3}(-[a-z0-9]{2,8}){0,2}$
      maxItems: 30
      uniqueItems: true
    SupportedPlatforms:
      type: array
      minItems: 1
      maxItems: 6
      uniqueItems: true
      description: >-
        Creator-declared player platforms; this does not certify a playable
        build. New Games and newly submitted drafts require explicit targets.
        Historical revisions may have an empty declaration.
      items:
        type: string
        enum:
          - android
          - ios
          - linux
          - macos
          - web
          - windows
    GameRelease:
      type: object
      additionalProperties: false
      required:
        - comingSoon
      properties:
        comingSoon:
          type: boolean
        date:
          type: string
          pattern: >-
            ^[12][0-9]{3}(-(0[1-9]|1[0-2])(-(0[1-9]|[12][0-9]|3[01]))?|-Q[1-4])?$
          description: >-
            A day (2026-11-14), month (2026-11), quarter (2026-Q4) or year
            (2026). Omit it while a Coming Soon date is to be announced. A
            released Game (comingSoon false) needs an exact day.
    SystemRequirements:
      type: object
      additionalProperties: false
      minProperties: 1
      description: Minimum and optional recommended hardware per desktop platform.
      properties:
        windows:
          $ref: '#/components/schemas/PlatformRequirements'
        macos:
          $ref: '#/components/schemas/PlatformRequirements'
        linux:
          $ref: '#/components/schemas/PlatformRequirements'
    AIDisclosure:
      type: object
      additionalProperties: false
      required:
        - uses
      description: >-
        How AI was used to make the Game; an empty uses array means no AI.
        generatedGameplay (content generated while players play) needs a
        description of what is generated and its guardrails.
      properties:
        uses:
          type: array
          uniqueItems: true
          items:
            type: string
            enum:
              - assets
              - code
              - generatedGameplay
        description:
          type: string
          maxLength: 2000
    ContentSurvey:
      type: object
      additionalProperties: false
      required:
        - violence
        - bloodGore
        - sexualContent
        - nudity
        - language
        - substances
        - gambling
        - userGeneratedContent
        - onlineInteraction
        - inGamePurchases
      description: >-
        Mature-content answers that extend the content rating. "none" is an
        answer; every level is required.
      properties:
        violence:
          type: string
          enum:
            - none
            - fantasy
            - realistic
        bloodGore:
          type: string
          enum:
            - none
            - mild
            - intense
        sexualContent:
          type: string
          enum:
            - none
            - suggestive
            - explicit
        nudity:
          type: string
          enum:
            - none
            - partial
            - full
        language:
          type: string
          enum:
            - none
            - mild
            - strong
        substances:
          type: string
          enum:
            - none
            - referenced
            - used
        gambling:
          type: string
          enum:
            - none
            - simulated
            - realMoney
        userGeneratedContent:
          type: boolean
        onlineInteraction:
          type: boolean
        inGamePurchases:
          type: boolean
        notes:
          type: string
          maxLength: 1000
    MediaSlots:
      type: object
      additionalProperties: false
      minProperties: 1
      description: >-
        Named store page media per storefront flow. `desktop` is the
        summer.games website and the desktop app; `mobile` is the iPhone and
        Android apps. The flat keyArt, screenshots and trailers are the desktop
        slots named before the flows; a `desktop` slot wins over its flat
        counterpart. Images (key art, capsules, icons, screenshots, trailer
        posters) are IMAGE assets; trailers are VIDEO assets. One asset may fill
        a slot in each flow (for example the same icon); screenshots and
        trailers are distinct within a flow. Once verification has measured an
        image, the flow slots must fit their shape within 2%:
        desktop.capsuleTall 3:4 of at least 600x800; desktop.capsuleWide 460:215
        of at least 920x430; desktop.icon and mobile.icon square of at least 512
        (1024 recommended); mobile.tallCover portrait from 9:19.5 to 9:16 of at
        least 1080x1920; mobile.keyArt 16:9 of at least 1920x1080;
        mobile.screenshots 16:9 to 19.5:9 in either orientation with a short
        side of at least 1080. A misfit is 422 on edit and blocks submit. The
        flat slots, desktop.keyArt and desktop.screenshots accept any verified
        image.
      properties:
        keyArt:
          $ref: '#/components/schemas/MediaImageSlot'
        screenshots:
          $ref: '#/components/schemas/MediaScreenshotSlots'
        trailers:
          $ref: '#/components/schemas/MediaTrailerSlots'
        desktop:
          type: object
          additionalProperties: false
          minProperties: 1
          description: >-
            Website and desktop app art. Both draw the title over the key art,
            so it carries no text; the capsules may carry the logo. A missing
            capsule is cropped from the key art at its focal point.
          properties:
            keyArt:
              $ref: '#/components/schemas/MediaImageSlot'
            capsuleTall:
              $ref: '#/components/schemas/MediaImageSlot'
            capsuleWide:
              $ref: '#/components/schemas/MediaImageSlot'
            icon:
              $ref: '#/components/schemas/MediaImageSlot'
            screenshots:
              $ref: '#/components/schemas/MediaScreenshotSlots'
            trailers:
              $ref: '#/components/schemas/MediaTrailerSlots'
        mobile:
          type: object
          additionalProperties: false
          minProperties: 1
          description: >-
            iPhone and Android art. The apps draw the title over the tall cover
            and key art, so neither carries text. A missing tall cover is
            cropped from the mobile key art, then the desktop key art.
          properties:
            icon:
              $ref: '#/components/schemas/MediaImageSlot'
            tallCover:
              $ref: '#/components/schemas/MediaImageSlot'
            keyArt:
              $ref: '#/components/schemas/MediaImageSlot'
            screenshots:
              $ref: '#/components/schemas/MediaScreenshotSlots'
    GameGenres:
      type: array
      minItems: 1
      maxItems: 5
      uniqueItems: true
      description: >-
        Game tag IDs whose category is genre (GET /v1/management/game-tags);
        aliases and legacy tags are not genres. Order is the creator's.
      items:
        type: string
        pattern: ^[a-z0-9][a-z0-9._-]{0,47}$
    GameFeatures:
      type: array
      minItems: 1
      uniqueItems: true
      description: Closed set of store page features, in the creator's order.
      items:
        type: string
        enum:
          - single_player
          - online_multiplayer
          - local_multiplayer
          - online_coop
          - local_coop
          - cross_platform
          - controller_full
          - controller_partial
          - cloud_saves
          - plays_in_browser
          - level_editor
          - achievements
          - in_game_purchases
    GameCredits:
      type: object
      additionalProperties: false
      required:
        - developer
      description: >-
        Who made and published the Game and its series. Each is a trimmed single
        line of 1 to 120 characters; omit publisher or franchise when there is
        none.
      properties:
        developer:
          type: string
          minLength: 1
          maxLength: 120
        publisher:
          type: string
          minLength: 1
          maxLength: 120
        franchise:
          type: string
          minLength: 1
          maxLength: 120
    GameLanguageSupport:
      type: array
      minItems: 1
      maxItems: 30
      description: >-
        One entry per language, stored in code order (codes are lowercased).
        Each entry declares at least one kind of support.
      items:
        type: object
        additionalProperties: false
        required:
          - code
          - interface
          - fullAudio
          - subtitles
        properties:
          code:
            type: string
            pattern: ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8}){0,2}$
            description: BCP 47 language code, for example en, pt-br or zh-hans.
          interface:
            type: boolean
          fullAudio:
            type: boolean
          subtitles:
            type: boolean
    GameExternalLinks:
      type: array
      minItems: 1
      maxItems: 10
      description: >-
        Creator links shown on the store page, in the creator's order, with
        distinct URLs.
      items:
        $ref: '#/components/schemas/GameExternalLink'
    GameMobileListing:
      type: object
      additionalProperties: false
      description: >-
        Each text is trimmed and single-line; a missing, null (or, on edit,
        empty) means the desktop text is used. The 120 character description
        minimum is a Studio checklist recommendation, not an API rule.
      properties:
        subtitle:
          type:
            - string
            - 'null'
          maxLength: 160
        description:
          type:
            - string
            - 'null'
          maxLength: 170
    Resource:
      type: object
      additionalProperties: true
    Error:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - requestId
            - retryable
          properties:
            code:
              type: string
            message:
              type: string
            requestId:
              type: string
            retryable:
              type: boolean
    PlatformRequirements:
      type: object
      additionalProperties: false
      required:
        - minimum
      properties:
        minimum:
          $ref: '#/components/schemas/StorePageRequirements'
        recommended:
          $ref: '#/components/schemas/StorePageRequirements'
    MediaImageSlot:
      type: object
      additionalProperties: false
      required:
        - assetId
        - focalPoint
      properties:
        assetId:
          type: string
          pattern: ^asset_[0-9A-Za-z]{26}$
        focalPoint:
          type: object
          additionalProperties: false
          required:
            - x
            - 'y'
          description: >-
            The point every crop keeps in frame, as fractions of width and
            height from the top left.
          properties:
            x:
              type: number
              minimum: 0
              maximum: 1
            'y':
              type: number
              minimum: 0
              maximum: 1
    MediaScreenshotSlots:
      type: array
      maxItems: 12
      uniqueItems: true
      items:
        type: string
        pattern: ^asset_[0-9A-Za-z]{26}$
    MediaTrailerSlots:
      type: array
      maxItems: 4
      items:
        type: object
        additionalProperties: false
        required:
          - assetId
          - posterAssetId
        properties:
          assetId:
            type: string
            pattern: ^asset_[0-9A-Za-z]{26}$
          posterAssetId:
            type: string
            pattern: ^asset_[0-9A-Za-z]{26}$
            description: >-
              The image shown before the trailer plays; Summer does not extract
              frames.
    GameExternalLink:
      type: object
      additionalProperties: false
      required:
        - kind
        - url
      description: >-
        An https URL without credentials or port, at most 2048 bytes. website
        may be any public domain name (no IP address, localhost, .local or
        .internal). Other kinds must use their service's hosts: x (x.com,
        twitter.com), youtube (youtube.com, m.youtube.com, youtu.be), instagram
        (instagram.com), tiktok (tiktok.com), bluesky (bsky.app), discord
        (discord.gg, discord.com); www. variants are accepted where the service
        uses them.
      properties:
        kind:
          type: string
          enum:
            - website
            - x
            - youtube
            - instagram
            - tiktok
            - bluesky
            - discord
        url:
          type: string
          format: uri
          maxLength: 2048
          pattern: ^https://
    StorePageRequirements:
      type: object
      additionalProperties: false
      minProperties: 1
      description: >-
        Free text, each trimmed single line up to 256 characters; notes may be
        multiline up to 1000.
      properties:
        os:
          type: string
          maxLength: 256
        processor:
          type: string
          maxLength: 256
        memory:
          type: string
          maxLength: 256
        graphics:
          type: string
          maxLength: 256
        storage:
          type: string
          maxLength: 256
        network:
          type: string
          maxLength: 256
        notes:
          type: string
          maxLength: 1000
  responses:
    Resource:
      description: Resource view
      headers:
        ETag:
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Resource'
    PreconditionFailed:
      description: Stale ETag
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationFailed:
      description: Bounded validation findings
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    developerBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Your Summer account token. An agent gets it by signing in with OAuth:
        `summer login --store` in the Summer CLI, or the Summer connector in an
        AI app. Agent tokens can call only the operations on these pages.
        Publishing needs an approval from the game's owner first.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.