feat(circles): create_circle + add_member_to_circle (v0.7.0)
- acccreatefamily endpoint creates a new circle (returns numeric ID) - accinvite endpoint invites new users by email (familyId, identifier, role, firstname) - fw_client now detects a00.ex errors (was only checking a00.un before) - New modules/circles.py with FamilyRoleTypeEnum constants - SPEC.md updated with acccreatefamily, accinvite, accupdatefamily docs - Note: circle deletion not supported by FW API (metadelete → "delete not supported") - Note: accinvite only works for new (non-existing) FW accounts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -491,11 +491,80 @@ a00.r.r → "true" (String)
|
||||
|
||||
**Verifiziert am:** 2026-04-16 via FW_DEBUG=1
|
||||
|
||||
### `acccreatefamily` – Kreis erstellen
|
||||
POST https://api.familywall.com/api/acccreatefamily
|
||||
|
||||
**Body-Parameter:**
|
||||
|
||||
| Parameter | Pflicht | Wert |
|
||||
|---|---|---|
|
||||
| `name` | ja | Kreis-Name |
|
||||
|
||||
**Response:**
|
||||
```
|
||||
a00.r.r → numerische Kreis-ID als String (z.B. "23447369")
|
||||
→ vollständige metaId: "family/" + id
|
||||
```
|
||||
|
||||
**Hinweise:**
|
||||
- Der Server kapitalisiert den ersten Buchstaben des Namens.
|
||||
- Kreise können über die API nicht gelöscht werden (`metadelete` → "delete not supported").
|
||||
- Vollständige Kreisdaten (incl. Name) via `famlistfamily` im gleichen Session-Call abrufbar.
|
||||
|
||||
**Verifiziert am:** 2026-04-16 via FW_DEBUG=1
|
||||
|
||||
### `accinvite` – Mitglied einladen
|
||||
POST https://api.familywall.com/api/accinvite
|
||||
|
||||
**Body-Parameter:**
|
||||
|
||||
| Parameter | Pflicht | Wert |
|
||||
|---|---|---|
|
||||
| `familyId` | ja | Kreis-metaId (z.B. `"family/23447369"`) |
|
||||
| `identifier` | ja | E-Mail-Adresse des Eingeladenen |
|
||||
| `role` | ja | `"Unknown"` (einziger verifizierter Enum-Wert für `FamilyRoleTypeEnum`) |
|
||||
| `firstname` | ja | Vorname des Eingeladenen |
|
||||
|
||||
**Einschränkung:** Der Endpoint funktioniert nur für Personen, die noch kein
|
||||
Family Wall-Konto haben. Bei bestehenden Accounts antwortet der Server mit:
|
||||
`"This api is now only used to create and invite an account with login only."`
|
||||
|
||||
**Fehler-Struktur** (HTTP 200, aber Fehler unter `a00.ex`):**
|
||||
```json
|
||||
{"a00": {"ex": {"ex": {"FiZClassId": "17", "message": "..."}}}}
|
||||
```
|
||||
→ `fw_client.py` prüft `a00.ex` und wirft `FamilyWallError`.
|
||||
|
||||
**Response (Erfolg):**
|
||||
```
|
||||
a00.r.r → Einladungsobjekt (Struktur unbekannt, da nicht testbar mit Test-Account)
|
||||
```
|
||||
|
||||
**Bekannte Enum-Werte für `role`:**
|
||||
- `"Unknown"` ✓ verifiziert
|
||||
- `"Parent"`, `"Child"` → `FamilyRoleTypeEnum` decode error
|
||||
|
||||
**Verifiziert am:** 2026-04-16 via FW_DEBUG=1
|
||||
|
||||
### `accupdatefamily` – Kreis umbenennen
|
||||
POST https://api.familywall.com/api/accupdatefamily
|
||||
|
||||
**Body-Parameter:**
|
||||
|
||||
| Parameter | Pflicht | Wert |
|
||||
|---|---|---|
|
||||
| `name` | ja | Neuer Kreis-Name |
|
||||
|
||||
**Hinweis:** Aktualisiert immer den PRIMARY Kreis des Accounts (ignoriert `id`/`familyId` Parameter).
|
||||
|
||||
**Verifiziert am:** 2026-04-16 via FW_DEBUG=1
|
||||
|
||||
## Offene Punkte
|
||||
|
||||
- Unlike-Endpoint (Service Worker blockiert Analyse)
|
||||
- Erinnerungen (reminder) – nur Premium-Account
|
||||
- Wiederholungen (repeat) – nur Premium-Account
|
||||
- Sortierung von Kategorien via API
|
||||
- update_recipe (Rezept aktualisieren) – Endpoint: mprecipeput mit metaId
|
||||
- mpadditemtolist (Zutaten aus Rezept → Einkaufsliste)
|
||||
- Einladung bestehender FamilyWall-Nutzer (accinvite nur für neue Accounts)
|
||||
- Kreis-Delete-Endpoint (API: "delete not supported" für family-Objekte)
|
||||
|
||||
Reference in New Issue
Block a user