{"info":{"_postman_id":"4e97faa9-c587-4199-8d51-bfa226e93b60","name":"Health Tips AI Agent","description":"<html><head></head><body><p>Health Tips AI Agent collection provides endpoints for interacting with the HealthAI assistant via a JSON-RPC style API. Use the requests in this collection to validate health agent availability, execute message workflows, and inspect artifacts. Configure base_url via environment or globals.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"38639286","collectionId":"4e97faa9-c587-4199-8d51-bfa226e93b60","publishedId":"2sB3WpPzvj","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-10-31T14:27:21.000Z"},"item":[{"name":"Health Check","id":"6b357810-9c55-412b-97d5-2a515c21b919","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"{{base_url}}/health","description":"<p><strong>Purpose:</strong></p>\n<p>This GET request checks the health status of the Health Tips AI Agent service. It is typically used for monitoring and verifying that the service is operational and responsive.</p>\n<p><strong>Endpoint:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET {{base_url}}/health\n\n</code></pre><p><strong>Headers:</strong></p>\n<ul>\n<li><code>Content-Type: application/json</code></li>\n</ul>\n<p><strong>Response:</strong></p>\n<ul>\n<li><p><strong>Status Code:</strong> <code>200 OK</code> (when the service is healthy)</p>\n</li>\n<li><p><strong>Body Structure (JSON):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">  {\n    \"status\": \"healthy\",\n    \"service\": \"health_tips_agent\",\n    \"timestamp\": \"2025-10-31T14:30:52.339793+00:00\"\n  }\n\n</code></pre>\n<ul>\n<li><p><code>status</code>: Indicates the health of the service (e.g., \"healthy\").</p>\n</li>\n<li><p><code>service</code>: The name of the service being checked.</p>\n</li>\n<li><p><code>timestamp</code>: The time at which the health check was performed (ISO 8601 format).</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Usage Notes:</strong></p>\n<ul>\n<li><p>Use this endpoint for automated health checks or uptime monitoring.</p>\n</li>\n<li><p>A non-200 response may indicate the service is down or experiencing issues.</p>\n</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://collection/38639286-4e97faa9-c587-4199-8d51-bfa226e93b60\">Health Tips AI Agent collection</a>.</p>\n","urlObject":{"path":["health"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"6b357810-9c55-412b-97d5-2a515c21b919"},{"name":"A2A Execute Method Test","id":"79a84032-f07f-431e-af58-80017ba96b0f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"jsonrpc\": \"2.0\",\n    \"id\": \"execute-test-002\",\n    \"method\": \"execute\",\n    \"params\": {\n        \"messages\": [\n            {\n                \"parts\": [\n                    {\n                        \"kind\": \"text\",\n                        \"text\": \"What are healthy breakfast options?\"\n                    }\n                ]\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/a2a/health","description":"<p>Purpose:<br />This endpoint invokes the A2A agent execute method for conversational queries (health topic). Use it to send a user message to the Health Tips AI Agent and receive agent-composed responses and artifacts.</p>\n<p>Request format (POST JSON-RPC):</p>\n<ul>\n<li><p>Content-Type: application/json</p>\n</li>\n<li><p>URL: {{base_url}}/a2a/health</p>\n</li>\n<li><p>Body (raw JSON):<br />  {<br />  \"jsonrpc\": \"2.0\",<br />  \"id\": \"execute-test-002\",<br />  \"method\": \"execute\",<br />  \"params\": {<br />  \"messages\": [</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\"parts\": [{\"kind\": \"text\", \"text\": \"What are healthy breakfast options?\"}]}\n\n</code></pre><p>  ]<br />  }<br />  }</p>\n</li>\n</ul>\n<p>Expected response (success 200):</p>\n<ul>\n<li>A JSON-RPC 2.0 style response containing result.task metadata, status, history, and artifacts. Example response (truncated):<br />  {<br />  \"jsonrpc\": \"2.0\",<br />  \"id\": \"execute-test-002\",<br />  \"result\": {<br />  \"id\": \"99a03854-...\",<br />  \"contextId\": \"6a2d892c-...\",<br />  \"status\": {\"state\": \"completed\", \"timestamp\": \"2025-11-01T19:43:09Z\", \"message\": {...}},<br />  \"artifacts\": [{\"artifactId\": \"5291...\", \"name\": \"health_response\", \"parts\": [{\"kind\": \"text\", \"text\": \"A healthy breakfast could include...\"}]}]<br />  }<br />  }</li>\n</ul>\n<p>Notes:</p>\n<ul>\n<li><p>Ensure the {{base_url}} variable is set in the environment or globals (globals include baseURL, base_url).</p>\n</li>\n<li><p>Header Content-Type: application/json required.</p>\n</li>\n<li><p>Request id should be unique per call if tracking is needed.</p>\n</li>\n</ul>\n<p>Use-cases:</p>\n<ul>\n<li><p>QA testing agent responses for health queries.</p>\n</li>\n<li><p>Automating health tip generations and validating artifacts.</p>\n</li>\n<li><p>Building integrations that need agent-generated content for a health topic.</p>\n</li>\n</ul>\n<p>References:</p>\n<ul>\n<li><p>Collection: Health Tips AI Agent (collection link)</p>\n</li>\n<li><p>Request: A2A Execute Method Test (request link)</p>\n</li>\n</ul>\n","urlObject":{"path":["a2a","health"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"79a84032-f07f-431e-af58-80017ba96b0f"},{"name":"A2A Message/Send - Health Topic Test","id":"1f8b07d9-487f-4f4e-a215-061a0a6ed5b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"jsonrpc\": \"2.0\",\n    \"id\": \"health-test-001\",\n    \"method\": \"message/send\",\n    \"params\": {\n        \"message\": {\n            \"parts\": [\n                {\n                    \"kind\": \"text\",\n                    \"text\": \"I have mouth pain, what should i do?\"\n                }\n            ]\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/a2a/health","description":"<p>Purpose<br />Send a health-related message to the A2A (agent-to-agent) service using JSON-RPC 2.0. This endpoint queues and processes a message and returns the task status and the agent’s response content when available.</p>\n<p>HTTP<br />POST {{base_url}}/a2a/health</p>\n<p>Headers</p>\n<ul>\n<li>Content-Type: application/json</li>\n</ul>\n<p>Variables</p>\n<ul>\n<li>base_url (required): The API host, e.g., <a href=\"https://api.example.com\">https://api.example.com</a></li>\n</ul>\n<p>Request format (JSON-RPC 2.0)</p>\n<ul>\n<li><p>jsonrpc: Must be \"2.0\"</p>\n</li>\n<li><p>id: Your client-supplied correlation ID (string)</p>\n</li>\n<li><p>method: \"message/send\"</p>\n</li>\n<li><p>params.message.parts: Array of content parts. For a simple text prompt, send one part with kind \"text\" and a text value.</p>\n</li>\n</ul>\n<p>Example request body<br />{<br />\"jsonrpc\": \"2.0\",<br />\"id\": \"health-test-001\",<br />\"method\": \"message/send\",<br />\"params\": {<br />\"message\": {<br />\"parts\": [<br />{ \"kind\": \"text\", \"text\": \"How can I improve my sleep quality?\" }<br />]<br />}<br />}<br />}</p>\n<p>Successful response (200)<br />Returns a JSON-RPC 2.0 envelope with a task/result payload. Based on a prior run, a typical response looks like:<br />{<br />\"jsonrpc\": \"2.0\",<br />\"id\": \"health-test-001\",<br />\"result\": {<br />\"id\": \"\",<br />\"contextId\": \"\",<br />\"status\": {<br />\"state\": \"completed\", // or \"running\", etc.<br />\"timestamp\": \"2025-11-01T19:38:51.798411Z\",<br />\"message\": {<br />\"messageId\": \"\",<br />\"role\": \"agent\",<br />\"parts\": [<br />{ \"kind\": \"text\", \"text\": \"To improve sleep quality, ...\" }<br />]<br />}<br />},<br />\"artifacts\": [ { ... } ],<br />\"history\": [ { ... } ],<br />\"kind\": \"task\"<br />}<br />}<br />Notes</p>\n<ul>\n<li><p>The top-level id in the response mirrors the request id you sent.</p>\n</li>\n<li><p>status.state \"completed\" indicates the agent has produced an answer. When present, status.message.parts[0].text contains the agent’s reply.</p>\n</li>\n</ul>\n<p>Use cases</p>\n<ul>\n<li><p>Ask for a health tip (e.g., sleep hygiene, hydration, nutrition basics).</p>\n</li>\n<li><p>Request short actionable guidance for daily wellness.</p>\n</li>\n<li><p>Generate content for a “Daily Health Tip” feature.</p>\n</li>\n</ul>\n<p>Error handling</p>\n<ul>\n<li><p>4xx/5xx responses will include standard HTTP errors. Ensure Content-Type is set and base_url is correct.</p>\n</li>\n<li><p>If your integration expects streaming or intermediate states, poll/retry using the returned task id until status.state is \"completed\".</p>\n</li>\n</ul>\n","urlObject":{"path":["a2a","health"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"1f8b07d9-487f-4f4e-a215-061a0a6ed5b7"},{"name":"Off-Topic Redirection Test","id":"3be3066a-4b50-4b4c-b35b-c3428d931724","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"jsonrpc\": \"2.0\",\n    \"id\": \"offtopic-test-003\",\n    \"method\": \"message/send\",\n    \"params\": {\n        \"message\": {\n            \"parts\": [\n                {\n                    \"kind\": \"text\",\n                    \"text\": \"Tell me about football\"\n                }\n            ]\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/a2a/health","description":"<p>Off-Topic Redirection Test</p>\n<p>Purpose:<br />This POST request sends a JSON-RPC 2.0 message to the AI agent health endpoint to test how the agent handles off-topic user input. The agent is configured to redirect or refuse non-health queries. Use this request to verify redirection and response structure.</p>\n<p>URL and variables:</p>\n<ul>\n<li><p>URL: {{base_url}}/a2a/health</p>\n</li>\n<li><p>Variable: base_url — set in environment or globals to point to the API host.</p>\n</li>\n</ul>\n<p>Headers:</p>\n<ul>\n<li>Content-Type: application/json</li>\n</ul>\n<p>Request body (JSON-RPC):<br />Example body: {<br />\"jsonrpc\": \"2.0\",<br />\"id\": \"offtopic-test-003\",<br />\"method\": \"message/send\",<br />\"params\": {<br />\"message\": {<br />\"parts\": [ { \"kind\": \"text\", \"text\": \"Tell me about football\" } ]<br />}<br />}<br />}<br />Notes:</p>\n<ul>\n<li><p>id can be any client-generated string. Use unique ids for correlation.</p>\n</li>\n<li><p>method should follow the AI agent's RPC methods (e.g., message/send, execute).</p>\n</li>\n</ul>\n<p>Expected response (200):<br />A JSON-RPC 2.0 response containing task id, contextId, status and agent message. Example (truncated):<br />{<br />\"jsonrpc\": \"2.0\",<br />\"id\": \"offtopic-test-003\",<br />\"result\": {<br />\"id\": \"f543c65e-...\",<br />\"contextId\": \"b00c7f9d-...\",<br />\"status\": { \"state\": \"completed\", ... },<br />\"artifacts\": [ { \"name\": \"health_response\", \"parts\": [ {\"kind\":\"text\",\"text\":\"I specialize only in health and wellness...\"} ] } ]<br />}<br />}</p>\n<p>Usage tips:</p>\n<ul>\n<li><p>Change the message text to test other off-topic inputs.</p>\n</li>\n<li><p>Use the response to confirm the agent refuses or redirects non-health queries.</p>\n</li>\n</ul>\n<p>Saved examples: None currently.</p>\n","urlObject":{"path":["a2a","health"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"3be3066a-4b50-4b4c-b35b-c3428d931724"},{"name":"Error Handling - Invalid JSON-RPC","id":"808abee4-7390-4acf-aa77-03e75b301a96","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"jsonrpc\": \"1.0\",\n    \"id\": \"error-test-005\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/a2a/health","description":"<p>Purpose<br />Checks the health of the A2A service over a JSON‑RPC 2.0 interface. Useful for monitoring, readiness checks, and verifying server connectivity and request validation.</p>\n<p>Endpoint<br />POST {{base_url}}/a2a/health<br />Header: Content-Type: application/json</p>\n<p>JSON‑RPC 2.0 Request Shape</p>\n<ul>\n<li><p>jsonrpc (string, required): Must be exactly \"2.0\".</p>\n</li>\n<li><p>id (string|number|null, required): Correlates request/response. Must be unique per call within a client session.</p>\n</li>\n<li><p>method (string, required): The RPC method to call. For health checks, typically \"health\" or \"ping\" depending on server implementation.</p>\n</li>\n<li><p>params (object|array, optional): Parameters for the method. Often omitted for health.</p>\n</li>\n</ul>\n<p>Required Fields</p>\n<ul>\n<li><p>jsonrpc = \"2.0\"</p>\n</li>\n<li><p>id present (any non-undefined value is acceptable; string is typical)</p>\n</li>\n<li><p>method present (e.g., \"health\")</p>\n</li>\n</ul>\n<p>Example: Valid Request<br />{<br />\"jsonrpc\": \"2.0\",<br />\"id\": \"health-test-001\",<br />\"method\": \"health\"<br />}</p>\n<p>Example: Invalid Request (current body in tab)<br />{<br />\"jsonrpc\": \"1.0\",<br />\"id\": \"error-test-005\"<br />}</p>\n<p>Expected Responses</p>\n<ul>\n<li><p>Success (JSON‑RPC 2.0):<br />  200 OK<br />  {<br />  \"jsonrpc\": \"2.0\",<br />  \"id\": \"health-test-001\",<br />  \"result\": {</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>\"status\": \"ok\",\n\"uptime\": 12345\n\n</code></pre><p>  }<br />  }<br />  Notes: The shape of result is server-defined; common fields include status, version, uptime.</p>\n</li>\n<li><p>Validation/Error (observed):<br />  200 OK<br />  {<br />  \"jsonrpc\": \"2.0\",<br />  \"id\": \"error-test-005\",<br />  \"error\": {</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>\"code\": -32600,\n\"message\": \"Invalid Request\",\n\"data\": {\n  \"details\": \"jsonrpc must be '2.0' and id is required\"\n}\n\n</code></pre><p>  }<br />  }<br />  Meaning: The server accepted the HTTP request but the JSON‑RPC payload was invalid (code -32600 per JSON‑RPC spec).</p>\n</li>\n</ul>\n<p>Troubleshooting</p>\n<ul>\n<li><p>Ensure jsonrpc is exactly \"2.0\" (string, not number).</p>\n</li>\n<li><p>Include id and method fields. If this endpoint expects a specific method (e.g., \"health\"), provide it.</p>\n</li>\n<li><p>Verify Content-Type header is application/json.</p>\n</li>\n<li><p>Remove trailing commas and ensure valid JSON encoding.</p>\n</li>\n<li><p>If you receive -32601 (Method not found), check the method name.</p>\n</li>\n<li><p>If you receive -32602 (Invalid params), provide or correct params per server contract.</p>\n</li>\n</ul>\n<p>Variables</p>\n<ul>\n<li>base_url: Set this in your globals/environment. Example: <a href=\"https://api.example.com\">https://api.example.com</a></li>\n</ul>\n","urlObject":{"path":["a2a","health"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"808abee4-7390-4acf-aa77-03e75b301a96"},{"name":"Method Not Found Test","id":"bd1f0f7d-4e8a-42c8-a602-32142c1d285b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"jsonrpc\": \"2.0\",\n    \"id\": \"method-test-006\",\n    \"method\": \"invalid/method\",\n    \"params\": {}\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/a2a/health","description":"<p>Purpose: This request verifies A2A JSON-RPC error handling when a client calls a non-existent RPC method. It sends a JSON-RPC 2.0 POST to /api/a2a/health.</p>\n<p>Request body schema:\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": string (client-generated request id),\n  \"method\": string (RPC method name, e.g. 'execute' or 'health-check'),\n  \"params\": object (method parameters; may be empty)\n}</p>\n<p>Valid method examples:</p>\n<ul>\n<li>'execute'</li>\n<li>'health.check'</li>\n<li>'health.status'</li>\n<li>'status'\n(Check API docs for full list.)</li>\n</ul>\n<p>Expected responses:</p>\n<ul>\n<li>Success (200 with result): {\"jsonrpc\":\"2.0\",\"id\":,\"result\":{...}}</li>\n<li>Method not found (200 with error): {\"jsonrpc\":\"2.0\",\"id\":,\"error\":{\"code\":-32601,\"message\":\"Method not found\",\"data\":{}}}</li>\n<li>Invalid Request (400 or 200 with error code -32600)</li>\n<li>Parse error (400 or error code -32700)</li>\n</ul>\n<p>Troubleshooting:</p>\n<ul>\n<li>Ensure {{base_url}} is set to the correct environment variable (global: base_url or baseURL).</li>\n<li>Confirm the method name is supported by the server.</li>\n<li>Check Content-Type header is application/json.</li>\n<li>Use the collection's valid example ids: execute-test-002, health-test-001, test-004 for id field when reproducing tests.</li>\n</ul>\n<p>Notes: This request currently intentionally uses an invalid method to demonstrate the 'Method not found' error. Update the 'method' field to a supported RPC method to test successful responses.</p>\n","urlObject":{"path":["a2a","health"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"bd1f0f7d-4e8a-42c8-a602-32142c1d285b"}]}