> For the complete documentation index, see [llms.txt](https://docs.adaptria.locaria.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.adaptria.locaria.com/internal-api/reference/complaints.md).

# 🗣 Complaints

### Complaints

Browse complaints linked to entities (projects, jobs, etc.), the caller's own and assigned complaints, and the admin dashboard. Internal-only — client API keys receive `403`.

## 🗣 Get complaints for an entity

> Mirrors \`GET /api/complaints/{entityType}/{entityId}\`.

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🗣 Complaints","description":"## Complaints\n\nBrowse complaints linked to entities (projects, jobs, etc.), the caller's own and assigned complaints, and the admin dashboard. Internal-only — client API keys receive `403`.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicComplaintsListResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["success","data"]}}},"paths":{"/api/public/v1/complaints/{entityType}/{entityId}":{"get":{"summary":"🗣 Get complaints for an entity","description":"Mirrors `GET /api/complaints/{entityType}/{entityId}`.","tags":["🗣 Complaints"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"entityType","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"entityId","in":"path"}],"responses":{"200":{"description":"Complaints","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicComplaintsListResponse"}}}},"403":{"description":"Forbidden"}}}}}}
```

## GET /api/public/v1/complaints/{entityType}/{entityId}/summary

> 🗣 Get complaint summary for an entity

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🗣 Complaints","description":"## Complaints\n\nBrowse complaints linked to entities (projects, jobs, etc.), the caller's own and assigned complaints, and the admin dashboard. Internal-only — client API keys receive `403`.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicComplaintSummaryResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}},"paths":{"/api/public/v1/complaints/{entityType}/{entityId}/summary":{"get":{"summary":"🗣 Get complaint summary for an entity","tags":["🗣 Complaints"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"entityType","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"entityId","in":"path"}],"responses":{"200":{"description":"Summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicComplaintSummaryResponse"}}}},"403":{"description":"Forbidden"}}}}}}
```

## GET /api/public/v1/complaints/my

> 🗣 Get user's own complaints

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🗣 Complaints","description":"## Complaints\n\nBrowse complaints linked to entities (projects, jobs, etc.), the caller's own and assigned complaints, and the admin dashboard. Internal-only — client API keys receive `403`.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicComplaintsListResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["success","data"]}}},"paths":{"/api/public/v1/complaints/my":{"get":{"summary":"🗣 Get user's own complaints","tags":["🗣 Complaints"],"responses":{"200":{"description":"Complaints","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicComplaintsListResponse"}}}},"403":{"description":"Forbidden"}}}}}}
```

## GET /api/public/v1/complaints/assigned

> 🗣 Get complaints assigned to current user

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🗣 Complaints","description":"## Complaints\n\nBrowse complaints linked to entities (projects, jobs, etc.), the caller's own and assigned complaints, and the admin dashboard. Internal-only — client API keys receive `403`.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicComplaintsListResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["success","data"]}}},"paths":{"/api/public/v1/complaints/assigned":{"get":{"summary":"🗣 Get complaints assigned to current user","tags":["🗣 Complaints"],"responses":{"200":{"description":"Complaints","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicComplaintsListResponse"}}}},"403":{"description":"Forbidden"}}}}}}
```

## 🗣 Get complaint dashboard data (admin)

> Admin-only — client API keys → 403.

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🗣 Complaints","description":"## Complaints\n\nBrowse complaints linked to entities (projects, jobs, etc.), the caller's own and assigned complaints, and the admin dashboard. Internal-only — client API keys receive `403`.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicComplaintSummaryResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}},"paths":{"/api/public/v1/complaints/dashboard":{"get":{"summary":"🗣 Get complaint dashboard data (admin)","description":"Admin-only — client API keys → 403.","tags":["🗣 Complaints"],"responses":{"200":{"description":"Dashboard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicComplaintSummaryResponse"}}}},"403":{"description":"Forbidden"}}}}}}
```

## GET /api/public/v1/complaints/{complaintId}

> 🗣 Get complaint by ID

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"🗣 Complaints","description":"## Complaints\n\nBrowse complaints linked to entities (projects, jobs, etc.), the caller's own and assigned complaints, and the admin dashboard. Internal-only — client API keys receive `403`.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicComplaintDetailResponse":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","additionalProperties":{}}},"required":["success","data"]}}},"paths":{"/api/public/v1/complaints/{complaintId}":{"get":{"summary":"🗣 Get complaint by ID","tags":["🗣 Complaints"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"complaintId","in":"path"}],"responses":{"200":{"description":"Complaint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicComplaintDetailResponse"}}}},"403":{"description":"Forbidden"},"404":{"description":"Not found"}}}}}}
```
