@mind-your-now/myn 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -6
- package/dist/index.js +1 -1
- package/dist/src/tools/debrief.d.ts +1 -0
- package/dist/src/tools/debrief.d.ts.map +1 -1
- package/dist/src/tools/debrief.js +10 -1
- package/dist/src/tools/debrief.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/skills/myn/SKILL.md +12 -10
- package/skills/myn/references/briefing-api.md +11 -183
- package/skills/myn/references/calendar-api.md +177 -55
- package/skills/myn/references/debrief-api.md +182 -0
- package/skills/myn/references/habits-api.md +37 -55
- package/skills/myn/references/household-api.md +37 -14
- package/skills/myn/references/lists-api.md +80 -46
- package/skills/myn/references/memory-api.md +66 -34
- package/skills/myn/references/planning-api.md +58 -155
- package/skills/myn/references/profile-api.md +54 -61
- package/skills/myn/references/projects-api.md +13 -11
- package/skills/myn/references/search-api.md +20 -48
- package/skills/myn/references/tasks-api.md +47 -40
- package/skills/myn/references/timers-api.md +113 -52
- package/skills/myn/references/ynab-api.md +323 -0
|
@@ -2,49 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
Habit streaks, habit chains, scheduling, and reminders.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Actions
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Reminders: `/api/habits/reminders`
|
|
7
|
+
The `myn_habits` tool supports these actions: `streaks`, `skip`, `chains`, `schedule`, `reminders`.
|
|
9
8
|
|
|
10
9
|
## Endpoints
|
|
11
10
|
|
|
12
|
-
###
|
|
11
|
+
### Get Habit Streak
|
|
13
12
|
|
|
14
13
|
```
|
|
15
|
-
GET /api/
|
|
14
|
+
GET /api/v2/unified-tasks/{habitId}/streak
|
|
16
15
|
```
|
|
17
16
|
|
|
18
|
-
Returns streak data for
|
|
19
|
-
|
|
20
|
-
**Response Fields:**
|
|
21
|
-
|
|
22
|
-
| Field | Type | Description |
|
|
23
|
-
|-------|------|-------------|
|
|
24
|
-
| `habits` | object[] | Array of habit streak objects |
|
|
25
|
-
| `habits[].habitId` | UUID | Habit identifier |
|
|
26
|
-
| `habits[].title` | string | Habit title |
|
|
27
|
-
| `habits[].currentStreak` | number | Current consecutive completions |
|
|
28
|
-
| `habits[].longestStreak` | number | All-time longest streak |
|
|
29
|
-
| `habits[].totalCompletions` | number | Total times completed |
|
|
30
|
-
| `habits[].lastCompletedAt` | datetime | Last completion timestamp |
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
34
|
-
"$MYN_API_URL/api/v1/habit-chains/streaks"
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Get Specific Habit Streak
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
GET /api/v1/habit-chains/{habitId}/streaks
|
|
41
|
-
```
|
|
17
|
+
Returns streak data for a specific habit. Requires `habitId`.
|
|
42
18
|
|
|
43
19
|
**Query Parameters:**
|
|
44
20
|
|
|
45
21
|
| Parameter | Type | Description |
|
|
46
22
|
|-----------|------|-------------|
|
|
47
|
-
| `includeHistory` | boolean | Include day-by-day streak history |
|
|
23
|
+
| `includeHistory` | boolean | Include day-by-day streak history (default: false) |
|
|
48
24
|
|
|
49
25
|
**Response Fields:**
|
|
50
26
|
|
|
@@ -54,7 +30,7 @@ GET /api/v1/habit-chains/{habitId}/streaks
|
|
|
54
30
|
| `currentStreak` | number | Current consecutive completions |
|
|
55
31
|
| `longestStreak` | number | All-time longest streak |
|
|
56
32
|
| `totalCompletions` | number | Total times completed |
|
|
57
|
-
| `lastCompletedAt` | datetime | Last completion timestamp |
|
|
33
|
+
| `lastCompletedAt` | datetime | Last completion timestamp (nullable) |
|
|
58
34
|
| `streakHistory` | object[] | Day-by-day history (only if `includeHistory=true`) |
|
|
59
35
|
| `streakHistory[].date` | date | Calendar date |
|
|
60
36
|
| `streakHistory[].completed` | boolean | Whether the habit was completed that day |
|
|
@@ -62,26 +38,30 @@ GET /api/v1/habit-chains/{habitId}/streaks
|
|
|
62
38
|
```bash
|
|
63
39
|
# Basic streak info
|
|
64
40
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
65
|
-
"$MYN_API_URL/api/
|
|
41
|
+
"$MYN_API_URL/api/v2/unified-tasks/HABIT_ID/streak"
|
|
66
42
|
|
|
67
43
|
# With full history
|
|
68
44
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
69
|
-
"$MYN_API_URL/api/
|
|
45
|
+
"$MYN_API_URL/api/v2/unified-tasks/HABIT_ID/streak?includeHistory=true"
|
|
70
46
|
```
|
|
71
47
|
|
|
48
|
+
**Note:** There is no bulk streaks endpoint. Use the `schedule` action to see all habits.
|
|
49
|
+
|
|
72
50
|
### Skip Habit (Preserve Streak)
|
|
73
51
|
|
|
74
52
|
```
|
|
75
|
-
POST /api/
|
|
53
|
+
POST /api/v2/unified-tasks/{habitId}/skip
|
|
76
54
|
```
|
|
77
55
|
|
|
78
56
|
Marks a habit as skipped for a day without breaking the streak.
|
|
79
57
|
|
|
58
|
+
**Required:** `habitId`
|
|
59
|
+
|
|
80
60
|
**Body Parameters:**
|
|
81
61
|
|
|
82
62
|
| Field | Type | Description |
|
|
83
63
|
|-------|------|-------------|
|
|
84
|
-
| `skipDate` | date | Date to skip (
|
|
64
|
+
| `skipDate` | date | Date to skip (YYYY-MM-DD, default: today) |
|
|
85
65
|
| `reason` | string | Optional reason for skipping |
|
|
86
66
|
|
|
87
67
|
**Response Fields:**
|
|
@@ -94,7 +74,7 @@ Marks a habit as skipped for a day without breaking the streak.
|
|
|
94
74
|
| `newStreakCount` | number | Updated streak count |
|
|
95
75
|
|
|
96
76
|
```bash
|
|
97
|
-
curl -X POST "$MYN_API_URL/api/
|
|
77
|
+
curl -X POST "$MYN_API_URL/api/v2/unified-tasks/HABIT_ID/skip" \
|
|
98
78
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
99
79
|
-H "Content-Type: application/json" \
|
|
100
80
|
-d '{
|
|
@@ -106,7 +86,7 @@ curl -X POST "$MYN_API_URL/api/v1/habit-chains/660e8400-e29b-41d4-a716-446655440
|
|
|
106
86
|
### List All Chains
|
|
107
87
|
|
|
108
88
|
```
|
|
109
|
-
GET /api/
|
|
89
|
+
GET /api/habits/chains
|
|
110
90
|
```
|
|
111
91
|
|
|
112
92
|
Returns all habit chains (grouped sequences of habits).
|
|
@@ -120,17 +100,17 @@ Returns all habit chains (grouped sequences of habits).
|
|
|
120
100
|
| `chains[].name` | string | Chain name |
|
|
121
101
|
| `chains[].habitCount` | number | Number of habits in the chain |
|
|
122
102
|
| `chains[].totalCompletions` | number | Total completions across all habits |
|
|
123
|
-
| `chains[].lastCompletedAt` | datetime | Last completion in this chain |
|
|
103
|
+
| `chains[].lastCompletedAt` | datetime | Last completion in this chain (nullable) |
|
|
124
104
|
|
|
125
105
|
```bash
|
|
126
106
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
127
|
-
"$MYN_API_URL/api/
|
|
107
|
+
"$MYN_API_URL/api/habits/chains"
|
|
128
108
|
```
|
|
129
109
|
|
|
130
110
|
### Get Specific Chain
|
|
131
111
|
|
|
132
112
|
```
|
|
133
|
-
GET /api/
|
|
113
|
+
GET /api/habits/chains/{chainId}/status
|
|
134
114
|
```
|
|
135
115
|
|
|
136
116
|
**Response Fields:**
|
|
@@ -149,13 +129,13 @@ GET /api/v1/habit-chains/{chainId}
|
|
|
149
129
|
|
|
150
130
|
```bash
|
|
151
131
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
152
|
-
"$MYN_API_URL/api/
|
|
132
|
+
"$MYN_API_URL/api/habits/chains/CHAIN_ID/status"
|
|
153
133
|
```
|
|
154
134
|
|
|
155
135
|
### Get Habit Schedule
|
|
156
136
|
|
|
157
137
|
```
|
|
158
|
-
GET /api/
|
|
138
|
+
GET /api/v2/unified-tasks/schedule
|
|
159
139
|
```
|
|
160
140
|
|
|
161
141
|
Returns the habit schedule for the upcoming days.
|
|
@@ -172,7 +152,7 @@ Returns the habit schedule for the upcoming days.
|
|
|
172
152
|
|-------|------|-------------|
|
|
173
153
|
| `schedule` | object[] | Array of daily schedules |
|
|
174
154
|
| `schedule[].date` | date | Calendar date |
|
|
175
|
-
| `schedule[].dayOfWeek` |
|
|
155
|
+
| `schedule[].dayOfWeek` | number | Day of week number |
|
|
176
156
|
| `schedule[].habits` | object[] | Habits due on that day |
|
|
177
157
|
| `schedule[].habits[].habitId` | UUID | Habit identifier |
|
|
178
158
|
| `schedule[].habits[].title` | string | Habit title |
|
|
@@ -184,11 +164,11 @@ Returns the habit schedule for the upcoming days.
|
|
|
184
164
|
```bash
|
|
185
165
|
# Default 7-day schedule
|
|
186
166
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
187
|
-
"$MYN_API_URL/api/
|
|
167
|
+
"$MYN_API_URL/api/v2/unified-tasks/schedule"
|
|
188
168
|
|
|
189
169
|
# 14-day schedule
|
|
190
170
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
191
|
-
"$MYN_API_URL/api/
|
|
171
|
+
"$MYN_API_URL/api/v2/unified-tasks/schedule?days=14"
|
|
192
172
|
```
|
|
193
173
|
|
|
194
174
|
### List All Reminders
|
|
@@ -208,7 +188,7 @@ Returns reminder settings for all habits.
|
|
|
208
188
|
| `reminders[].title` | string | Habit title |
|
|
209
189
|
| `reminders[].enabled` | boolean | Whether the reminder is active |
|
|
210
190
|
| `reminders[].reminderTime` | time | Time of day for the reminder (nullable, HH:mm) |
|
|
211
|
-
| `reminders[].reminderDays` |
|
|
191
|
+
| `reminders[].reminderDays` | number[] | Days the reminder fires |
|
|
212
192
|
|
|
213
193
|
```bash
|
|
214
194
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
@@ -221,9 +201,18 @@ curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
|
221
201
|
GET /api/habits/reminders/{habitId}
|
|
222
202
|
```
|
|
223
203
|
|
|
204
|
+
**Response Fields:**
|
|
205
|
+
|
|
206
|
+
| Field | Type | Description |
|
|
207
|
+
|-------|------|-------------|
|
|
208
|
+
| `habitId` | UUID | Habit identifier |
|
|
209
|
+
| `remindersEnabled` | boolean | Whether reminders are active |
|
|
210
|
+
| `reminderTime` | time | Time of day (nullable, HH:mm) |
|
|
211
|
+
| `reminderDays` | number[] | Days the reminder fires |
|
|
212
|
+
|
|
224
213
|
```bash
|
|
225
214
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
226
|
-
"$MYN_API_URL/api/habits/reminders/
|
|
215
|
+
"$MYN_API_URL/api/habits/reminders/HABIT_ID"
|
|
227
216
|
```
|
|
228
217
|
|
|
229
218
|
### Update Reminder
|
|
@@ -240,18 +229,11 @@ PUT /api/habits/reminders/{habitId}
|
|
|
240
229
|
| `time` | time | Time of day for the reminder (HH:mm) |
|
|
241
230
|
|
|
242
231
|
```bash
|
|
243
|
-
|
|
244
|
-
curl -X PUT "$MYN_API_URL/api/habits/reminders/660e8400-e29b-41d4-a716-446655440001" \
|
|
232
|
+
curl -X PUT "$MYN_API_URL/api/habits/reminders/HABIT_ID" \
|
|
245
233
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
246
234
|
-H "Content-Type: application/json" \
|
|
247
235
|
-d '{
|
|
248
236
|
"enabled": true,
|
|
249
237
|
"time": "07:30"
|
|
250
238
|
}'
|
|
251
|
-
|
|
252
|
-
# Disable a reminder
|
|
253
|
-
curl -X PUT "$MYN_API_URL/api/habits/reminders/660e8400-e29b-41d4-a716-446655440001" \
|
|
254
|
-
-H "X-API-KEY: $MYN_API_KEY" \
|
|
255
|
-
-H "Content-Type: application/json" \
|
|
256
|
-
-d '{"enabled": false}'
|
|
257
239
|
```
|
|
@@ -8,13 +8,14 @@ Household members, invites, and chore management.
|
|
|
8
8
|
|
|
9
9
|
## Getting the Household ID
|
|
10
10
|
|
|
11
|
-
Most endpoints require a `householdId`.
|
|
11
|
+
Most endpoints require a `householdId`. The plugin auto-resolves it via:
|
|
12
12
|
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
# → { "households": [{ "id": "uuid", "name": "Home" }] }
|
|
13
|
+
```
|
|
14
|
+
GET /api/v1/households/current
|
|
16
15
|
```
|
|
17
16
|
|
|
17
|
+
Response: `{ "id": "uuid" }`
|
|
18
|
+
|
|
18
19
|
## Endpoints
|
|
19
20
|
|
|
20
21
|
### List Members
|
|
@@ -78,12 +79,20 @@ curl -X POST "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/invites" \
|
|
|
78
79
|
-d '{"email": "jane@example.com", "role": "member"}'
|
|
79
80
|
```
|
|
80
81
|
|
|
81
|
-
### List Chores
|
|
82
|
+
### List Chores (Today)
|
|
82
83
|
|
|
83
84
|
```
|
|
84
|
-
GET /api/v2/chores?householdId={householdId}
|
|
85
|
+
GET /api/v2/chores/today?householdId={householdId}
|
|
85
86
|
```
|
|
86
87
|
|
|
88
|
+
Returns today's chores for the household.
|
|
89
|
+
|
|
90
|
+
**Query Parameters:**
|
|
91
|
+
|
|
92
|
+
| Parameter | Type | Description |
|
|
93
|
+
|-----------|------|-------------|
|
|
94
|
+
| `householdId` | UUID | Required |
|
|
95
|
+
|
|
87
96
|
**Response:**
|
|
88
97
|
|
|
89
98
|
```json
|
|
@@ -106,22 +115,31 @@ GET /api/v2/chores?householdId={householdId}
|
|
|
106
115
|
|
|
107
116
|
```bash
|
|
108
117
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
109
|
-
"$MYN_API_URL/api/v2/chores?householdId=HOUSEHOLD_ID"
|
|
118
|
+
"$MYN_API_URL/api/v2/chores/today?householdId=HOUSEHOLD_ID"
|
|
110
119
|
```
|
|
111
120
|
|
|
112
121
|
### Get Chore Schedule
|
|
113
122
|
|
|
114
123
|
```
|
|
115
|
-
GET /api/v2/chores/schedule
|
|
124
|
+
GET /api/v2/chores/schedule/range
|
|
116
125
|
```
|
|
117
126
|
|
|
127
|
+
Returns chore schedule for a date range.
|
|
128
|
+
|
|
118
129
|
**Query Parameters:**
|
|
119
130
|
|
|
120
131
|
| Parameter | Type | Description |
|
|
121
132
|
|-----------|------|-------------|
|
|
122
133
|
| `householdId` | UUID | Required |
|
|
123
|
-
| `
|
|
124
|
-
| `
|
|
134
|
+
| `startDate` | date | Start date (YYYY-MM-DD, defaults to today) |
|
|
135
|
+
| `endDate` | date | End date (YYYY-MM-DD, defaults to startDate + 7 days) |
|
|
136
|
+
|
|
137
|
+
**Tool Parameters:**
|
|
138
|
+
|
|
139
|
+
| Parameter | Type | Description |
|
|
140
|
+
|-----------|------|-------------|
|
|
141
|
+
| `date` | date | Specific date (sets both startDate and endDate) |
|
|
142
|
+
| `weekStart` | date | Start of week (endDate computed as +7 days) |
|
|
125
143
|
|
|
126
144
|
**Response:**
|
|
127
145
|
|
|
@@ -137,7 +155,9 @@ GET /api/v2/chores/schedule
|
|
|
137
155
|
"title": "Take out trash",
|
|
138
156
|
"assignedTo": "member-uuid",
|
|
139
157
|
"estimatedMinutes": 10,
|
|
140
|
-
"completed": false
|
|
158
|
+
"completed": false,
|
|
159
|
+
"completedAt": null,
|
|
160
|
+
"completedBy": null
|
|
141
161
|
}
|
|
142
162
|
]
|
|
143
163
|
}
|
|
@@ -149,15 +169,17 @@ GET /api/v2/chores/schedule
|
|
|
149
169
|
|
|
150
170
|
```bash
|
|
151
171
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
152
|
-
"$MYN_API_URL/api/v2/chores/schedule?householdId=HOUSEHOLD_ID&
|
|
172
|
+
"$MYN_API_URL/api/v2/chores/schedule/range?householdId=HOUSEHOLD_ID&startDate=2026-03-01&endDate=2026-03-07"
|
|
153
173
|
```
|
|
154
174
|
|
|
155
175
|
### Complete Chore
|
|
156
176
|
|
|
157
177
|
```
|
|
158
|
-
POST /api/v2/chores/{choreId}/complete
|
|
178
|
+
POST /api/v2/chores/instances/{choreId}/complete
|
|
159
179
|
```
|
|
160
180
|
|
|
181
|
+
**Uses read-before-write guard** — reads chore instance state hash before completing.
|
|
182
|
+
|
|
161
183
|
**Body:**
|
|
162
184
|
|
|
163
185
|
| Field | Type | Required | Description |
|
|
@@ -168,8 +190,9 @@ POST /api/v2/chores/{choreId}/complete
|
|
|
168
190
|
**Response:** `{ choreId, completed, completedAt, nextDueDate? }`
|
|
169
191
|
|
|
170
192
|
```bash
|
|
171
|
-
curl -X POST "$MYN_API_URL/api/v2/chores/CHORE_ID/complete" \
|
|
193
|
+
curl -X POST "$MYN_API_URL/api/v2/chores/instances/CHORE_ID/complete" \
|
|
172
194
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
195
|
+
-H "X-MYN-State-Hash: abc123" \
|
|
173
196
|
-H "Content-Type: application/json" \
|
|
174
197
|
-d '{"note": "Both bins taken to curb"}'
|
|
175
198
|
```
|
|
@@ -6,15 +6,16 @@ Grocery and shopping list management scoped to households.
|
|
|
6
6
|
|
|
7
7
|
`/api/v1/households/{householdId}/grocery-list`
|
|
8
8
|
|
|
9
|
+
## Actions
|
|
10
|
+
|
|
11
|
+
The `myn_lists` tool supports these actions: `get`, `add`, `update`, `toggle`, `delete`, `delete_checked`, `bulk_add`, `convert_to_tasks`.
|
|
12
|
+
|
|
9
13
|
## Prerequisites
|
|
10
14
|
|
|
11
|
-
All list endpoints require a `householdId`.
|
|
15
|
+
All list endpoints require a `householdId`. The plugin auto-resolves it via:
|
|
12
16
|
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
16
|
-
"$MYN_API_URL/api/v1/customers/me"
|
|
17
|
-
# Response includes: households[0].id
|
|
17
|
+
```
|
|
18
|
+
GET /api/v1/households/current
|
|
18
19
|
```
|
|
19
20
|
|
|
20
21
|
## Endpoints
|
|
@@ -31,7 +32,7 @@ Returns the full grocery list for the household.
|
|
|
31
32
|
|
|
32
33
|
| Field | Type | Description |
|
|
33
34
|
|-------|------|-------------|
|
|
34
|
-
| `
|
|
35
|
+
| `success` | boolean | Operation success |
|
|
35
36
|
| `items` | object[] | Array of list items |
|
|
36
37
|
| `items[].id` | UUID | Item identifier |
|
|
37
38
|
| `items[].name` | string | Item name |
|
|
@@ -40,19 +41,22 @@ Returns the full grocery list for the household.
|
|
|
40
41
|
| `items[].notes` | string | Additional notes (nullable) |
|
|
41
42
|
| `items[].checked` | boolean | Whether the item has been picked up |
|
|
42
43
|
| `items[].addedAt` | datetime | When the item was added |
|
|
43
|
-
| `items[].addedBy` |
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
44
|
+
| `items[].addedBy` | number | User ID who added the item |
|
|
45
|
+
| `items[].addedByName` | string | Name of the user who added the item (nullable) |
|
|
46
|
+
| `items[].position` | number | Sort position |
|
|
47
|
+
| `items[].householdId` | UUID | Household ID |
|
|
48
|
+
| `items[].createdAt` | datetime | Creation timestamp |
|
|
49
|
+
| `items[].updatedAt` | datetime | Last update timestamp |
|
|
46
50
|
|
|
47
51
|
```bash
|
|
48
52
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
49
|
-
"$MYN_API_URL/api/v1/households/
|
|
53
|
+
"$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list"
|
|
50
54
|
```
|
|
51
55
|
|
|
52
56
|
### Add Item
|
|
53
57
|
|
|
54
58
|
```
|
|
55
|
-
POST /api/v1/households/{householdId}/grocery-list
|
|
59
|
+
POST /api/v1/households/{householdId}/grocery-list
|
|
56
60
|
```
|
|
57
61
|
|
|
58
62
|
**Body Parameters:**
|
|
@@ -64,15 +68,10 @@ POST /api/v1/households/{householdId}/grocery-list/items
|
|
|
64
68
|
| `quantity` | string | Optional quantity (e.g., `2 lbs`, `1 gallon`) |
|
|
65
69
|
| `notes` | string | Optional notes |
|
|
66
70
|
|
|
67
|
-
**Response
|
|
68
|
-
|
|
69
|
-
| Field | Type | Description |
|
|
70
|
-
|-------|------|-------------|
|
|
71
|
-
| `itemId` | UUID | New item identifier |
|
|
72
|
-
| `added` | boolean | Whether the item was successfully added |
|
|
71
|
+
**Response:** `{ success, item: { id, name, category?, quantity?, notes?, checked, addedAt, addedByName? } }`
|
|
73
72
|
|
|
74
73
|
```bash
|
|
75
|
-
curl -X POST "$MYN_API_URL/api/v1/households/
|
|
74
|
+
curl -X POST "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list" \
|
|
76
75
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
77
76
|
-H "Content-Type: application/json" \
|
|
78
77
|
-d '{
|
|
@@ -83,37 +82,83 @@ curl -X POST "$MYN_API_URL/api/v1/households/880e8400-e29b-41d4-a716-44665544000
|
|
|
83
82
|
}'
|
|
84
83
|
```
|
|
85
84
|
|
|
86
|
-
###
|
|
85
|
+
### Update Item
|
|
87
86
|
|
|
88
87
|
```
|
|
89
|
-
PATCH /api/v1/households/{householdId}/grocery-list/
|
|
88
|
+
PATCH /api/v1/households/{householdId}/grocery-list/{itemId}
|
|
90
89
|
```
|
|
91
90
|
|
|
91
|
+
Updates an existing grocery list item. At least one field is required.
|
|
92
|
+
|
|
92
93
|
**Body Parameters:**
|
|
93
94
|
|
|
94
95
|
| Field | Type | Description |
|
|
95
96
|
|-------|------|-------------|
|
|
96
|
-
| `
|
|
97
|
+
| `name` | string | New item name |
|
|
98
|
+
| `category` | string | New category |
|
|
99
|
+
| `quantity` | string | New quantity |
|
|
100
|
+
| `notes` | string | New notes |
|
|
97
101
|
|
|
98
|
-
**Response
|
|
102
|
+
**Response:** `{ success, item: { id, name, category?, quantity?, notes?, checked } }`
|
|
99
103
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
```bash
|
|
105
|
+
curl -X PATCH "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/ITEM_ID" \
|
|
106
|
+
-H "X-API-KEY: $MYN_API_KEY" \
|
|
107
|
+
-H "Content-Type: application/json" \
|
|
108
|
+
-d '{"quantity": "6", "notes": "Updated quantity"}'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Toggle Item Checked
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
PATCH /api/v1/households/{householdId}/grocery-list/{itemId}/toggle
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Toggles the checked state of a grocery list item.
|
|
118
|
+
|
|
119
|
+
**Response:** `{ success, item: { id, name, checked }, checked }`
|
|
104
120
|
|
|
105
121
|
```bash
|
|
106
|
-
|
|
107
|
-
curl -X PATCH "$MYN_API_URL/api/v1/households/880e8400-e29b-41d4-a716-446655440003/grocery-list/items/990e8400-e29b-41d4-a716-446655440004" \
|
|
122
|
+
curl -X PATCH "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/ITEM_ID/toggle" \
|
|
108
123
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
109
124
|
-H "Content-Type: application/json" \
|
|
110
|
-
-d '{
|
|
125
|
+
-d '{}'
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Delete Item
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
DELETE /api/v1/households/{householdId}/grocery-list/{itemId}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Deletes a single grocery list item.
|
|
135
|
+
|
|
136
|
+
**Response:** `{ success, deleted }`
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
curl -X DELETE "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/ITEM_ID" \
|
|
140
|
+
-H "X-API-KEY: $MYN_API_KEY"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Delete Checked Items
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
DELETE /api/v1/households/{householdId}/grocery-list/checked
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Deletes all checked (completed) items from the grocery list.
|
|
150
|
+
|
|
151
|
+
**Response:** `{ success, deletedCount, undoAvailable }`
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
curl -X DELETE "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/checked" \
|
|
155
|
+
-H "X-API-KEY: $MYN_API_KEY"
|
|
111
156
|
```
|
|
112
157
|
|
|
113
158
|
### Bulk Add Items
|
|
114
159
|
|
|
115
160
|
```
|
|
116
|
-
POST /api/v1/households/{householdId}/grocery-list/
|
|
161
|
+
POST /api/v1/households/{householdId}/grocery-list/bulk
|
|
117
162
|
```
|
|
118
163
|
|
|
119
164
|
**Body Parameters:**
|
|
@@ -125,15 +170,10 @@ POST /api/v1/households/{householdId}/grocery-list/items/bulk
|
|
|
125
170
|
| `items[].category` | string | Optional category |
|
|
126
171
|
| `items[].quantity` | string | Optional quantity |
|
|
127
172
|
|
|
128
|
-
**Response
|
|
129
|
-
|
|
130
|
-
| Field | Type | Description |
|
|
131
|
-
|-------|------|-------------|
|
|
132
|
-
| `addedCount` | number | Number of items added |
|
|
133
|
-
| `itemIds` | UUID[] | IDs of the newly created items |
|
|
173
|
+
**Response:** `{ success, items: [{ id, name, category?, quantity?, checked }], count }`
|
|
134
174
|
|
|
135
175
|
```bash
|
|
136
|
-
curl -X POST "$MYN_API_URL/api/v1/households/
|
|
176
|
+
curl -X POST "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/bulk" \
|
|
137
177
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
138
178
|
-H "Content-Type: application/json" \
|
|
139
179
|
-d '{
|
|
@@ -161,16 +201,10 @@ Converts grocery list items into MYN tasks (e.g., for a shopping trip).
|
|
|
161
201
|
| `uncheckedOnly` | boolean | Only convert unchecked items (default: true) |
|
|
162
202
|
| `priority` | string | Priority for created tasks (e.g., `OPPORTUNITY_NOW`) |
|
|
163
203
|
|
|
164
|
-
**Response
|
|
165
|
-
|
|
166
|
-
| Field | Type | Description |
|
|
167
|
-
|-------|------|-------------|
|
|
168
|
-
| `convertedCount` | number | Number of items converted to tasks |
|
|
169
|
-
| `taskIds` | UUID[] | IDs of the created tasks |
|
|
204
|
+
**Response:** `{ success, tasks: [{ id, title }], count }`
|
|
170
205
|
|
|
171
206
|
```bash
|
|
172
|
-
|
|
173
|
-
curl -X POST "$MYN_API_URL/api/v1/households/880e8400-e29b-41d4-a716-446655440003/grocery-list/convert-to-tasks" \
|
|
207
|
+
curl -X POST "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/convert-to-tasks" \
|
|
174
208
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
175
209
|
-H "Content-Type: application/json" \
|
|
176
210
|
-d '{
|