# Events auflisten

Events eines Projekts filtern und seitenweise abrufen.

`GET /v1/event/query?project=my-project&channel=deployments&limit=20&page=1`

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

## Query-Parameter

`project` (erforderlicher Slug), `channel` (optionaler Slug), `event`, `userId`, `logLevel`, `badgeTitle`, `badgeColor`, `search`, `status`, `notify`, `deleted`, `sortBy`, `limit`, `page`.

`status`, `notify` und `deleted` unterstützen kommaseparierte Werte. Beispiel: `status=failed,waiting`. `sortBy` verwendet das Format `timestamp:desc`. `page` und `limit` steuern die Paginierung. In `results` stehen die Events; die Listenmetadaten beschreiben die aktuelle Seite.

## Antwort

Das Beispiel zeigt eine leere Liste. Ein API-Token zum Schreiben reicht für diesen Lesezugriff nicht aus.


## 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.

## Request

```bash
curl -X GET 'https://api.tracklytic.de/v1/event/query?project=my-project&channel=deployments&limit=20&page=1' \
  -H "Authorization: Bearer $TRACKLYTIC_ACCESS_TOKEN"
```

```js
const response = await fetch("https://api.tracklytic.de/v1/event/query?project=my-project&channel=deployments&limit=20&page=1", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.TRACKLYTIC_ACCESS_TOKEN}`
  }
});

if (!response.ok) throw new Error(await response.text());
const result = await response.json();
```

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

request = Request(
    "https://api.tracklytic.de/v1/event/query?project=my-project&channel=deployments&limit=20&page=1",
    method="GET",
    headers={
        "Authorization": "Bearer " + os.environ["TRACKLYTIC_ACCESS_TOKEN"]
    }
)

with urlopen(request) as response:
    result = json.load(response)
```

## 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!,
});

const page = await tracklytic.events.list({ channel: "deployments", limit: 20, page: 1 });
console.log(page.results, page.totalPages);
```

### 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!,
});

const page = await tracklytic.events.list({ channel: "deployments", limit: 20, page: 1 });
console.log(page.results, page.totalPages);
```

### Swift

```swift
import Foundation
import Tracklytic

let tracklytic = TracklyticClient(
    project: "my-project",
    token: apiToken,
    accessToken: userAccessToken
)

let page = try await tracklytic.getEvents(query: [
    "channel": "deployments", "limit": "20", "page": "1"
])
let events = page["results"]?.value
```

## Response (200)

```json
{
  "results": [],
  "page": 1,
  "limit": 20,
  "totalPages": 0,
  "totalResults": 0
}
```