Immutable source snapshot
POST /v1/git/push-protection/{repository_id}/remove
Remove push repository. Permissions, parameters, responses and examples.
This address preserves one reviewed source snapshot. Use the current entry point for the selected documentation version.
Read pinned handler: apps/api/kodesec_api/git_push_policy.py:312
Remove push repository
Forget only an explicitly removed host hook's registration, never its scan data.
Source preview; no stable third-party integration promise. This page makes no request to a local installation.
Authority
Browser operator session or exact IDE capability with project:resolve. 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 |
|---|---|---|
repository_id | path Required | string Schema |
X-CSRF-Token | header Conditional / optional | Required for browser mutations with the exact control Origin. Not an IDE capability. Schema |
Request body
JSON body · required · PushPolicyRemoval
| Field | Type | Presence |
|---|---|---|
confirm_removal | boolean | Required |
expected_revision | integer | Required |
hook_digest | string | null | Required |
Complete declared request schema
{
"additionalProperties": false,
"properties": {
"confirm_removal": {
"title": "Confirm Removal",
"type": "boolean"
},
"expected_revision": {
"maximum": 2147483647,
"minimum": 1,
"title": "Expected Revision",
"type": "integer"
},
"hook_digest": {
"anyOf": [
{
"pattern": "^[0-9a-f]{64}$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Hook Digest"
}
},
"required": [
"expected_revision",
"confirm_removal",
"hook_digest"
],
"title": "PushPolicyRemoval",
"type": "object"
}Responses
| Status | Meaning and declared shape |
|---|---|
200 | Successful Response application/json · object |
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 |
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 |
429 | Authentication rate or connection limit application/json · object |
503 | Check readiness and the recorded job state. A healthy control plane does not prove scanner readiness. See source-linked error catalog. |
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.
13 source error observations
| Status | Source detail | Recovery |
|---|---|---|
| 409 ↗ | {"code":"push_removal_confirmation_required","message":"Confirm removal of this clone's protection. Normal pushes will no longer be checked by Lomo."} | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 409 ↗ | {"code":"push_policy_changed","message":"Protection changed before registration cleanup. The removed hook is not automatically restored; review the current setting."} | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 409 ↗ | {"code":"push_hook_changed","message":"The removed hook does not match the last observed installation. No registration was deleted."} | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 403 ↗ | {"code":"push_member_revoked","message":"This editor is no longer active. No registration cleanup was authorized."} | Review exact origin, CSRF, IDE scope and owner approval. Do not broaden authority. |
| 409 ↗ | {"code":"push_removal_changed","message":"This removal does not match the retained cleanup receipt. Review this exact repository."} | Refresh current revision and identity. A conflicting command must not be blindly repeated. |
| 422 ↗ | {"code":"push_repository_invalid","message":"Select one registered Git repository."} | Correct the field or semantic validation error. Input values are omitted from control validation errors. |
| 403 ↗ | {"code":"push_approval_required","message":"Approve this editor’s repository push-protection request once in the paired browser’s Settings."} | Review exact origin, CSRF, IDE scope and owner approval. Do not broaden authority. |
| 403 ↗ | {"code":"push_member_revoked","message":"This editor’s repository authority is no longer active."} | Review exact origin, CSRF, IDE scope and owner approval. Do not broaden authority. |
| 404 ↗ | {"code":"push_setup_required","message":"Set up push protection for this exact repository in VS Code."} | Refresh the collection and verify the resource identity before retrying. |
| 503 ↗ | {"code":"push_policy_corrupt","message":"Push protection configuration has a different repository identity."} | Check readiness and the recorded job state. A healthy control plane does not prove scanner readiness. |
| 503 ↗ | {"code":"push_policy_corrupt","message":"Push protection configuration needs owner review; no push is approved."} | Check readiness and the recorded job state. A healthy control plane does not prove scanner readiness. |
| 503 ↗ | {"code":"push_removal_corrupt","message":"The removal receipt names another repository."} | Check readiness and the recorded job state. A healthy control plane does not prove scanner readiness. |
| 503 ↗ | {"code":"push_removal_corrupt","message":"This repository's removal receipt needs owner review."} | Check readiness and the recorded job state. A healthy control plane does not prove scanner readiness. |
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
{
"confirm_removal": false,
"expected_revision": 1,
"hook_digest": "0000000000000000000000000000000000000000000000000000000000000000"
}Response 200 JSON
{}All referenced models remain in its components section. Browse control model definitions.