@Summary Delete API key @ID delete-api-key @Security CoderSessionToken @Tags Users @Param user path string true "User ID, name, or me" @Param keyid path string true "Key ID" format(string) @Success 204 @Router /api/v2/users/{user}/keys/{keyid} [delete]
(rw http.ResponseWriter, r *http.Request)
| 393 | // @Success 204 |
| 394 | // @Router /api/v2/users/{user}/keys/{keyid} [delete] |
| 395 | func (api *API) deleteAPIKey(rw http.ResponseWriter, r *http.Request) { |
| 396 | var ( |
| 397 | ctx = r.Context() |
| 398 | keyID = chi.URLParam(r, "keyid") |
| 399 | auditor = api.Auditor.Load() |
| 400 | aReq, commitAudit = audit.InitRequest[database.APIKey](rw, &audit.RequestParams{ |
| 401 | Audit: *auditor, |
| 402 | Log: api.Logger, |
| 403 | Request: r, |
| 404 | Action: database.AuditActionDelete, |
| 405 | }) |
| 406 | key, err = api.Database.GetAPIKeyByID(ctx, keyID) |
| 407 | ) |
| 408 | if err != nil { |
| 409 | api.Logger.Warn(ctx, "get API Key for audit log") |
| 410 | } |
| 411 | aReq.Old = key |
| 412 | defer commitAudit() |
| 413 | |
| 414 | err = api.Database.DeleteAPIKeyByID(ctx, keyID) |
| 415 | if httpapi.Is404Error(err) { |
| 416 | httpapi.ResourceNotFound(rw) |
| 417 | return |
| 418 | } |
| 419 | if err != nil { |
| 420 | httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ |
| 421 | Message: "Internal error deleting API key.", |
| 422 | Detail: err.Error(), |
| 423 | }) |
| 424 | return |
| 425 | } |
| 426 | |
| 427 | rw.WriteHeader(http.StatusNoContent) |
| 428 | } |
| 429 | |
| 430 | // @Summary Expire API key |
| 431 | // @ID expire-api-key |
nothing calls this directly
no test coverage detected