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

# Update an evaluation case

> Replace the case; evalId in the body must not conflict with the path ID; success returns JSON null

Exposed by the verified SDK/ADK versions for trusted development and debugging. Paths depend on the installed ADK version and should not be used as public application entry points

<Warning>
  This operation replaces an existing evaluation case; it is not a partial update. Retrieve and preserve any content you need before submitting the complete replacement
</Warning>

A nonempty request `evalId` must match the path `eval_case_id`. Conflicting IDs return `400`, a missing target returns `404`, and success returns JSON `null`


## OpenAPI

````yaml productions/api-reference/openapi/en/harness-runtime.json PUT /dev/apps/{app_name}/eval-sets/{eval_set_id}/eval-cases/{eval_case_id}
openapi: 3.1.0
info:
  title: Harness Runtime
  version: agentkit-cli 0.54.0 / SDK 0.8.0 / ADK 2.2.0
  description: >-
    Harness Runtime deployed by AgentKit CLI 0.54.0, verified with VeADK 1.0.8,
    AgentKit SDK 0.8.0, and Google ADK 2.2.0; scheduled tasks require separate
    enablement
servers:
  - url: http://localhost:8000
    description: Local server
security:
  - {}
  - RuntimeBearer: []
tags:
  - name: Service and applications
  - name: Sessions
  - name: Agent execution
  - name: Artifacts
  - name: Memory
  - name: Evaluation · development server
  - name: Debugging · development server
  - name: Compatibility endpoints
  - name: Harness cronjobs
paths:
  /dev/apps/{app_name}/eval-sets/{eval_set_id}/eval-cases/{eval_case_id}:
    put:
      tags:
        - Evaluation · development server
      summary: Update an evaluation case
      description: >-
        Replace the case; evalId in the body must not conflict with the path ID;
        success returns JSON null


        Exposed by the verified SDK/ADK versions for trusted development and
        debugging. Paths depend on the installed ADK version and should not be
        used as public application entry points
      operationId: harnessRuntimeUpdateEvalCase
      parameters:
        - name: app_name
          in: path
          required: true
          schema:
            type: string
            title: App Name
          description: Application name; harness_agent for the CLI deployment
          example: harness_agent
        - name: eval_set_id
          in: path
          required: true
          schema:
            type: string
            title: Eval Set Id
          description: Evaluation set ID
          example: travel-eval
        - name: eval_case_id
          in: path
          required: true
          schema:
            type: string
            title: Eval Case Id
          description: Evaluation case ID
          example: case-001
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EvalCase-Input'
            example:
              evalId: case-001
              conversation: []
              sessionInput:
                appName: harness_agent
                userId: user-001
                state: {}
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: 'null'
              example: null
        '400':
          description: Invalid request or a required service/dependency is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Requested resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '411':
          description: 'Shared OAuth only: a valid Content-Length is required'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: CONTENT_LENGTH_REQUIRED
        '413':
          description: 'Shared OAuth only: request body exceeds 128 KiB'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
              example:
                error: REQUEST_TOO_LARGE
        '422':
          description: Request validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    EvalCase-Input:
      properties:
        evalId:
          type: string
          title: Evalid
          description: Evaluation case ID
        conversation:
          anyOf:
            - items:
                $ref: '#/components/schemas/Invocation-Input'
              type: array
            - type: 'null'
          title: Conversation
          description: Conversation invocations used in the evaluation
        conversationScenario:
          anyOf:
            - $ref: '#/components/schemas/ConversationScenario-Input'
            - type: 'null'
        sessionInput:
          anyOf:
            - $ref: '#/components/schemas/SessionInput'
            - type: 'null'
          description: Application, user, and initial state for the evaluation session
        creationTimestamp:
          type: number
          title: Creationtimestamp
          default: 0
          description: Creation time as a Unix timestamp in seconds
        rubrics:
          anyOf:
            - items:
                $ref: '#/components/schemas/Rubric'
              type: array
            - type: 'null'
          title: Rubrics
        finalSessionState:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Finalsessionstate
          description: Expected final session state
      additionalProperties: false
      type: object
      required:
        - evalId
      title: EvalCase
    ApiError:
      type: object
      properties:
        detail:
          type: string
          description: Error details
      required:
        - detail
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
          description: Error details
      type: object
      title: HTTPValidationError
    Invocation-Input:
      properties:
        invocationId:
          type: string
          title: Invocationid
          default: ''
          description: Invocation ID
        userContent:
          $ref: '#/components/schemas/Content-Input'
        finalResponse:
          anyOf:
            - $ref: '#/components/schemas/Content-Input'
            - type: 'null'
        intermediateData:
          anyOf:
            - $ref: '#/components/schemas/IntermediateData-Input'
            - $ref: '#/components/schemas/InvocationEvents-Input'
            - type: 'null'
          title: Intermediatedata
        creationTimestamp:
          type: number
          title: Creationtimestamp
          default: 0
          description: Creation time as a Unix timestamp in seconds
        rubrics:
          anyOf:
            - items:
                $ref: '#/components/schemas/Rubric'
              type: array
            - type: 'null'
          title: Rubrics
        appDetails:
          anyOf:
            - $ref: '#/components/schemas/AppDetails'
            - type: 'null'
      additionalProperties: false
      type: object
      required:
        - userContent
      title: Invocation
    ConversationScenario-Input:
      properties:
        startingPrompt:
          type: string
          title: Startingprompt
        conversationPlan:
          type: string
          title: Conversationplan
        userPersona:
          anyOf:
            - $ref: '#/components/schemas/UserPersona'
            - type: 'null'
      additionalProperties: false
      type: object
      required:
        - startingPrompt
        - conversationPlan
      title: ConversationScenario
    SessionInput:
      properties:
        appName:
          type: string
          title: Appname
          description: Application name
        userId:
          type: string
          title: Userid
          description: User ID
        state:
          additionalProperties: true
          type: object
          title: State
          description: Session state as key-value pairs
      additionalProperties: false
      type: object
      required:
        - appName
        - userId
      title: SessionInput
    Rubric:
      properties:
        rubricId:
          type: string
          title: Rubricid
        rubricContent:
          $ref: '#/components/schemas/RubricContent'
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Description
        type:
          anyOf:
            - type: string
            - type: 'null'
          title: Type
      additionalProperties: false
      type: object
      required:
        - rubricId
        - rubricContent
      title: Rubric
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
          description: Location of the invalid field
        msg:
          type: string
          title: Message
          description: Validation error message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    Content-Input:
      properties:
        parts:
          anyOf:
            - items:
                $ref: '#/components/schemas/Part-Input'
              type: array
            - type: 'null'
          title: Parts
          description: Ordered message parts
        role:
          anyOf:
            - type: string
            - type: 'null'
          title: Role
          description: Message role, such as user or model
      additionalProperties: false
      type: object
      title: Content
    IntermediateData-Input:
      properties:
        toolUses:
          items:
            $ref: '#/components/schemas/FunctionCall'
          type: array
          title: Tooluses
          default: []
        toolResponses:
          items:
            $ref: '#/components/schemas/FunctionResponse-Input'
          type: array
          title: Toolresponses
          default: []
        intermediateResponses:
          items:
            prefixItems:
              - type: string
              - items:
                  $ref: '#/components/schemas/Part-Input'
                type: array
            type: array
            maxItems: 2
            minItems: 2
          type: array
          title: Intermediateresponses
          default: []
      additionalProperties: false
      type: object
      title: IntermediateData
    InvocationEvents-Input:
      properties:
        invocationEvents:
          items:
            $ref: '#/components/schemas/InvocationEvent-Input'
          type: array
          title: Invocationevents
      additionalProperties: false
      type: object
      title: InvocationEvents
    AppDetails:
      properties:
        agentDetails:
          additionalProperties:
            $ref: '#/components/schemas/AgentDetails'
          type: object
          title: Agentdetails
      additionalProperties: false
      type: object
      title: AppDetails
    UserPersona:
      properties:
        id:
          type: string
          title: Id
          description: Identifier
        description:
          type: string
          title: Description
          description: Description
        behaviors:
          items:
            $ref: '#/components/schemas/UserBehavior'
          type: array
          title: Behaviors
      type: object
      required:
        - id
        - description
        - behaviors
      title: UserPersona
    RubricContent:
      properties:
        textProperty:
          anyOf:
            - type: string
            - type: 'null'
          title: Textproperty
      additionalProperties: false
      type: object
      required:
        - textProperty
      title: RubricContent
    Part-Input:
      properties:
        mediaResolution:
          anyOf:
            - $ref: '#/components/schemas/PartMediaResolution'
            - type: 'null'
        codeExecutionResult:
          anyOf:
            - $ref: '#/components/schemas/CodeExecutionResult'
            - type: 'null'
          description: Code execution result
        executableCode:
          anyOf:
            - $ref: '#/components/schemas/ExecutableCode'
            - type: 'null'
          description: Executable code
        fileData:
          anyOf:
            - $ref: '#/components/schemas/FileData'
            - type: 'null'
          description: File content referenced by URI
        functionCall:
          anyOf:
            - $ref: '#/components/schemas/FunctionCall'
            - type: 'null'
          description: Function call requested by the model
        functionResponse:
          anyOf:
            - $ref: '#/components/schemas/FunctionResponse-Input'
            - type: 'null'
          description: Function execution result
        inlineData:
          anyOf:
            - $ref: '#/components/schemas/Blob'
            - type: 'null'
          description: Inline binary content with Base64-encoded data
        text:
          anyOf:
            - type: string
            - type: 'null'
          title: Text
          description: Text content
        thought:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Thought
          description: Whether this is thought content
        thoughtSignature:
          anyOf:
            - type: string
              contentEncoding: base64
              contentMediaType: application/octet-stream
            - type: 'null'
          title: Thoughtsignature
          description: Thought signature for subsequent requests
        videoMetadata:
          anyOf:
            - $ref: '#/components/schemas/VideoMetadata'
            - type: 'null'
          description: Video metadata
        toolCall:
          anyOf:
            - $ref: '#/components/schemas/ToolCall'
            - type: 'null'
        toolResponse:
          anyOf:
            - $ref: '#/components/schemas/ToolResponse'
            - type: 'null'
        partMetadata:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Partmetadata
      additionalProperties: false
      type: object
      title: Part
    FunctionCall:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: Identifier
        args:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Args
          description: Function arguments
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Name
        partialArgs:
          anyOf:
            - items:
                $ref: '#/components/schemas/PartialArg'
              type: array
            - type: 'null'
          title: Partialargs
        willContinue:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Willcontinue
      additionalProperties: false
      type: object
      title: FunctionCall
    FunctionResponse-Input:
      properties:
        willContinue:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Willcontinue
        scheduling:
          anyOf:
            - $ref: '#/components/schemas/FunctionResponseScheduling'
            - type: 'null'
        parts:
          anyOf:
            - items:
                $ref: '#/components/schemas/FunctionResponsePart'
              type: array
            - type: 'null'
          title: Parts
          description: Ordered message parts
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: Identifier
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Name
        response:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Response
          description: Response content
      additionalProperties: false
      type: object
      title: FunctionResponse
    InvocationEvent-Input:
      properties:
        author:
          type: string
          title: Author
          description: Event author, usually user or an agent name
        content:
          anyOf:
            - $ref: '#/components/schemas/Content-Input'
            - type: 'null'
          description: Message content
      additionalProperties: false
      type: object
      required:
        - author
        - content
      title: InvocationEvent
    AgentDetails:
      properties:
        name:
          type: string
          title: Name
          description: Name
        instructions:
          type: string
          title: Instructions
          default: ''
        toolDeclarations:
          items: {}
          type: array
          title: Tooldeclarations
      additionalProperties: false
      type: object
      required:
        - name
      title: AgentDetails
    UserBehavior:
      properties:
        name:
          type: string
          title: Name
          description: Name
        description:
          type: string
          title: Description
          description: Description
        behavior_instructions:
          items:
            type: string
          type: array
          title: Behavior Instructions
        violation_rubrics:
          items:
            type: string
          type: array
          title: Violation Rubrics
      type: object
      required:
        - name
        - description
        - behavior_instructions
        - violation_rubrics
      title: UserBehavior
    PartMediaResolution:
      properties:
        level:
          anyOf:
            - $ref: '#/components/schemas/PartMediaResolutionLevel'
            - type: 'null'
        numTokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Numtokens
      additionalProperties: false
      type: object
      title: PartMediaResolution
    CodeExecutionResult:
      properties:
        outcome:
          anyOf:
            - $ref: '#/components/schemas/Outcome'
            - type: 'null'
        output:
          anyOf:
            - type: string
            - type: 'null'
          title: Output
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: Identifier
      additionalProperties: false
      type: object
      title: CodeExecutionResult
    ExecutableCode:
      properties:
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
        language:
          anyOf:
            - $ref: '#/components/schemas/Language'
            - type: 'null'
          description: Application definition language
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: Identifier
      additionalProperties: false
      type: object
      title: ExecutableCode
    FileData:
      properties:
        displayName:
          anyOf:
            - type: string
            - type: 'null'
          title: Displayname
        fileUri:
          anyOf:
            - type: string
            - type: 'null'
          title: Fileuri
          description: File URI
        mimeType:
          anyOf:
            - type: string
            - type: 'null'
          title: Mimetype
          description: Content MIME type
      additionalProperties: false
      type: object
      title: FileData
    Blob:
      properties:
        data:
          anyOf:
            - type: string
              contentEncoding: base64
              contentMediaType: application/octet-stream
            - type: 'null'
          title: Data
        displayName:
          anyOf:
            - type: string
            - type: 'null'
          title: Displayname
        mimeType:
          anyOf:
            - type: string
            - type: 'null'
          title: Mimetype
          description: Content MIME type
      additionalProperties: false
      type: object
      title: Blob
    VideoMetadata:
      properties:
        endOffset:
          anyOf:
            - type: string
            - type: 'null'
          title: Endoffset
        fps:
          anyOf:
            - type: number
            - type: 'null'
          title: Fps
        startOffset:
          anyOf:
            - type: string
            - type: 'null'
          title: Startoffset
      additionalProperties: false
      type: object
      title: VideoMetadata
    ToolCall:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: Identifier
        toolType:
          anyOf:
            - $ref: '#/components/schemas/ToolType'
            - type: 'null'
        args:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Args
          description: Function arguments
      additionalProperties: false
      type: object
      title: ToolCall
    ToolResponse:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: Identifier
        toolType:
          anyOf:
            - $ref: '#/components/schemas/ToolType'
            - type: 'null'
        response:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Response
          description: Response content
      additionalProperties: false
      type: object
      title: ToolResponse
    PartialArg:
      properties:
        boolValue:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Boolvalue
        jsonPath:
          anyOf:
            - type: string
            - type: 'null'
          title: Jsonpath
        nullValue:
          anyOf:
            - type: string
              const: NULL_VALUE
            - type: 'null'
          title: Nullvalue
        numberValue:
          anyOf:
            - type: number
            - type: 'null'
          title: Numbervalue
        stringValue:
          anyOf:
            - type: string
            - type: 'null'
          title: Stringvalue
        willContinue:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Willcontinue
      additionalProperties: false
      type: object
      title: PartialArg
    FunctionResponseScheduling:
      type: string
      enum:
        - SCHEDULING_UNSPECIFIED
        - SILENT
        - WHEN_IDLE
        - INTERRUPT
      title: FunctionResponseScheduling
    FunctionResponsePart:
      properties:
        inlineData:
          anyOf:
            - $ref: '#/components/schemas/FunctionResponseBlob'
            - type: 'null'
          description: Inline binary content with Base64-encoded data
        fileData:
          anyOf:
            - $ref: '#/components/schemas/FunctionResponseFileData'
            - type: 'null'
          description: File content referenced by URI
      additionalProperties: false
      type: object
      title: FunctionResponsePart
    PartMediaResolutionLevel:
      type: string
      enum:
        - MEDIA_RESOLUTION_UNSPECIFIED
        - MEDIA_RESOLUTION_LOW
        - MEDIA_RESOLUTION_MEDIUM
        - MEDIA_RESOLUTION_HIGH
        - MEDIA_RESOLUTION_ULTRA_HIGH
      title: PartMediaResolutionLevel
    Outcome:
      type: string
      enum:
        - OUTCOME_UNSPECIFIED
        - OUTCOME_OK
        - OUTCOME_FAILED
        - OUTCOME_DEADLINE_EXCEEDED
      title: Outcome
    Language:
      type: string
      enum:
        - LANGUAGE_UNSPECIFIED
        - PYTHON
      title: Language
    ToolType:
      type: string
      enum:
        - TOOL_TYPE_UNSPECIFIED
        - GOOGLE_SEARCH_WEB
        - GOOGLE_SEARCH_IMAGE
        - URL_CONTEXT
        - GOOGLE_MAPS
        - FILE_SEARCH
      title: ToolType
    FunctionResponseBlob:
      properties:
        mimeType:
          anyOf:
            - type: string
            - type: 'null'
          title: Mimetype
          description: Content MIME type
        data:
          anyOf:
            - type: string
              contentEncoding: base64
              contentMediaType: application/octet-stream
            - type: 'null'
          title: Data
        displayName:
          anyOf:
            - type: string
            - type: 'null'
          title: Displayname
      additionalProperties: false
      type: object
      title: FunctionResponseBlob
    FunctionResponseFileData:
      properties:
        fileUri:
          anyOf:
            - type: string
            - type: 'null'
          title: Fileuri
          description: File URI
        mimeType:
          anyOf:
            - type: string
            - type: 'null'
          title: Mimetype
          description: Content MIME type
        displayName:
          anyOf:
            - type: string
            - type: 'null'
          title: Displayname
      additionalProperties: false
      type: object
      title: FunctionResponseFileData
  securitySchemes:
    RuntimeBearer:
      type: http
      scheme: bearer
      description: >-
        Optional locally without a gateway; cloud deployments use the Runtime
        API key or user-pool JWT required by that deployment, never the model
        API key

````