Update an application

PATCH /v1/applications/{application_id} · permission applications:write

Updates an application with a JSON Merge Patch (application/merge-patch+json, RFC 7396): fields you send change, null clears a nullable field, arrays are replaced as a whole. If-Match is required: without it the request fails with 428, with a stale version with 412. The immutable fields key, app_type, registration_source and owner_org_id return 422 with code immutable if you send a different value. A patch that changes nothing leaves the application and its version untouched.

Request

Headers: If-Match: "<version>" (required), Content-Type: application/merge-patch+json.

Path: application_id (app_…).

Body: any subset of the writable fields listed on the create page (key, name, app_type, … connection_ids). null clears a field that is nullable; arrays replace the whole list; jwks is replaced as an object. Read-only fields (id, client_id, version, created_at, updated_at, last_token_issued_at, last_token_asn) are rejected.

Response

200 OK with the updated application and the new ETag.

Errors

HTTP code When
401 unauthenticated The key is missing, invalid or revoked.
403 insufficient_permissions The key lacks the required permission.
404 not_found The application does not exist in this environment.
428 precondition_required If-Match header is missing.
412 precondition_failed The version in If-Match is stale.
422 validation_failed A field is invalid or an immutable field changed.
422 policy_conflict allowed_first_factors has no method in common with the environment's first-factor set.
400 unknown_field The patch has a field that is not part of the schema (including read-only fields such as id).
415 unsupported_media_type Content-Type is not application/merge-patch+json.

Example

curl -X PATCH https://api.eu.keenauth.com/v1/applications/app_6f8d0cjgbmf0gtn2rg6pscp3cg \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "1"' \
  -d '{"name":"Portal v2","login_host":null}'