> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # parse_post_prompt_data > Return post_prompt_data as a plain dict, whichever of its three shapes arrived. [ref-post-prompt]: /docs/server-sdks/reference/python/core/post-prompt [strip]: /docs/server-sdks/reference/python/core/post-prompt/strip-json-fence Return `post_prompt_data` as a plain dict, whichever shape it arrived in: * A `{"parsed": {...}}` or `{"parsed": [ {...} ]}` wrapper is unwrapped first. * A flat object with real keys is returned as-is, minus `raw` and `parsed`. * A `{"raw": "..."}` string is unfenced with [`strip_json_fence()`][strip] and parsed as JSON. Prose that isn't JSON becomes `{"summary": ""}`. Never raises. A malformed summary degrades to `{}` rather than failing the request that delivered it. ## Parameters **`data`** `Any` — required The `post_prompt_data` value from a post-prompt body. --- ## Returns `dict[str, Any]` -- The summary object, or `{}` when there is nothing usable. ## Example ```python {3} from signalwire.core.post_prompt import parse_post_prompt_data summary = parse_post_prompt_data(raw_body.get("post_prompt_data")) print(summary.get("intent")) ``` Part of the [post-prompt normalization][ref-post-prompt] module. > Return post_prompt_data as a plain dict, whichever of its three shapes arrived.