> ## 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.

# Grant writes for an exported game's upload parts

> Requires builds.write while the exported game's upload is open.



## OpenAPI

````yaml scripts/reference/sources/openapi/management.json POST /v1/management/games/{gameId}/build-publications/{publicationId}:signParts
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}/build-publications/{publicationId}:signParts:
    parameters:
      - $ref: '#/components/parameters/GameID'
      - name: publicationId
        in: path
        required: true
        schema:
          type: string
    post:
      tags:
        - Games
      summary: Grant writes for an exported game's upload parts
      description: >-
        Requires builds.write while the exported game's upload is open. Each
        grant is a private PUT credential bound to the part's planned length and
        the supplied SHA-256 of its bytes; storage rejects any other bytes. Send
        the returned headers, no account authorization or cookies, and reject
        redirects. At most 100 parts per request, with their own rate allowance;
        grants expire after one hour and can be requested again.
      operationId: signBuildPublicationParts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientPackagePartRequest'
      responses:
        '200':
          description: One write grant per requested part
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientPackagePartGrants'
        '404':
          description: >-
            Publication not found, not an exported game, or unavailable to this
            creator
        '409':
          description: >-
            upload_not_open: open the upload with :source-upload first, or it is
            already sealed
        '422':
          description: Part number outside the plan or invalid digest
        '503':
          $ref: '#/components/responses/Unavailable'
components:
  parameters:
    GameID:
      name: gameId
      in: path
      required: true
      schema:
        type: string
        pattern: ^game_[A-Za-z0-9_-]{8,123}$
  schemas:
    ClientPackagePartRequest:
      type: object
      required:
        - parts
      properties:
        parts:
          type: array
          minItems: 1
          maxItems: 100
          items:
            type: object
            required:
              - partNumber
              - sha256
            properties:
              partNumber:
                type: integer
                minimum: 1
              sha256:
                type: string
                pattern: ^sha256:[0-9a-f]{64}$
    ClientPackagePartGrants:
      type: object
      required:
        - parts
      properties:
        parts:
          type: array
          items:
            type: object
            required:
              - partNumber
              - method
              - url
              - headers
              - expiresAt
            properties:
              partNumber:
                type: integer
              method:
                type: string
                const: PUT
              url:
                type: string
                format: uri
              headers:
                type: object
                additionalProperties:
                  type: string
              expiresAt:
                type: string
                format: date-time
    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
  responses:
    Unavailable:
      description: Required dependency unavailable; the error is retryable
      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.