Conversation
Closes miaucl#214. The recipes an account has cooked are served by the organize service, which publishes them as `organize:api-cooking-history` in its `.well-known/home` document: GET /organize/{language}/api/cooking-history accept: application/vnd.vorwerk.organize.cooking-history.mobile+json Adds `Cookidoo.get_cooking_history()` returning a list of `CookidooCookingHistoryEntry` (recipe id/name/images/url plus the `cooked_at` timestamp), newest cooked first. Notes on the endpoint, verified against the live API: * It takes no pagination parameters. `?page=` and `?limit=` are accepted but ignored and the whole history comes back in one response, so unlike the collection endpoints this method has no `page` argument. * `totalTime` arrives as a stringified float of seconds ("5100.0"), not the plain int the planning endpoints return; it is normalised to an int here. * Requesting another representation 406s, naming `...cooking-history.mobile+json` and `application/json` as the only acceptable ones. The mobile variant is used, matching the existing custom-list/managed-list call sites. * `OPTIONS` reports `POST,GET,HEAD,OPTIONS` here and `POST,OPTIONS` on `.../cooking-history/multiple`. Only the read path is implemented; recording a cook is left out rather than shipped untested. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015XfphwxLWbVT1k2bxXGRcF
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #265 +/- ##
===========================================
- Coverage 100.00% 99.84% -0.16%
===========================================
Files 8 8
Lines 1259 1305 +46
Branches 113 115 +2
===========================================
+ Hits 1259 1303 +44
- Misses 0 2 +2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #214.
You asked in the issue for someone to find the necessary requests — here they are, plus the implementation.
The endpoint
The organize service publishes it in its own
.well-known/homedocument, so it slots straight into the existing discovery mechanism:Response:
{"userId":"…","entries":[ {"details":{"timestamp":"2026-09-05T05:31:47.529Z"}, "recipe":{"id":"r59322","title":"…","totalTime":"5100.0","type":"VORWERK", "locale":"","assets":{"images":{"square":"…","portrait":"…","landscape":"…"}}}} ]}There is also an
organize:api-cooking-history-multiplerel at.../cooking-history/multiple.What I found probing it
Verified against the live API with a real account:
?page=and?limit=are accepted but ignored — the whole history comes back in one response. Soget_cooking_history()has nopageargument, unlike the collection methods.totalTimeis a stringified float of seconds ("5100.0"), not the plain int the planning endpoints return. Normalised tointhere.Acceptable representations: [application/vnd.vorwerk.organize.cooking-history.mobile+json, application/json]. The mobile variant is used, matching the existing custom-list/managed-list call sites;application/jsonreturns the same entries plus legacy image fields.OPTIONSreportsAllow: POST,GET,HEAD,OPTIONSoncooking-historyandAllow: POST,OPTIONSoncooking-history/multiple.Scope
Only the read path is implemented. The POSTs presumably record a cook, but confirming that means writing to a real account's history, so I left them out rather than shipping something untested — happy to add them if you want to verify separately. Both are documented in
docs/raw-api-requests/get-cooking-history.txt.API
Test
8 new unit tests (happy path, empty history, entry without images, unparsable timestamp, request/auth/parse errors), plus a smoke test asserting shape and ordering. Full suite: 366 passed, ruff and mypy clean. Also verified end-to-end against the live API through live discovery: 16 entries, correctly ordered, all timestamps tz-aware.
The snapshot update in
well-known-snapshots/latest.jsonis the drift-check script's own output after adding the rel toENDPOINT_RELS.🤖 Generated with Claude Code
https://claude.ai/code/session_015XfphwxLWbVT1k2bxXGRcF