Current source preview reference
POST /v1/scanner/tools/check-latest
Check scanner tools. Permissions, parameters, responses and examples.
Read pinned handler: apps/api/kodesec_api/main.py:3882
Check scanner tools
Queue an explicit source-blind catalog check; never contact upstream here.
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.
Parameters and headers
| Name | Location | Contract |
|---|---|---|
X-CSRF-Token | header Conditional / optional | Required for browser mutations with the exact control Origin. Not an IDE capability. Schema |
Idempotency-Key | header Required | Required for command submission; for bulk findings, only the triage action. Stable key for the same exact command, beginning with a letter or digit. Reuse with different content conflicts. Schema |
Request body
No typed JSON body is declared by this handler. That does not rule out source-level request parsing; inspect the pinned implementation, especially for internal connector protocols.
Responses
| Status | Meaning and declared shape |
|---|---|
202 | Successful Response application/json · ScannerLifecycleCommandOut |
400 | Exact host, malformed request or URL credential refusal application/json · object |
401 | Missing or invalid membership application/json · object |
403 | Exact origin, CSRF or route authority refusal application/json · object |
409 | Refresh current revision and identity. A conflicting command must not be blindly repeated. See source-linked error catalog. |
422 | Correct the field or semantic validation error. Input values are omitted from control validation errors. See source-linked error catalog. |
429 | Authentication rate or connection limit application/json · 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.
12 source error observations
| Status | Source detail | Recovery |
|---|---|---|
| 409 ↗ | no previous-good scanner cache generation is available | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 409 ↗ | Dynamic detail; inspect source | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 409 ↗ | Dynamic detail; inspect source | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 409 ↗ | Dynamic detail; inspect source | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 409 ↗ | Dynamic detail; inspect source | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 409 ↗ | Dynamic detail; inspect source | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 409 ↗ | Idempotency-Key is already bound to a different command | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 409 ↗ | Dynamic detail; inspect source | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 422 ↗ | Dynamic detail; inspect source | Correct the field or semantic validation error. Input values are omitted from control validation errors. |
| 409 ↗ | Dynamic detail; inspect source | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 401 ↗ | authentication required | Reconcile the exact browser or IDE membership through the normal owner workflow. |
| 422 ↗ | Idempotency-Key must contain 8-160 ASCII letters, digits, '.', '_', ':', or '-' | Correct the field or semantic validation error. Input values are omitted from control validation errors. |
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.
Response 202 JSON
{
"job": {
"completed_at": "2026-01-01T00:00:00Z",
"created_at": "2026-01-01T00:00:00Z",
"detail": "synthetic",
"error": "synthetic",
"finding_id": 1,
"id": 1,
"kind": "synthetic",
"progress": 1,
"scan_id": 1,
"stage": "synthetic",
"started_at": "2026-01-01T00:00:00Z",
"status": "synthetic",
"title": "synthetic",
"updated_at": "2026-01-01T00:00:00Z"
},
"lifecycle": {
"active_generation": "synthetic",
"completed_at": "2026-01-01T00:00:00Z",
"error_code": "synthetic",
"error_detail": "synthetic",
"job_id": 1,
"job_url": "synthetic",
"previous_generation": "synthetic",
"receipt": {},
"revision": 1,
"scope": "catalog",
"started_at": "2026-01-01T00:00:00Z",
"status": "idle",
"updated_at": "2026-01-01T00:00:00Z"
}
}All referenced models remain in its components section. Browse control model definitions.