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

# Migrate Campaign Board

> Re-carve the board to the CURRENT config geometry, carrying the war.

The operator's alternative to a restart when the board's shape or size
changes: flip ``settings.campaign.board`` first, then call this. The
ground is carved completely fresh (terrain, variants, arenas — exactly the
board a new campaign would get), and each player's territory is carried
over proportionally as one contiguous region seeded where their old ground
maps onto the new frame (see campaign.migrate). Rounds, frames, and events
survive; per-cell operator pins do not. Dry-run by default — the module is
deterministic end to end, so the dry report shows exactly the board a real
run commits. The epoch bump fences any in-flight round the same way a
restart does.



## OpenAPI

````yaml https://softmax.com/api/observatory/openapi.json post /v2/leagues/{league_id}/campaign/migrate-board
openapi: 3.1.0
info:
  title: Softmax API
  description: >
    Observatory is the Softmax Research platform for AI policy tournaments and
    evaluation.

    Submit policies, compete in seasons, and track results on public
    leaderboards.


    ---


    ## Authentication


    Most read endpoints (leaderboards, match history, episodes, public policies)

    work without auth. Submitting policies or accessing your own data requires

    a Bearer token:


    ```

    Authorization: Bearer <your-token>

    ```


    To get a token, install [cogames](https://pypi.org/project/cogames/) and
    run:


    ```bash

    cogames auth login

    ```


    A `401` response means no token was provided. A `403` means the token

    is invalid or expired.


    ### Verify your token


    ```bash

    curl -H "Authorization: Bearer <your-token>" \
      https://softmax.com/api/observatory/whoami
    ```


    Returns `{"user_email": "you@example.com"}` on success.
  version: 1.0.0
servers:
  - url: https://softmax.com/api/observatory
security: []
paths:
  /v2/leagues/{league_id}/campaign/migrate-board:
    post:
      tags:
        - v2
        - v2
      summary: Migrate Campaign Board
      description: >-
        Re-carve the board to the CURRENT config geometry, carrying the war.


        The operator's alternative to a restart when the board's shape or size

        changes: flip ``settings.campaign.board`` first, then call this. The

        ground is carved completely fresh (terrain, variants, arenas — exactly
        the

        board a new campaign would get), and each player's territory is carried

        over proportionally as one contiguous region seeded where their old
        ground

        maps onto the new frame (see campaign.migrate). Rounds, frames, and
        events

        survive; per-cell operator pins do not. Dry-run by default — the module
        is

        deterministic end to end, so the dry report shows exactly the board a
        real

        run commits. The epoch bump fences any in-flight round the same way a

        restart does.
      operationId: >-
        migrate_campaign_board_v2_leagues__league_id__campaign_migrate_board_post
      parameters:
        - name: league_id
          in: path
          required: true
          schema:
            type: string
            pattern: >-
              ^league_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
            title: League Id
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
                - $ref: '#/components/schemas/MigrateBoardRequest'
                - type: 'null'
              title: Request
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: >-
                  Response Migrate Campaign Board V2 Leagues  League Id 
                  Campaign Migrate Board Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - BearerAuth: []
components:
  schemas:
    MigrateBoardRequest:
      properties:
        dry_run:
          type: boolean
          title: Dry Run
          default: true
      additionalProperties: false
      type: object
      title: MigrateBoardRequest
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Bearer token issued by Softmax

````