fix(lists): circle scope support for get_lists, create_list, delete_list (v0.7.1)
- get_lists(scope): API scope parameter now used server-side; accepts circle
metaId ("family/XXXX") or circle name; returns circle_id field per list
- create_list(circle_id): new optional param; passes as API scope param
- delete_list: derives circle from list metaId and passes scope for
secondary-circle lists
- Added _circle_id_from_list_id() helper (taskList/FAMNUM_LISTNUM -> family/FAMNUM)
- SPEC.md: documented scope param for taskgettasklists, taskcreatelist, taskdeletelist
- Verified: familyId/circleId/id params ignored by API, only scope works
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -292,6 +292,13 @@ POST https://api.familywall.com/api/taskcreatelist
|
||||
| `sharedToAll` | nein | `"true"` / `"false"` (default: `"true"`) |
|
||||
| `color` | nein | Hex-Farbwert z.B. `"#4784EC"` |
|
||||
| `emoji` | nein | Unicode-Emoji z.B. `"🛒"` |
|
||||
| `scope` | nein | Kreis-metaId z.B. `"family/23447378"` (ohne scope → primärer Kreis) |
|
||||
|
||||
**Scope-Verhalten:**
|
||||
- Ohne `scope`: Liste wird im primären Kreis des Accounts erstellt
|
||||
- Mit `scope=family/XXXX`: Liste wird im angegebenen Kreis erstellt
|
||||
- Die `metaId` der neuen Liste kodiert den Kreis: `taskList/CIRCLENUM_LISTNUM`
|
||||
- Parameter `familyId`, `circleId`, `family`, `id` → werden ignoriert, nur `scope` wirkt
|
||||
|
||||
**Response:**
|
||||
```
|
||||
@@ -302,6 +309,7 @@ a00.r.r → vollständiges Listen-Objekt
|
||||
.sharedToAll → "true" / "false"
|
||||
.emoji → Unicode-Emoji (fehlt wenn nicht gesetzt)
|
||||
.color → Hex-Farbwert z.B. "#E53935" (fehlt wenn nicht gesetzt)
|
||||
.familyId → Kreis-metaId des erstellten Liste
|
||||
.rights.canDelete → "true" (user-created lists)
|
||||
```
|
||||
|
||||
@@ -312,9 +320,10 @@ POST https://api.familywall.com/api/taskdeletelist
|
||||
|
||||
**Body-Parameter:**
|
||||
|
||||
| Parameter | Wert |
|
||||
|---|---|
|
||||
| `id` | Listen-metaId ⚠️ nicht `listId` oder `taskListId`! |
|
||||
| Parameter | Pflicht | Wert |
|
||||
|---|---|---|
|
||||
| `id` | ja | Listen-metaId ⚠️ nicht `listId` oder `taskListId`! |
|
||||
| `scope` | nein | Kreis-metaId (erforderlich für sekundäre Kreise) |
|
||||
|
||||
**Response:**
|
||||
```
|
||||
@@ -324,20 +333,32 @@ a00.r.r → "true" (String)
|
||||
**Hinweis:** Löscht die Liste und alle enthaltenen Tasks unwiderruflich.
|
||||
System-Listen (`rights.canDelete` fehlt oder `null`) sind nicht löschbar.
|
||||
MCP-Server prüft dies vor dem Löschen via `taskgettasklists`.
|
||||
Für Listen in sekundären Kreisen muss `scope=family/XXXX` mitgeschickt werden.
|
||||
|
||||
**Verifiziert am:** 2026-04-16 via FW_DEBUG=1
|
||||
|
||||
### `taskgettasklists` – Listen abrufen
|
||||
POST https://api.familywall.com/api/taskgettasklists
|
||||
|
||||
**Body-Parameter:** keine
|
||||
**Body-Parameter:**
|
||||
|
||||
| Parameter | Pflicht | Wert |
|
||||
|---|---|---|
|
||||
| `scope` | nein | Kreis-metaId z.B. `"family/23447378"` (ohne scope → primärer Kreis) |
|
||||
|
||||
**Scope-Verhalten:**
|
||||
- Ohne `scope`: Nur Listen des primären Kreises werden zurückgegeben
|
||||
- Mit `scope=family/XXXX`: Nur Listen des angegebenen Kreises
|
||||
- Es gibt keinen servereitigen Filter für mehrere Kreise gleichzeitig
|
||||
- Andere Parameter (`familyId`, `circleId`, etc.) werden ignoriert
|
||||
|
||||
**Response-Struktur:**
|
||||
```
|
||||
a00.r.r[] → Liste aller Task-Listen
|
||||
a00.r.r[] → Liste aller Task-Listen des Kreises
|
||||
.metaId → Listen-ID (z.B. "taskList/23431854_29740942")
|
||||
.name → Systembezeichnung oder Benutzer-Name
|
||||
.taskListType → SHOPPING_LIST oder TODOS
|
||||
.familyId → Kreis-metaId (z.B. "family/23431854")
|
||||
.emoji → Unicode-Emoji oder "" (leerer String = kein Emoji)
|
||||
.color → Hex-Farbwert z.B. "#E53935" (fehlt wenn nicht gesetzt)
|
||||
.remainingTaskNumber → offene Tasks (String)
|
||||
@@ -348,6 +369,9 @@ a00.r.r[] → Liste aller Task-Listen
|
||||
.systemId → vorhanden nur bei Systemlisten (z.B. "-10", "-11")
|
||||
```
|
||||
|
||||
**metaId-Encoding:** `taskList/<family_num>_<list_num>` — die `family_num` kodiert den Kreis.
|
||||
Beispiel: `taskList/23431854_29740942` gehört zu `family/23431854`.
|
||||
|
||||
**Hinweis emoji/color:**
|
||||
- `emoji`: Systemlisten liefern `""`, user-created Listen liefern den Emoji-String
|
||||
oder `""` wenn kein Emoji gesetzt. Normalisierung: `""` → `null` im MCP-Server.
|
||||
|
||||
Reference in New Issue
Block a user