{"auth":{"derive":[{"from":"dom","name":"user_id","regex":"[\"']?userId[\"']?\\s*[:=]\\s*[\"']?([0-9]{3,})","required":false,"selector":"script:not([src])"}]},"description":"UNTESTED, needs login: lists the logged-in user's Kleinanzeigen conversations (listing title, other party, last message preview, unread flag, time) from the messagebox, newest first. Pairs with message-seller for 'did the seller answer?'.","effect":"read","id":"kleinanzeigen.de/my-messages","keywords":["kleinanzeigen","nachrichten","postfach","antwort verkäufer","messages","inbox","did the seller reply"],"login_check":{"expect":{"login_required_if":{"status":[401,403]},"status":[200]},"id":"login_check","request":{"headers":{"Accept":"application/json"},"method":"GET","url":"/m-access-token.json"}},"output":{"schema":{"properties":{"conversations":{"items":{"properties":{"id":{"type":"string"},"last_message":{"description":"Preview of the latest message","type":["string","null"]},"listing_id":{"type":["string","null"]},"listing_title":{"type":["string","null"]},"other_party":{"type":["string","null"]},"unread":{"type":"boolean"},"updated":{"type":["string","null"]}},"type":"object"},"type":"array"},"messages_url":{"format":"uri","type":"string"}},"required":["conversations"],"type":"object"},"value":"let $u = params.unread_only in {conversations: steps.conversations[0].items[?!$u || unread], messages_url: 'https://www.kleinanzeigen.de/m-nachrichten.html'}"},"params":{"additionalProperties":false,"properties":{"limit":{"default":25,"enum":[10,25,50],"type":"integer"},"unread_only":{"default":false,"type":"boolean"}},"type":"object"},"provenance":{"method":"manual","notes":"UNTESTED. Verified logged out only: /m-access-token.json → 401; https://gateway.kleinanzeigen.de/messagebox/api/users/{id}/conversations → 401 with access-control-allow-origin https://www.kleinanzeigen.de + allow-credentials. The user id comes from the token response or the page (regex), whichever exists. Token JSON keys, conversation path and fields are unverified; record 'Nachrichten' with tools/har2recipe. The bearer travels as a step value, not a derived var: C1 should treat it as secret (request filed).","recorded_at":"2026-11-07T12:41:00+01:00","recorded_by":"C4"},"requires_login":true,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"DE","id":"kleinanzeigen.de","language":"de","login_url":"https://www.kleinanzeigen.de/m-einloggen.html","name":"Kleinanzeigen","origin":"https://www.kleinanzeigen.de","origins":["https://www.kleinanzeigen.de","https://gateway.kleinanzeigen.de"]},"steps":[{"description":"Bearer for the messagebox gateway (401 when logged out, verified). Treat as secret: never in output.","expect":{"content_type":"json","login_required_if":{"status":[401,403]},"status":[200]},"extract":{"json":{"bearer":"token || access_token || accessToken","uid":"userId || user_id || `null`"}},"id":"token","request":{"headers":{"Accept":"application/json"},"method":"GET","url":"/m-access-token.json"}},{"description":"gateway.kleinanzeigen.de answers 401 logged out and allows credentialed CORS from www (verified). Path and fields unverified.","expect":{"content_type":"json","login_required_if":{"status":[401,403]},"status":[200]},"extract":{"json":{"items":"(conversations || _embedded.conversations || @)[].{id: to_string(id), listing_title: adTitle || ad.title || `null`, listing_id: to_string(adId || ad.id || ''), other_party: (role == 'Buyer' && sellerName || buyerName) || otherParticipantName || `null`, last_message: textShortTrimmed || lastMessage.text || `null`, unread: unread == `true` || unseen > `0`, updated: receivedDate || lastMessageDate || `null`}"}},"foreach":{"as":"u","in":"[{uid: steps.token.uid || vars.user_id}]","max":1},"id":"conversations","request":{"headers":{"Accept":"application/json","Authorization":"Bearer {{steps.token.bearer}}"},"method":"GET","query":{"page":"0","size":"{{params.limit}}"},"url":"https://gateway.kleinanzeigen.de/messagebox/api/users/{{u.uid}}/conversations"}}],"task":"List the user's Kleinanzeigen conversations with the latest messages","tos":{"notes":"Reads the user's own inbox from their own session, on request. Message contents stay on the device.","reviewed":false},"verify":{"checks":["output.conversations != `null`"],"example_params":{}},"version":1}