# Nutzerprofil löschen

Nutzerprofile im Projekt per Benutzerzugriff verwalten.

`DELETE /v1/identify/query?project=my-project&userId=customer_123`

**Authentifizierung:** Benutzer-Access-JWT mit Projektzugriff.

## Query-Parameter

`project` ist der Projekt-Slug. `userId` ist erforderlich und identifiziert den Eintrag.

## Antwort

HTTP `204` ohne Antwort-Body. Ein API-Token berechtigt nur zu den dokumentierten Schreibzugriffen.


## SDK-Nutzung

Die SDK-Beispiele stehen neben den HTTP-Requests unter **SDKs**. Installation und Einrichtung: [JavaScript / TypeScript](/sdks/javascript), [Next.js](/sdks/nextjs) und [Swift](/sdks/swift). Projekt-Slugs werden vom Client ergänzt.

Diese Operation benötigt einen Benutzer-Access-JWT mit Projektzugriff. Der API-Token allein genügt nicht. Next.js-Beispiele gehören in eine Serverumgebung; Swift-Zugänge stammen aus deiner Laufzeitkonfiguration.

**Swift 2.0.0:** Die vorhandene Löschmethode verwendet abweichend den Pfad `/identify/profile`. Verwende für den hier dokumentierten Endpunkt vorerst den gezeigten `URLSession`-Fallback. Ersetze dynamische Query-Werte über `URLComponents` und `URLQueryItem`.

## Request

```bash
curl -X DELETE 'https://api.tracklytic.de/v1/identify/query?project=my-project&userId=customer_123' \
  -H "Authorization: Bearer $TRACKLYTIC_ACCESS_TOKEN"
```

```js
const response = await fetch("https://api.tracklytic.de/v1/identify/query?project=my-project&userId=customer_123", {
  method: "DELETE",
  headers: {
    Authorization: `Bearer ${process.env.TRACKLYTIC_ACCESS_TOKEN}`
  }
});

if (!response.ok) throw new Error(await response.text());
// HTTP 204 enthält keinen Antwort-Body.
```

```python
import json
import os
from urllib.request import Request, urlopen

request = Request(
    "https://api.tracklytic.de/v1/identify/query?project=my-project&userId=customer_123",
    method="DELETE",
    headers={
        "Authorization": "Bearer " + os.environ["TRACKLYTIC_ACCESS_TOKEN"]
    }
)

with urlopen(request) as response:
    assert response.status == 204
```

## SDKs

### JavaScript / TypeScript

```ts
import Tracklytic from 'tracklytic';

const tracklytic = new Tracklytic({
  token: process.env.TRACKLYTIC_API_TOKEN!,
  project: "my-project",
  accessToken: process.env.TRACKLYTIC_ACCESS_TOKEN!,
});

await tracklytic.profiles.delete("customer_123");
```

### Next.js

```ts
import { TracklyticServer } from 'tracklytic-next/server';

const tracklytic = new TracklyticServer({
  token: process.env.TRACKLYTIC_API_TOKEN!,
  project: "my-project",
  accessToken: process.env.TRACKLYTIC_ACCESS_TOKEN!,
});

await tracklytic.profiles.delete("customer_123");
```

### Swift

```swift
import Foundation

// Swift 2.0.0: HTTP-Fallback, siehe Hinweis im Text.
var request = URLRequest(url: URL(string:
    "https://api.tracklytic.de/v1/identify/query?project=my-project&userId=customer_123"
)!)
request.httpMethod = "DELETE"
request.setValue("Bearer \(userAccessToken)", forHTTPHeaderField: "Authorization")
let (_, response) = try await URLSession.shared.data(for: request)
guard let http = response as? HTTPURLResponse, http.statusCode == 204 else {
    throw URLError(.badServerResponse)
}
```