{
  "topic": "errors.M2M_CLIENT_NOT_FOUND",
  "path": [
    "errors",
    "M2M_CLIENT_NOT_FOUND"
  ],
  "title": "M2M_CLIENT_NOT_FOUND — referenced technical user does not exist",
  "synopsis": "Returned by `/clients` admin endpoints when the supplied `clientId` does not match any registered M2M client in the caller's tenant:",
  "body": "# errors.M2M_CLIENT_NOT_FOUND\n\n## NAME\n\nM2M_CLIENT_NOT_FOUND — an admin operation referenced a `clientId` that is not present in this tenant's M2M registry.\n\n## SYNOPSIS\n\nHTTP: `404` `Not Found`. Retryable: `no`.\n\n## DESCRIPTION\n\nReturned by `/clients` admin endpoints when the supplied `clientId` does not match any registered M2M client in the caller's tenant:\n\n- `DELETE /clients/{clientId}` — the deletion target does not exist.\n- `PUT /clients/{clientId}/secret` — the rotation target does not exist.\n\nThe detail field carries a generic `M2M client not found` message; internal store phrasing is never leaked into the response body.\n\nNot retryable. Verify the `clientId` via `GET /clients` before retrying the operation.\n\nReturned uniformly for `clientId`s that do not exist AND `clientId`s owned by another tenant; the response does not distinguish — by design, to prevent cross-tenant existence enumeration.\n\n## SEE ALSO\n\n- errors\n- errors.UNAUTHORIZED\n- errors.FORBIDDEN\n",
  "sections": [
    {
      "name": "NAME",
      "body": "M2M_CLIENT_NOT_FOUND — an admin operation referenced a `clientId` that is not present in this tenant's M2M registry."
    },
    {
      "name": "SYNOPSIS",
      "body": "HTTP: `404` `Not Found`. Retryable: `no`."
    },
    {
      "name": "DESCRIPTION",
      "body": "Returned by `/clients` admin endpoints when the supplied `clientId` does not match any registered M2M client in the caller's tenant:\n\n- `DELETE /clients/{clientId}` — the deletion target does not exist.\n- `PUT /clients/{clientId}/secret` — the rotation target does not exist.\n\nThe detail field carries a generic `M2M client not found` message; internal store phrasing is never leaked into the response body.\n\nNot retryable. Verify the `clientId` via `GET /clients` before retrying the operation.\n\nReturned uniformly for `clientId`s that do not exist AND `clientId`s owned by another tenant; the response does not distinguish — by design, to prevent cross-tenant existence enumeration."
    },
    {
      "name": "SEE ALSO",
      "body": "- errors\n- errors.UNAUTHORIZED\n- errors.FORBIDDEN"
    }
  ],
  "see_also": [
    "errors",
    "errors.UNAUTHORIZED",
    "errors.FORBIDDEN"
  ],
  "stability": "stable",
  "actions": []
}
