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

# Move LLM Pool

> Reorders a pool relative to its workspace siblings. Exactly one of
 before_pool_id or after_pool_id must be set in the request; the
 moved pool's sort_key is rewritten to the midpoint between the
 chosen neighbor and its adjacent sibling. The resolver evaluates
 pools' match_when predicates in sort_key ascending order, so
 ordering controls which pool wins when multiple match_when
 predicates could fire for the same request.



## OpenAPI

````yaml POST /v1/models/pools/{pool_id}/move
openapi: 3.0.3
info:
  title: Dome Platform API
  description: Connect and REST APIs for the Dome agent governance platform.
  version: 2.0.0
servers:
  - url: https://api.domesystems.ai
    description: Production
security: []
tags:
  - name: Agents
  - name: Authorization
  - name: Guards
  - name: Tools
  - name: Tool Catalog
  - name: Models
  - name: Model Pools
  - name: Quotas
  - name: Gateways
  - name: Webhooks
  - name: Audit
  - name: Workspaces
  - name: Access Control
  - name: Tenants
  - name: Platform Keys
  - name: Enrollment
  - name: Platform
  - name: Identity
paths:
  /v1/models/pools/{pool_id}/move:
    post:
      tags:
        - Model Pools
      description: |-
        Reorders a pool relative to its workspace siblings. Exactly one of
         before_pool_id or after_pool_id must be set in the request; the
         moved pool's sort_key is rewritten to the midpoint between the
         chosen neighbor and its adjacent sibling. The resolver evaluates
         pools' match_when predicates in sort_key ascending order, so
         ordering controls which pool wins when multiple match_when
         predicates could fire for the same request.
      operationId: Management_MoveLLMPool
      parameters:
        - name: pool_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveLLMPoolRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MoveLLMPoolResponse'
components:
  schemas:
    MoveLLMPoolRequest:
      type: object
      properties:
        workspace_id:
          type: string
        pool_id:
          type: string
        before_pool_id:
          type: string
          description: |-
            Exactly one of before_pool_id / after_pool_id must be set. The
             moved pool's sort_key is rewritten to the midpoint between the
             named neighbor and its adjacent sibling. Empty/missing means
             "no constraint on that side" — use before_pool_id alone to place
             the moved pool immediately before that pool (with no upper
             neighbor when it is currently the first); use after_pool_id alone
             to place it immediately after (no lower neighbor when it is the
             last). The "top" of the list is the lowest sort_key.
        after_pool_id:
          type: string
    MoveLLMPoolResponse:
      type: object
      properties:
        pool:
          $ref: '#/components/schemas/LLMPool'
    LLMPool:
      type: object
      properties:
        id:
          type: string
        workspace_id:
          type: string
        name:
          type: string
        description:
          type: string
        match_when:
          type: object
          description: |-
            Optional `match_when` predicate. Null/empty Struct means match by
             exact name only. Grammar: prompt_tokens / requested_max_tokens /
             tool_count numeric comparators ({gt, lt, eq}); endpoint string
             equality; header.<name> case-insensitive equality;
             principal.metadata.<key> equality; principal.act_as.<field> — the
             verified end-user identity (sub/email scalars, claims.<key> scalar
             record, roles/groups Set<String> with {contains|containsAny|
             containsAll}), the same trust boundary Cedar gates tool access on.
             AND across keys. See plan §9.2.
        is_default:
          type: boolean
        cache_ttl_secs:
          type: integer
          format: int32
        cache_scope:
          type: string
          description: 'One of: workspace | caller.'
        failover_max:
          type: integer
          description: |-
            Maximum number of additional dispatch attempts after the primary
             member fails. null and 0 are equivalent at runtime (no failover);
             null preserves the "admin has not made an explicit choice" state.
             When N > 0, the resolver builds a Candidates slice of length
             min(N+1, eligible_member_count) ordered by priority ascending and
             strategy-within-tier.
          format: int32
        routing_strategy:
          type: string
          description: |-
            One of: priority_weighted | round_robin | least_loaded |
             most_quota_remaining. most_quota_remaining routes to the member
             with the most estimated cost-quota headroom remaining (members
             with no model quota are unbounded and routed last); ties are
             broken by round-robin rotation keyed by strategy_scope. weight /
             priority are ignored, as with round_robin / least_loaded.
        created_at:
          type: string
          format: date-time
        strategy_scope:
          type: string
          description: |-
            Scope of stateful routing counters. One of: workspace | caller.
             workspace: a single counter/inflight bucket per pool (round_robin,
             most_quota_remaining tiebreak) or per connection (least_loaded).
             caller: keyed additionally by agent_id so each agent observes its
             own rotation / load. Ignored for the stateless priority_weighted
             strategy. Defaults to workspace.
        sort_key:
          type: number
          description: |-
            Explicit per-workspace ordering. Pools are evaluated for
             match_when in ascending sort_key order. Managed by MoveLLMPool;
             direct edits via Create/Update are not supported.
          format: double
        reachable:
          type: boolean
          description: |-
            Gateway: false when the resource is in no Gateway → unreachable
             by agents/users. Computed, not stored.
        gateway_ids:
          type: array
          items:
            type: string
          description: |-
            Gateway: the Gateways this pool is a member of
             (gateway_llm_pool_members), as UUID strings. Computed at read time;
             lets the UI render Gateway chips without a per-row GetGateway fan-out.
             Empty ⇔ reachable is false.
      description: |-
        LLMPool: a logical name (e.g. "default-chat") that fans out to one or
         more LLMModelConnections via LLMPoolMember rows. See plan §7 / §9.

````