The API reference is in English.

Current source preview reference

PATCH /v1/scanner/tools/{tool_id}

Patch scanner tool. Permissions, parameters, responses and examples.

0.1.0 · source bccff29 · Immutable snapshot · Download OpenAPI specification

Patch scanner tool

Patch scanner tool through PATCH /v1/scanner/tools/{tool_id}. The parameters and declared response shapes below come from this exact source snapshot.

Source preview; no stable third-party integration promise. This page makes no request to a local installation.

Authority

Browser operator session only at the middleware boundary. Route-specific ownership and generation checks also apply.

Browser mutations require the exact control Origin and session-bound CSRF header. IDE callers use only their admitted route scope and exact generation.

Inspect the authority source · Authentication guide

Parameters and headers

NameLocationContract
tool_idpath
Required

string

Schema
{
  "title": "Tool Id",
  "type": "string"
}
X-CSRF-Tokenheader
Conditional / optional

Required for browser mutations with the exact control Origin. Not an IDE capability.

Schema
{
  "type": "string"
}

Request body

JSON body · required · ScannerToolPatch

FieldTypePresence
enabledboolean | nullOptional
pinned_versionstring | nullOptional
Complete declared request schema
{
  "properties": {
    "enabled": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Enabled"
    },
    "pinned_version": {
      "anyOf": [
        {
          "maxLength": 80,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pinned Version"
    }
  },
  "title": "ScannerToolPatch",
  "type": "object"
}

Responses

StatusMeaning and declared shape
200

Successful Response

application/json · ScannerToolOut
{
  "properties": {
    "artifacts_count": {
      "default": 0,
      "title": "Artifacts Count",
      "type": "integer"
    },
    "available": {
      "default": false,
      "title": "Available",
      "type": "boolean"
    },
    "candidate_manifest_sha256": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Candidate Manifest Sha256"
    },
    "candidate_release_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Candidate Release Id"
    },
    "category": {
      "title": "Category",
      "type": "string"
    },
    "current_version": {
      "title": "Current Version",
      "type": "string"
    },
    "description": {
      "title": "Description",
      "type": "string"
    },
    "enabled": {
      "title": "Enabled",
      "type": "boolean"
    },
    "findings_count": {
      "title": "Findings Count",
      "type": "integer"
    },
    "id": {
      "title": "Id",
      "type": "string"
    },
    "installed_version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Installed Version"
    },
    "last_checked_at": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Checked At"
    },
    "last_error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Error"
    },
    "latest_version": {
      "title": "Latest Version",
      "type": "string"
    },
    "lifecycle": {
      "title": "Lifecycle",
      "type": "string"
    },
    "name": {
      "title": "Name",
      "type": "string"
    },
    "output_format": {
      "title": "Output Format",
      "type": "string"
    },
    "pinned_version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pinned Version"
    },
    "published_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Published At"
    },
    "readiness": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ScannerToolReadinessOut"
        },
        {
          "type": "null"
        }
      ]
    },
    "runtime_ready": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Runtime Ready"
    },
    "source": {
      "title": "Source",
      "type": "string"
    },
    "status": {
      "title": "Status",
      "type": "string"
    },
    "update_available": {
      "title": "Update Available",
      "type": "boolean"
    },
    "updated_at": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Updated At"
    }
  },
  "required": [
    "id",
    "name",
    "category",
    "lifecycle",
    "source",
    "output_format",
    "description",
    "enabled",
    "current_version",
    "latest_version",
    "pinned_version",
    "status",
    "update_available",
    "findings_count",
    "last_checked_at",
    "updated_at"
  ],
  "title": "ScannerToolOut",
  "type": "object"
}
400

Exact host, malformed request or URL credential refusal

application/json · object
{
  "properties": {
    "detail": {
      "type": "string"
    }
  },
  "required": [
    "detail"
  ],
  "type": "object"
}
401

Missing or invalid membership

application/json · object
{
  "properties": {
    "detail": {
      "type": "string"
    }
  },
  "required": [
    "detail"
  ],
  "type": "object"
}
403

Exact origin, CSRF or route authority refusal

application/json · object
{
  "properties": {
    "detail": {
      "type": "string"
    }
  },
  "required": [
    "detail"
  ],
  "type": "object"
}
404

Refresh the collection and verify the resource identity before retrying. See source-linked error catalog.

409

Refresh current revision and identity. A conflicting command must not be blindly repeated. See source-linked error catalog.

422

Validation Error

application/json · HTTPValidationError
{
  "properties": {
    "detail": {
      "items": {
        "$ref": "#/components/schemas/ValidationError"
      },
      "title": "Detail",
      "type": "array"
    }
  },
  "title": "HTTPValidationError",
  "type": "object"
}
429

Authentication rate or connection limit

application/json · object
{
  "properties": {
    "detail": {
      "type": "string"
    }
  },
  "required": [
    "detail"
  ],
  "type": "object"
}

An empty or broad schema preserves the source contract. It is not a promise of an empty response.

Source-linked errors

Literal HTTP errors in this handler and same-file helper call graph, plus control middleware. Dynamic and cross-module failures may add other errors; source links are authoritative.

4 source error observations
StatusSource detailRecovery
409 ↗internal fallback scanners do not select image releasesRefresh current revision and identity. A conflicting command must not be blindly repeated.
422 ↗pinned_version must be the attested curated candidateCorrect the field or semantic validation error. Input values are omitted from control validation errors.
409 ↗scanner candidate has no admitted manifest attestationRefresh current revision and identity. A conflicting command must not be blindly repeated.
404 ↗scanner tool not foundRefresh the collection and verify the resource identity before retrying.

Read the recovery guide

Synthetic examples

These examples validate declared JSON shapes and formats. They contain no real installation data and do not prove runtime admission, cross-field validation, authority or successful work.

Request JSON
{}
Response 200 JSON
{
  "category": "synthetic",
  "current_version": "synthetic",
  "description": "synthetic",
  "enabled": false,
  "findings_count": 1,
  "id": "synthetic",
  "last_checked_at": "2026-01-01T00:00:00Z",
  "latest_version": "synthetic",
  "lifecycle": "synthetic",
  "name": "Synthetic demo",
  "output_format": "synthetic",
  "pinned_version": "synthetic",
  "source": "synthetic",
  "status": "synthetic",
  "update_available": false,
  "updated_at": "2026-01-01T00:00:00Z"
}
Download this service's complete OpenAPI

All referenced models remain in its components section. Browse control model definitions.