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

# Set a tool fixture

> Create-or-replace by scope: one fixture per tool project-wide, plus one per (tool, flow variant). Setting the same scope twice replaces the response, so CI can apply fixtures idempotently. During Roark test calls the tool guard answers with the fixture verbatim instead of generating a response; real callers are never affected.



## OpenAPI

````yaml /api-reference/openapi.documented.json post /v1/simulation/tool-fixture
openapi: 3.1.0
info:
  title: Roark Analytics API
  description: >-
    The Roark Analytics API gives you access to the same API that powers the
    award winning Roark Analytics platform.
  version: 1.0.0
servers:
  - description: Production
    url: https://api.roark.ai
security:
  - Bearer: []
tags:
  - name: Agent
  - name: Agent Endpoint
  - name: Call
  - name: Chat
  - name: Metric
  - name: Metric Policy
  - name: Metric Collection Job
  - name: Customer Flow
  - name: Customer Flow Edge Case
  - name: Simulation
  - name: Simulation Persona
  - name: Simulation Environment
  - name: Simulation Scenario
  - name: Simulation Run Plan
  - name: Simulation Template
  - name: Simulation Run Plan Job
  - name: Simulation Job
  - name: HTTP Request Definition
  - name: Webhook
  - name: Issue
  - name: Autoimprove
  - name: Agent Config
  - name: Knowledge Base
  - name: Config
  - name: CLI Auth
  - name: Call Analysis
  - name: Benchmark
  - name: Health
paths:
  /v1/simulation/tool-fixture:
    post:
      tags:
        - Simulation
      summary: Set a tool fixture
      description: >-
        Create-or-replace by scope: one fixture per tool project-wide, plus one
        per (tool, flow variant). Setting the same scope twice replaces the
        response, so CI can apply fixtures idempotently. During Roark test calls
        the tool guard answers with the fixture verbatim instead of generating a
        response; real callers are never affected.
      operationId: postV1SimulationTool-fixture
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertSimulationToolFixtureRequest'
      responses:
        '200':
          description: The fixture as stored.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/SimulationToolFixture'
                required:
                  - data
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Validation error
              example:
                type: validation
                code: invalid_parameter
                message: The request was invalid
                param: email
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Authentication error
              example:
                type: authentication
                code: unauthorized
                message: Authentication required
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Permission error
              example:
                type: forbidden
                code: permission_denied
                message: You do not have permission to access this resource
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Not found error
              example:
                type: not_found
                code: resource_not_found
                message: The requested resource could not be found
          description: The referenced flow variant does not exist in this project.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Rate limit error
              example:
                type: rate_limit
                code: too_many_requests
                message: Rate limit exceeded
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Server error
              example:
                type: internal
                code: internal_error
                message: Internal server error
          description: Internal Server Error
      x-codeSamples:
        - lang: JavaScript
          source: >-
            import Roark from '@roarkanalytics/sdk';


            const client = new Roark({
              bearerToken: process.env['ROARK_API_BEARER_TOKEN'], // This is the default and can be omitted
            });


            const simulationToolFixture = await
            client.simulationToolFixture.create({
              toolName: 'lookup_availability',
            });


            console.log(simulationToolFixture.data);
        - lang: Python
          source: |-
            import os
            from roark_analytics import Roark

            client = Roark(
                bearer_token=os.environ.get("ROARK_API_BEARER_TOKEN"),  # This is the default and can be omitted
            )
            simulation_tool_fixture = client.simulation_tool_fixture.create(
                tool_name="lookup_availability",
            )
            print(simulation_tool_fixture.data)
components:
  schemas:
    UpsertSimulationToolFixtureRequest:
      type: object
      properties:
        toolName:
          type: string
          minLength: 1
          maxLength: 200
          description: The tool this fixture answers for.
          example: lookup_availability
        response:
          description: The exact JSON to return.
          example:
            slots: []
        customerFlowVariantId:
          type: string
          format: uuid
          description: >-
            Pin the fixture to one flow variant (scenario). Omit for a
            project-wide fixture. A variant-pinned fixture beats the
            project-wide one.
        description:
          type: string
          maxLength: 1000
          description: Why this fixture exists.
          example: Forces the no-availability branch
        enabled:
          type: boolean
          description: Defaults to true.
      required:
        - toolName
    SimulationToolFixture:
      type: object
      properties:
        id:
          type: string
          format: uuid
        toolName:
          type: string
          example: lookup_availability
        customerFlowVariantId:
          type:
            - string
            - 'null'
          format: uuid
          description: The flow variant this fixture is pinned to. Null = project-wide.
        response:
          description: The exact JSON the tool returns during Roark test calls.
        description:
          type:
            - string
            - 'null'
          description: Why this fixture exists.
        enabled:
          type: boolean
        createdAt:
          type: string
          description: ISO 8601.
        updatedAt:
          type: string
          description: ISO 8601.
      required:
        - id
        - toolName
        - customerFlowVariantId
        - description
        - enabled
        - createdAt
        - updatedAt
      description: >-
        A deterministic tool response for Roark test calls: where the
        scenario-aware model makes mocked tools plausible, a fixture makes one
        exact, so a simulation can force the branch under test. Never applies to
        real callers.
    ErrorResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - validation
            - authentication
            - forbidden
            - not_found
            - conflict
            - payment_required
            - rate_limit
            - internal
          description: The error type category
          examples:
            - validation
            - authentication
        code:
          type: string
          description: Machine-readable error code identifier
          examples:
            - invalid_parameter
            - missing_required_field
            - unauthorized
        message:
          type: string
          description: Human-readable error message
          examples:
            - The request was invalid
            - Authentication required
        param:
          type: string
          description: The parameter that caused the error (if applicable)
          examples:
            - email
            - user_id
        details:
          description: Additional error context information
      required:
        - type
        - code
        - message
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````