{ "id": "9c8b7a69-5847-4362-9150-4f3e2d1c0b0a", "object": "info_request", "consultation_id": "7f8b1c2e-4d5a-4e6f-9a0b-1c2d3e4f5a6b", "status": "answered", "reason_code": "photo_quality", "reason_label": "A photo is not clear enough for a clinical review.", "question_keys": [ "scalp_photo_top" ], "questions": [ { "key": "scalp_photo_top", "label": "Photo of the top of your head", "type": "upload" } ], "documents_requested": [], "requested_at": "2026-11-03T11:20:00Z", "answered_at": "2026-11-03T12:40:00Z", "withdrawn_at": null, "answered_question_keys": [ "scalp_photo_top" ], "answer_count": 1, "answer_document_count": 1}
Information requests
Answer an information request by id
Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient’s account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open.
Checks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone.
Access, effects and retries
Ownership: The API key’s own partner and mode (test or live); another partner’s or mode’s records answer 404.
Prerequisites: A partner API key with the consultations:write scope.
Effects: Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event.
Retries: A retry after a successful answer answers 409 info_request_not_open.
POST
/
v1
/
partner
/
info-requests
/
{request_id}
/
answer
/
curl
set -euumask 077# Path values must be URL-encoded; query string excludes the leading question mark.url="${HD_BASE_URL:?Set API origin}/v1/partner/info-requests/${HD_PATH_REQUEST_ID:?Set the path fixture}/answer/${HD_QUERY_STRING:+?${HD_QUERY_STRING}}"printf 'Accept: application/json\n' > "${HD_REQUEST_HEADERS_FILE:?Private header file}"printf 'Authorization: Bearer %s\n' "${HD_PARTNER_API_KEY:?Set partner API key}" >> "$HD_REQUEST_HEADERS_FILE"curl --silent --show-error --max-time 30 --request POST \ --header "@$HD_REQUEST_HEADERS_FILE" \ --dump-header "${HD_HEADERS_FILE:?Private response header file}" \ --output "${HD_RESPONSE_FILE:?Private response file}" \ --write-out '%{http_code}\n%{content_type}\n' \ --header 'Content-Type: application/json' \ --data-binary "@${HD_REQUEST_FILE:?JSON fixture file}" \ "$url"
Language for the question labels: one of en, es, zh. Defaults to the partner's default locale; any other value falls back to English.
Body
application/json
Option 1
Option 2
Option 3
Send at least one answer, one upload or (on an identity_document_required request) the identity document;
a body with none of them is refused with 422 invalid_request before the answer's contents are checked. null is
the same as omitting a member; any other type is refused with 422 invalid_request.
Answers for the requested question keys only; may be omitted when uploads or the identity document are sent. Each question may be answered once (otherwise 422 invalid_answers).
Minimum array length: 1
One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind
requires.
upload_id values for requested documents: at most 10 (more is refused with 422 invalid_request). Each upload can be used once: a duplicate, here or between uploads and an upload answer in answers, is refused with 422 upload_unusable, as is an upload that does not exist, expired or was already used.
The patient's identity document. Accepted only on a request with reason_code identity_document_required (on any other request it is refused with 422 invalid_request, field identity_document, code unexpected_field), and required there: once the body carries an answer or an upload, a missing document is refused with 422 identity_document_required (a body with no answer, upload or document is refused with 422 invalid_request first). Validated like patient.identity_document on submission: a document that breaks the rules (unknown issuing state, wrong check letter, number format), a non-object or unknown members is refused with 422 invalid_request, field identity_document, code invalid_identity_document; a structural error keeps its nested field error instead, for example field identity_document.type with code invalid_choice for an unsupported type, or identity_document.number with code required, blank or max_length. A document different from the one stored for the patient is refused with 409 patient_conflict. Never echoed or returned; live mode stores it on the patient's account, test mode stores nothing.
How many files the answer attached; 0 until answered.
Required range: x >= 0
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Hi Doctor","public":true,"description":"Hi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Connect it to an AI assistant over MCP, or build on the REST API.","colors":{"primary":"#157A5C","light":"#39C69C","dark":"#0E6149"},"logo":{"light":"https://mintcdn.com/hi-doctor-ai/PIEJYA1zSavoVnhH/logo/wordmark-on-light.svg?fit=max\u0026auto=format\u0026n=PIEJYA1zSavoVnhH\u0026q=85\u0026s=c7243fb417e4d3908f3b5fc634a28923","dark":"https://mintcdn.com/hi-doctor-ai/PIEJYA1zSavoVnhH/logo/wordmark-on-dark.svg?fit=max\u0026auto=format\u0026n=PIEJYA1zSavoVnhH\u0026q=85\u0026s=06850588c83edfff94669e9260585343","href":"https://hi-doctor.ai"},"favicon":"https://mintcdn.com/hi-doctor-ai/V_4Yl0k2E857_Kxm/favicon.svg?fit=max\u0026auto=format\u0026n=V_4Yl0k2E857_Kxm\u0026q=85\u0026s=581ac27595afff79fbc35c5d54d60709","api":{"openapi":"api-reference/openapi.json","examples":{"prefill":true},"mdx":{"auth":{"method":"bearer"},"server":"https://api.hi-doctor.ai"}},"background":{"color":{"light":"#FFFFFF","dark":"#0A0A0A"}},"navbar":{"links":[{"icon":"star","href":"https://www.trustpilot.com/review/hi-doctor.ai","label":"Reviews"},{"icon":"envelope","href":"mailto:hello@hi-doctor.ai","label":"Support"}],"primary":{"type":"button","label":"Start a consultation","href":"https://hi-doctor.ai/consultation"}},"footer":{"socials":{"website":"https://hi-doctor.ai"}},"search":{"prompt":"Search Hi Doctor docs..."},"seo":{"metatags":{"description":"Hi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Weight loss, hair growth and sexual health consultations. Connect your account to an AI assistant with the Hi Doctor MCP connector, or build on the REST API.","author":"Hi Doctor","robots":"index, follow, max-image-preview:large, max-snippet:-1","og:site_name":"Hi Doctor Documentation","og:type":"website","og:locale":"en_US","twitter:card":"summary_large_image","theme-color":"#157A5C"},"organization":{"name":"Hi Doctor","url":"https://hi-doctor.ai"},"indexing":"navigable"},"fonts":{"family":"Figtree"},"errors":{"404":{"redirect":false,"title":"Page not found","description":"This page moved or never existed. [Back to the docs](/)"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity",{"title":"Hi Doctor Docs search","description":"Search the documentation with the Hi Doctor Docs MCP server.","icon":"magnifying-glass","href":"https://docs.hi-doctor.ai/mcp"},{"title":"Connect Hi Doctor","description":"Install the Hi Doctor MCP connector for patient tools.","icon":"plug","href":"/mcp/connect"}],"display":"header"},"markdown":{"instructions":"Connect the Hi Doctor MCP connector at https://mcp.hi-doctor.ai/mcp. Add this URL as a remote HTTP MCP server in your client, then sign in and authorise access through OAuth. Setup: https://docs.hi-doctor.ai/mcp/connect.\n\nThe REST API base is https://api.hi-doctor.ai. Hi Doctor Docs at https://docs.hi-doctor.ai/mcp searches documentation; connect to the product endpoint above for patient tools.\n\nHi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Every consultation is reviewed in full by an EU-licensed doctor, who decides on medical grounds only. No algorithm, assistant or API call approves a consultation, issues a prescription or changes a dose. The service is available in eight languages: English, Spanish, German, Dutch, Italian, French, Portuguese and Chinese.\n\n## Rules an assistant must follow\n\n- Never invent, assume or infer a medical answer. \"I don't know\" is a real answer: ask the patient to pick the closest option rather than guessing for them.\n- Never give medical advice and never suggest a medication or a dose. An EU-licensed doctor decides those.\n- If a questionnaire returns `ineligible`, say so plainly. Do not retry with altered answers.\n- Before anything that costs money or cancels a plan, state exactly what will happen and get an explicit yes.\n- Cancellation takes effect at the **end of the paid period**, not immediately. Say so.\n- An early order is irreversible: it creates the renewal consultation immediately and uses up the period's one early order. Explain that and get an explicit yes.\n- Prescription and invoice links are medical documents. A `signed_redirect` link opens without signing in: give it only to the patient, never repeat it anywhere shared.\n- Send option `value`s, not the labels shown to the patient. Labels are translated, values are stable.\n- Never ask for card details. Payment happens on Stripe's hosted checkout via a link.\n- On severe or sudden symptoms (chest pain, difficulty breathing, severe allergic reaction, suicidal thoughts), stop and direct the patient to their local emergency number."},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"OpenAPI spec","icon":"file-code","href":"/api-reference/openapi.json"},{"anchor":"Add the MCP connector","icon":"plug","href":"https://claude.ai/customize/connectors?modal=add-custom-connector\u0026connectorName=Hi%20Doctor\u0026connectorUrl=https://mcp.hi-doctor.ai/mcp"},{"anchor":"AI integration prompt","icon":"wand-magic-sparkles","href":"/mcp/ai-integration"},{"anchor":"hi-doctor.ai","icon":"house-medical","href":"https://hi-doctor.ai"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hi-doctor-ai","hasAudioNarration":false,"actualSubdomain":"hi-doctor-ai","customDomains":["docs.hi-doctor.ai"],"gitSource":{"type":"github","owner":"online-medicine","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aeb4f77b21018c2553e6554","collectionId":"479e76df-8b71-4bcd-b29d-f545ddafad1a","liveDeploymentHistoryId":"6aeb4f77b21018c2553e6554","schemaVersion":"v3"},"entitlements":{},"buildId":"6aeb4f77b21018c2553e6554","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Health library","count":132},{"language":"default","tag":"API reference","count":114},{"language":"default","tag":"Endpoints","count":104},{"language":"default","tag":"Medicines","count":72},{"language":"default","tag":"Partners","count":47},{"language":"default","tag":"Sexual-health medicines","count":28},{"language":"default","tag":"Documentation","count":26},{"language":"default","tag":"Partner API reference","count":26},{"language":"default","tag":"Conditions","count":25},{"language":"default","tag":"Progress","count":23}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--hd-brand: #157a5c;--hd-brand-strong: #0e6149;--hd-tint: #e3f4ec;--hd-canvas: #ffffff;--hd-alt: #f4f7f4;--hd-border: #e0e0e0;--hd-secondary: #666666;--hd-ink: #000000;--hd-brand-deep: #0b2b22;--hd-dark-bg: #0a0a0a;--hd-dark-surface: #161616;--hd-dark-raised: #1c1c1c;--hd-dark-border: #262626;--hd-dark-text: #ededed;--hd-dark-muted: #a1a1a1;--hd-dark-accent: #39c69c;--hd-status-warning: #8f5e1d;--hd-status-warning-wash: #f6e9dd;--hd-canvas-rgb: 255 255 255;--hd-tint-rgb: 227 244 236;--hd-ink-rgb: 0 0 0;--hd-dark-accent-rgb: 57 198 156;--hd-label-on-dark: rgb(var(--hd-tint-rgb) / 0.75);--hd-card-bg: var(--hd-brand-deep);--hd-card-fg: var(--hd-tint);--hd-card-accent: var(--hd-tint);--hd-card-accent-rgb: var(--hd-tint-rgb);--hd-card-border: rgb(var(--hd-ink-rgb) / 0.1)}html.dark{--hd-label-on-dark: var(--hd-dark-muted);--hd-card-bg: var(--hd-dark-surface);--hd-card-fg: var(--hd-dark-text);--hd-card-accent: var(--hd-dark-accent);--hd-card-accent-rgb: var(--hd-dark-accent-rgb);--hd-card-border: var(--hd-dark-border);--gray-50: 250 250 250;--gray-100: 245 245 245;--gray-200: 237 237 237;--gray-300: 212 212 212;--gray-400: 161 161 161;--gray-500: 115 115 115;--gray-600: 82 82 82;--gray-700: 58 58 58;--gray-800: 38 38 38;--gray-900: 22 22 22;--gray-950: 10 10 10}.nav-logo{height:26px;width:auto;max-width:none}a:has(>.nav-logo){display:inline-flex;align-items:center;min-height:44px}@media (max-width: 1023px){.nav-logo{height:24px}}#topbar-cta-button a{--hd-cta-bg: var(--hd-ink);--hd-cta-fg: var(--hd-canvas);--hd-cta-ring: var(--hd-brand);background-color:var(--hd-cta-bg);color:var(--hd-cta-fg);border-radius:999px;transition:background-color 160ms ease, color 160ms ease}#topbar-cta-button a>span.absolute{background-color:transparent;opacity:1}#topbar-cta-button a span,#topbar-cta-button a svg{color:var(--hd-cta-fg)}#topbar-cta-button a:hover{--hd-cta-bg: var(--hd-brand);--hd-cta-fg: var(--hd-canvas);transition-duration:240ms}#topbar-cta-button a:focus-visible{outline:2px solid var(--hd-cta-ring);outline-offset:2px}html.dark #topbar-cta-button a{--hd-cta-bg: var(--hd-canvas);--hd-cta-fg: var(--hd-ink);--hd-cta-ring: var(--hd-dark-accent)}html.dark #topbar-cta-button a:hover{--hd-cta-bg: var(--hd-tint);--hd-cta-fg: var(--hd-ink)}.hd-agent-card{width:100%;max-width:100%;min-width:0;margin:12px 0 20px;border-radius:12px;border:1px solid var(--hd-card-border);overflow:hidden;box-sizing:border-box;background:var(--hd-card-bg)}.hd-agent-titlebar{display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;padding:10px 14px;background:rgb(var(--hd-canvas-rgb) / 0.05);border-bottom:1px solid rgb(var(--hd-canvas-rgb) / 0.1)}.hd-agent-mark{display:inline-flex;align-items:center;color:var(--hd-card-accent)}.hd-agent-filename{flex:1;font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--hd-card-accent)}.hd-agent-copy{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:8px;border:1px solid rgb(var(--hd-canvas-rgb) / 0.18);background:transparent;color:var(--hd-canvas);font-size:12px;cursor:pointer;transition:background-color 160ms ease, border-color 160ms ease}.hd-agent-copy:hover{background:rgb(var(--hd-canvas-rgb) / 0.1);border-color:rgb(var(--hd-canvas-rgb) / 0.32);transition-duration:240ms}.hd-agent-copy-copied{color:var(--hd-card-accent);border-color:var(--hd-card-accent)}.hd-agent-body{width:100%;max-height:340px;overflow-y:auto;overflow-x:auto;margin:0!important;padding:16px 18px!important;background:var(--hd-card-bg)!important;border:none!important;border-radius:0!important;box-shadow:none!important;font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace!important;font-size:12.5px!important;line-height:1.65!important;color:var(--hd-card-fg)!important;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;scrollbar-width:thin;scrollbar-color:rgb(var(--hd-canvas-rgb) / 0.18) transparent}.hd-agent-footer{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 14px;background:rgb(var(--hd-canvas-rgb) / 0.04);border-top:1px solid rgb(var(--hd-canvas-rgb) / 0.1)}.hd-agent-footer-label{font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;font-size:10px;letter-spacing:0.2em;text-transform:uppercase;color:var(--hd-label-on-dark)}.hd-agent-chips{display:flex;flex-wrap:wrap;gap:6px}.hd-agent-chip{padding:3px 9px;border-radius:999px;background:rgb(var(--hd-card-accent-rgb) / 0.14);color:var(--hd-card-accent);font-size:11px;white-space:nowrap}.hd-agent-card pre,.hd-agent-card code{max-width:100%}#content-area h1,#content-area h2,#content-area h3,#content-area h4{color:var(--hd-ink)}html.dark #content-area h1,html.dark #content-area h2,html.dark #content-area h3,html.dark #content-area h4{color:var(--hd-canvas)}html.dark #content-area table th,html.dark #content-area table td{border-color:var(--hd-dark-border)}html.dark #content-area table th{color:var(--hd-dark-text)}html.dark #content-area :not(pre):not(a)>code{background-color:var(--hd-dark-surface);border-color:var(--hd-dark-border);color:var(--hd-dark-text)}.sidebar-group-header{font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;font-size:11px;font-weight:600;line-height:1.2;letter-spacing:0.16em;text-transform:uppercase;color:var(--hd-brand);margin-top:0.35rem;margin-bottom:0.9rem}.sidebar-group-header .sidebar-title{font:inherit;letter-spacing:inherit}html.dark .sidebar-group-header{color:var(--hd-label-on-dark)}.callout[data-callout-type=\"note\"]{border-color:var(--hd-border);background-color:var(--hd-alt)}.callout[data-callout-type=\"note\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"note\"] [data-component-part=\"callout-content\"]{color:var(--hd-secondary)}.callout[data-callout-type=\"info\"]{border-color:var(--hd-brand);background-color:var(--hd-tint)}.callout[data-callout-type=\"info\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"info\"] [data-component-part=\"callout-content\"]{color:var(--hd-brand-deep)}.callout[data-callout-type=\"tip\"]{border-color:var(--hd-brand-strong);background-color:var(--hd-canvas)}.callout[data-callout-type=\"tip\"] [data-component-part=\"callout-icon\"] svg,.callout[data-callout-type=\"tip\"] [data-component-part=\"callout-content\"]{color:var(--hd-brand-deep)}.callout[data-callout-type=\"warning\"]{border-color:var(--hd-status-warning);background-color:var(--hd-status-warning-wash)}.callout[data-callout-type=\"warning\"] [data-component-part=\"callout-icon\"] svg{color:var(--hd-status-warning)}.callout[data-callout-type=\"warning\"] [data-component-part=\"callout-content\"]{color:var(--hd-ink)}html.dark .callout[data-callout-type=\"note\"]{border-color:var(--hd-dark-border);background-color:var(--hd-dark-surface)}html.dark .callout[data-callout-type=\"note\"] [data-component-part=\"callout-icon\"] svg,html.dark .callout[data-callout-type=\"note\"] [data-component-part=\"callout-content\"]{color:var(--hd-dark-muted)}html.dark .callout[data-callout-type=\"info\"]{border-color:rgb(var(--hd-dark-accent-rgb) / 0.6);background-color:rgb(var(--hd-dark-accent-rgb) / 0.1)}html.dark .callout[data-callout-type=\"tip\"]{border-color:rgb(var(--hd-dark-accent-rgb) / 0.5);background-color:transparent}html.dark .callout[data-callout-type=\"info\"] [data-component-part=\"callout-icon\"] svg,html.dark .callout[data-callout-type=\"tip\"] [data-component-part=\"callout-icon\"] svg{color:var(--hd-dark-accent)}html.dark .callout[data-callout-type=\"info\"] [data-component-part=\"callout-content\"],html.dark .callout[data-callout-type=\"tip\"] [data-component-part=\"callout-content\"]{color:var(--hd-dark-text)}html.dark .callout[data-callout-type=\"warning\"]{border-color:#a57e4a;background-color:rgb(143 94 29 / 0.22)}html.dark .callout[data-callout-type=\"warning\"] [data-component-part=\"callout-icon\"] svg,html.dark .callout[data-callout-type=\"warning\"] [data-component-part=\"callout-content\"]{color:#d8b28a}"}],"page":{"pagePath":"api-reference/information-requests/answer-an-information-request-by-id","slug":"/api-reference/information-requests/answer-an-information-request-by-id","pageMetadata":{"title":"Answer an information request by id","description":"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient's account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open.\n\nChecks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live); another partner's or mode's records answer 404.\n\n**Prerequisites:** A partner API key with the `consultations:write` scope.\n\n**Effects:** Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event.\n\n**Retries:** A retry after a successful answer answers 409 info_request_not_open.","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/info-requests/{request_id}/answer/","href":"/api-reference/information-requests/answer-an-information-request-by-id","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h3: \"h3\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient’s account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Checks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone.\"\n }), \"\\n\", _jsx(_components.h3, {\n children: \"Access, effects and retries\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Ownership:\"\n }), \" The API key’s own partner and mode (test or live); another partner’s or mode’s records answer 404.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Prerequisites:\"\n }), \" A partner API key with the \", _jsx(_components.code, {\n children: \"consultations:write\"\n }), \" scope.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Effects:\"\n }), \" Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Retries:\"\n }), \" A retry after a successful answer answers 409 info_request_not_open.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Answer an information request by id","description":"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient's account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open.\n\nChecks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live); another partner's or mode's records answer 404.\n\n**Prerequisites:** A partner API key with the `consultations:write` scope.\n\n**Effects:** Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event.\n\n**Retries:** A retry after a successful answer answers 409 info_request_not_open.","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/info-requests/{request_id}/answer/","href":"/api-reference/information-requests/answer-an-information-request-by-id","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"answer_info_request","description":"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient's account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open.\n\nChecks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live); another partner's or mode's records answer 404.\n\n**Prerequisites:** A partner API key with the `consultations:write` scope.\n\n**Effects:** Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event.\n\n**Retries:** A retry after a successful answer answers 409 info_request_not_open.","summary":"Answer an information request by id","parameters":["87e35fa2-90da-4ea9-8f17-58e827ebf786","8d8646f3-8b2c-4fe7-aedc-17f38d9fe087","fccce037-5a69-4d25-94c9-31ca1c4fcd0c"],"tags":["Information requests"],"requestBody":"76864df5-e7f2-46b2-83ed-2ff8c6f18bf6","security":["5b1c1f74-4f7a-4f8f-8021-c9fb83584d20"],"responses":{"200":"b39984b6-5773-4e20-9b2d-95c07f4cc3a8","400":"f9dbf447-1772-4531-81e1-ab93c0129895","401":"702024c7-3e23-46d4-ba08-ef6e2317635a","403":"4ebd9958-6980-4538-9616-d9b79f4606f1","404":"713729c3-c5a4-4ad5-a3d9-9d6f29a8036e","409":"0bcfea1f-cf2a-402c-b683-f10c7cef790f","422":"063ff075-73ed-4264-b172-b43b901a8089","429":"ba94fe11-7ef3-40d3-8d77-ba8d3fd4755c"},"x-codeSamples":[{"lang":"Shell","label":"curl","source":"set -eu\numask 077\n# Path values must be URL-encoded; query string excludes the leading question mark.\nurl=\"${HD_BASE_URL:?Set API origin}/v1/partner/info-requests/${HD_PATH_REQUEST_ID:?Set the path fixture}/answer/${HD_QUERY_STRING:+?${HD_QUERY_STRING}}\"\nprintf 'Accept: application/json\\n' > \"${HD_REQUEST_HEADERS_FILE:?Private header file}\"\nprintf 'Authorization: Bearer %s\\n' \"${HD_PARTNER_API_KEY:?Set partner API key}\" >> \"$HD_REQUEST_HEADERS_FILE\"\ncurl --silent --show-error --max-time 30 --request POST \\\n --header \"@$HD_REQUEST_HEADERS_FILE\" \\\n --dump-header \"${HD_HEADERS_FILE:?Private response header file}\" \\\n --output \"${HD_RESPONSE_FILE:?Private response file}\" \\\n --write-out '%{http_code}\\n%{content_type}\\n' \\\n --header 'Content-Type: application/json' \\\n --data-binary \"@${HD_REQUEST_FILE:?JSON fixture file}\" \\\n \"$url\"\n"},{"lang":"Python","label":"requests","source":"import os, json\nfrom pathlib import Path\nfrom urllib.parse import quote\nimport requests\nos.umask(0o077)\nurl = os.environ[\"HD_BASE_URL\"].rstrip(\"/\") + '/v1/partner/info-requests/{request_id}/answer/'\nurl = url.replace('{request_id}', quote(os.environ['HD_PATH_REQUEST_ID'], safe=\"\"))\nif os.environ.get(\"HD_QUERY_STRING\"): url += \"?\" + os.environ[\"HD_QUERY_STRING\"]\nheaders = {\"Accept\": 'application/json'}\nheaders[\"Authorization\"] = \"Bearer \" + os.environ[\"HD_PARTNER_API_KEY\"]\nkwargs = {}\nkwargs[\"json\"] = json.loads(Path(os.environ[\"HD_REQUEST_FILE\"]).read_text())\nresponse = requests.request('POST', url, headers=headers, timeout=30, allow_redirects=False, **kwargs)\nPath(os.environ[\"HD_RESPONSE_FILE\"]).write_bytes(response.content)\nPath(os.environ[\"HD_HEADERS_FILE\"]).write_text(json.dumps(dict(response.headers)))\nprint(response.status_code)\nprint(response.headers.get(\"Content-Type\", \"\"))\n"},{"lang":"JavaScript","label":"fetch","source":"import { readFileSync, writeFileSync } from \"node:fs\";\nconst env = process.env;\nlet url = env.HD_BASE_URL.replace(/\\/$/, \"\") + \"/v1/partner/info-requests/{request_id}/answer/\";\nurl = url.replace(\"{request_id}\", encodeURIComponent(env.HD_PATH_REQUEST_ID));\nif (env.HD_QUERY_STRING) url += \"?\" + env.HD_QUERY_STRING;\nconst headers = { \"Accept\": \"application/json\" };\nheaders.Authorization = \"Bearer \" + env.HD_PARTNER_API_KEY;\nconst options = { method: \"POST\", headers, redirect: \"manual\", signal: AbortSignal.timeout(30000) };\nheaders[\"Content-Type\"] = \"application/json\";\noptions.body = readFileSync(env.HD_REQUEST_FILE, \"utf8\");\nconst response = await fetch(url, options);\nwriteFileSync(env.HD_RESPONSE_FILE, Buffer.from(await response.arrayBuffer()), {mode: 0o600});\nwriteFileSync(env.HD_HEADERS_FILE, JSON.stringify(Object.fromEntries(response.headers)), {mode: 0o600});\nconsole.log(response.status);\nconsole.log(response.headers.get(\"content-type\") ?? \"\");\n"}],"method":"post","type":"path","servers":["a52f5261-d6ca-4f76-8d3e-ad58db271710"],"path":"/v1/partner/info-requests/{request_id}/answer/","baseUrlOptions":["https://api.hi-doctor.ai"],"title":"Answer an information request by id","codeSamples":[{"label":"curl","lang":"Shell","source":"set -eu\numask 077\n# Path values must be URL-encoded; query string excludes the leading question mark.\nurl=\"${HD_BASE_URL:?Set API origin}/v1/partner/info-requests/${HD_PATH_REQUEST_ID:?Set the path fixture}/answer/${HD_QUERY_STRING:+?${HD_QUERY_STRING}}\"\nprintf 'Accept: application/json\\n' > \"${HD_REQUEST_HEADERS_FILE:?Private header file}\"\nprintf 'Authorization: Bearer %s\\n' \"${HD_PARTNER_API_KEY:?Set partner API key}\" >> \"$HD_REQUEST_HEADERS_FILE\"\ncurl --silent --show-error --max-time 30 --request POST \\\n --header \"@$HD_REQUEST_HEADERS_FILE\" \\\n --dump-header \"${HD_HEADERS_FILE:?Private response header file}\" \\\n --output \"${HD_RESPONSE_FILE:?Private response file}\" \\\n --write-out '%{http_code}\\n%{content_type}\\n' \\\n --header 'Content-Type: application/json' \\\n --data-binary \"@${HD_REQUEST_FILE:?JSON fixture file}\" \\\n \"$url\"\n"},{"label":"requests","lang":"Python","source":"import os, json\nfrom pathlib import Path\nfrom urllib.parse import quote\nimport requests\nos.umask(0o077)\nurl = os.environ[\"HD_BASE_URL\"].rstrip(\"/\") + '/v1/partner/info-requests/{request_id}/answer/'\nurl = url.replace('{request_id}', quote(os.environ['HD_PATH_REQUEST_ID'], safe=\"\"))\nif os.environ.get(\"HD_QUERY_STRING\"): url += \"?\" + os.environ[\"HD_QUERY_STRING\"]\nheaders = {\"Accept\": 'application/json'}\nheaders[\"Authorization\"] = \"Bearer \" + os.environ[\"HD_PARTNER_API_KEY\"]\nkwargs = {}\nkwargs[\"json\"] = json.loads(Path(os.environ[\"HD_REQUEST_FILE\"]).read_text())\nresponse = requests.request('POST', url, headers=headers, timeout=30, allow_redirects=False, **kwargs)\nPath(os.environ[\"HD_RESPONSE_FILE\"]).write_bytes(response.content)\nPath(os.environ[\"HD_HEADERS_FILE\"]).write_text(json.dumps(dict(response.headers)))\nprint(response.status_code)\nprint(response.headers.get(\"Content-Type\", \"\"))\n"},{"label":"fetch","lang":"JavaScript","source":"import { readFileSync, writeFileSync } from \"node:fs\";\nconst env = process.env;\nlet url = env.HD_BASE_URL.replace(/\\/$/, \"\") + \"/v1/partner/info-requests/{request_id}/answer/\";\nurl = url.replace(\"{request_id}\", encodeURIComponent(env.HD_PATH_REQUEST_ID));\nif (env.HD_QUERY_STRING) url += \"?\" + env.HD_QUERY_STRING;\nconst headers = { \"Accept\": \"application/json\" };\nheaders.Authorization = \"Bearer \" + env.HD_PARTNER_API_KEY;\nconst options = { method: \"POST\", headers, redirect: \"manual\", signal: AbortSignal.timeout(30000) };\nheaders[\"Content-Type\"] = \"application/json\";\noptions.body = readFileSync(env.HD_REQUEST_FILE, \"utf8\");\nconst response = await fetch(url, options);\nwriteFileSync(env.HD_RESPONSE_FILE, Buffer.from(await response.arrayBuffer()), {mode: 0o600});\nwriteFileSync(env.HD_HEADERS_FILE, JSON.stringify(Object.fromEntries(response.headers)), {mode: 0o600});\nconsole.log(response.status);\nconsole.log(response.headers.get(\"content-type\") ?? \"\");\n"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.oneOf.0.answers.items.0.oneOf.0.question_key":"scalp_photo_top","body.oneOf.0.answers.items.0.oneOf.0.value":"3d4e5f60-7182-4934-a5b6-c7d8e9f0a1b2"},{"body.oneOf.2.identity_document.type":"id_card","body.oneOf.2.identity_document.number":"12345678Z","body.oneOf.2.identity_document.issuing_state":"ES"}]},"dependencies":{"parameters":{"87e35fa2-90da-4ea9-8f17-58e827ebf786":{"in":"path","name":"request_id","schema":{"type":"string","format":"uuid","isRequired":true,"description":"The information request id.","uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"The information request id.","required":true,"example":"2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e"},"8d8646f3-8b2c-4fe7-aedc-17f38d9fe087":{"in":"query","name":"locale","schema":{"type":"string","description":"Language for the question labels: one of en, es, zh. Defaults to the partner's default locale; any other value falls back to English.","uniqueKey":"","typeLabel":"string"},"description":"Language for the question labels: one of en, es, zh. Defaults to the partner's default locale; any other value falls back to English.","example":"en"},"fccce037-5a69-4d25-94c9-31ca1c4fcd0c":{"in":"header","name":"Idempotency-Key","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$","description":"Accepted but not used for replay on this operation. Only POST /v1/partner/consultations stores and replays responses by Idempotency-Key.","uniqueKey":"","typeLabel":"string"},"description":"Accepted but not used for replay on this operation. Only POST /v1/partner/consultations stores and replays responses by Idempotency-Key.","example":"b7c1d2e3f4a5b6c7"}},"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Send at least one answer, one upload or (on an identity_document_required request) the identity document;\na body with none of them is refused with 422 invalid_request before the answer's contents are checked. null is\nthe same as omitting a member; any other type is refused with 422 invalid_request.","required":["answers"],"properties":{"answers":{"type":"array","items":{"oneOf":[{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.question_key","typeLabel":"string"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.values","typeLabel":"object"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.skip","typeLabel":"enum\u003cboolean>"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.option_inputs","typeLabel":"object"},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0.key","typeLabel":"string"}},"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.key","typeLabel":"string"},"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.question_key.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.question_key","typeLabel":"enum\u003cstring> | null"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.values","typeLabel":"object"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.skip","typeLabel":"enum\u003cboolean>"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1.option_inputs","typeLabel":"object"}},"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.question_key","typeLabel":"string"},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.key","typeLabel":"string"},"step_id":{"description":"Optional: the skipped question's own step_id.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.step_id","typeLabel":"any"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.skip","typeLabel":"enum\u003cboolean>"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.values","typeLabel":"object"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2.option_inputs","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.key","typeLabel":"string"},"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.question_key.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.question_key","typeLabel":"enum\u003cstring> | null"},"step_id":{"description":"Optional: the skipped question's own step_id.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.step_id","typeLabel":"any"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.skip","typeLabel":"enum\u003cboolean>"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.values","typeLabel":"object"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3.option_inputs","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.0.answers.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"oneOf.0.answers.items.[INDEX]","typeLabel":"object"},"description":"Answers for the requested question keys only; may be omitted when uploads or the identity document are sent. Each question may be answered once (otherwise 422 invalid_answers).","minItems":1,"isRequired":true,"uniqueKey":"oneOf.0.answers","typeLabel":"object[]"},"uploads":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"oneOf.0.uploads.oneOf.0.items.[INDEX]","typeLabel":"string\u003cuuid>"},"maxItems":10,"uniqueItems":true,"description":"upload_id values for requested documents: at most 10 (more is refused with 422 invalid_request). Each upload can be used once: a duplicate, here or between uploads and an upload answer in answers, is refused with 422 upload_unusable, as is an upload that does not exist, expired or was already used.","uniqueKey":"oneOf.0.uploads.oneOf.0","typeLabel":"string\u003cuuid>[]"},{"type":"null","items":{"type":"string","format":"uuid"},"maxItems":10,"uniqueItems":true,"description":"upload_id values for requested documents: at most 10 (more is refused with 422 invalid_request). Each upload can be used once: a duplicate, here or between uploads and an upload answer in answers, is refused with 422 upload_unusable, as is an upload that does not exist, expired or was already used.","uniqueKey":"oneOf.0.uploads.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.uploads","typeLabel":"string\u003cuuid>[] | null"},"identity_document":{"oneOf":[{"type":"object","description":"The patient's identity document. Accepted only on a request with reason_code identity_document_required (on any other request it is refused with 422 invalid_request, field identity_document, code unexpected_field), and required there: once the body carries an answer or an upload, a missing document is refused with 422 identity_document_required (a body with no answer, upload or document is refused with 422 invalid_request first). Validated like patient.identity_document on submission: a document that breaks the rules (unknown issuing state, wrong check letter, number format), a non-object or unknown members is refused with 422 invalid_request, field identity_document, code invalid_identity_document; a structural error keeps its nested field error instead, for example field identity_document.type with code invalid_choice for an unsupported type, or identity_document.number with code required, blank or max_length. A document different from the one stored for the patient is refused with 409 patient_conflict. Never echoed or returned; live mode stores it on the patient's account, test mode stores nothing.","required":["issuing_state","number","type"],"properties":{"type":{"type":"string","description":"passport or id_card.","enum":["passport","id_card"],"isRequired":true,"uniqueKey":"oneOf.0.identity_document.oneOf.0.type","typeLabel":"enum\u003cstring>"},"number":{"type":"string","description":"The document number as printed; it is normalised.","maxLength":50,"minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.0.identity_document.oneOf.0.number","typeLabel":"string"},"issuing_state":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 code of the country that issued the document.","maxLength":3,"minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.0.identity_document.oneOf.0.issuing_state","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.0.identity_document.oneOf.0","typeLabel":"object"},{"type":"string","description":"The patient's identity document. Accepted only on a request with reason_code identity_document_required (on any other request it is refused with 422 invalid_request, field identity_document, code unexpected_field), and required there: once the body carries an answer or an upload, a missing document is refused with 422 identity_document_required (a body with no answer, upload or document is refused with 422 invalid_request first). Validated like patient.identity_document on submission: a document that breaks the rules (unknown issuing state, wrong check letter, number format), a non-object or unknown members is refused with 422 invalid_request, field identity_document, code invalid_identity_document; a structural error keeps its nested field error instead, for example field identity_document.type with code invalid_choice for an unsupported type, or identity_document.number with code required, blank or max_length. A document different from the one stored for the patient is refused with 409 patient_conflict. Never echoed or returned; live mode stores it on the patient's account, test mode stores nothing.","enum":[null],"uniqueKey":"oneOf.0.identity_document.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The patient's identity document. Accepted only on a request with reason_code identity_document_required (on any other request it is refused with 422 invalid_request, field identity_document, code unexpected_field), and required there: once the body carries an answer or an upload, a missing document is refused with 422 identity_document_required (a body with no answer, upload or document is refused with 422 invalid_request first). Validated like patient.identity_document on submission: a document that breaks the rules (unknown issuing state, wrong check letter, number format), a non-object or unknown members is refused with 422 invalid_request, field identity_document, code invalid_identity_document; a structural error keeps its nested field error instead, for example field identity_document.type with code invalid_choice for an unsupported type, or identity_document.number with code required, blank or max_length. A document different from the one stored for the patient is refused with 409 patient_conflict. Never echoed or returned; live mode stores it on the patient's account, test mode stores nothing.","enum":[null],"uniqueKey":"oneOf.0.identity_document.oneOf.2","typeLabel":"null"}],"uniqueKey":"oneOf.0.identity_document","typeLabel":"object | enum\u003cstring> | null"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Send at least one answer, one upload or (on an identity_document_required request) the identity document;\na body with none of them is refused with 422 invalid_request before the answer's contents are checked. null is\nthe same as omitting a member; any other type is refused with 422 invalid_request.","required":["uploads"],"properties":{"uploads":{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"oneOf.1.uploads.items.[INDEX]","typeLabel":"string\u003cuuid>"},"description":"upload_id values for requested documents: at most 10 (more is refused with 422 invalid_request). Each upload can be used once: a duplicate, here or between uploads and an upload answer in answers, is refused with 422 upload_unusable, as is an upload that does not exist, expired or was already used.","maxItems":10,"minItems":1,"uniqueItems":true,"isRequired":true,"uniqueKey":"oneOf.1.uploads","typeLabel":"string\u003cuuid>[]"},"answers":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.question_key","typeLabel":"string"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.values","typeLabel":"object"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.skip","typeLabel":"enum\u003cboolean>"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs","typeLabel":"object"},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0.key","typeLabel":"string"}},"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.key","typeLabel":"string"},"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.question_key.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.question_key","typeLabel":"enum\u003cstring> | null"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.values","typeLabel":"object"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.skip","typeLabel":"enum\u003cboolean>"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs","typeLabel":"object"}},"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.question_key","typeLabel":"string"},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.key","typeLabel":"string"},"step_id":{"description":"Optional: the skipped question's own step_id.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.step_id","typeLabel":"any"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.skip","typeLabel":"enum\u003cboolean>"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.values","typeLabel":"object"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.key","typeLabel":"string"},"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.question_key.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.question_key","typeLabel":"enum\u003cstring> | null"},"step_id":{"description":"Optional: the skipped question's own step_id.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.step_id","typeLabel":"any"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.skip","typeLabel":"enum\u003cboolean>"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.values","typeLabel":"object"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"oneOf.1.answers.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Answers for the requested question keys only; may be omitted when uploads or the identity document are sent. Each question may be answered once (otherwise 422 invalid_answers).","uniqueKey":"oneOf.1.answers.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question."},"values":{"type":"object","additionalProperties":{"oneOf":[{}]},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}."},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true]},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Extra input for options that require it, keyed by option value."},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored."}}},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S"},"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null]},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null]}]},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question."},"values":{"type":"object","additionalProperties":{"oneOf":[{}]},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}."},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true]},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Extra input for options that require it, keyed by option value."}}},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S"},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored."},"step_id":{"description":"Optional: the skipped question's own step_id."},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true]},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question."},"values":{"type":"object","additionalProperties":{"oneOf":[{}]},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}."},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Extra input for options that require it, keyed by option value."}},"additionalProperties":false},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null]},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null]}]},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S"},"step_id":{"description":"Optional: the skipped question's own step_id."},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true]},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question."},"values":{"type":"object","additionalProperties":{"oneOf":[{}]},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}."},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Extra input for options that require it, keyed by option value."}},"additionalProperties":false}]},"description":"Answers for the requested question keys only; may be omitted when uploads or the identity document are sent. Each question may be answered once (otherwise 422 invalid_answers).","uniqueKey":"oneOf.1.answers.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.answers","typeLabel":"object[] | null"},"identity_document":{"oneOf":[{"type":"object","description":"The patient's identity document. Accepted only on a request with reason_code identity_document_required (on any other request it is refused with 422 invalid_request, field identity_document, code unexpected_field), and required there: once the body carries an answer or an upload, a missing document is refused with 422 identity_document_required (a body with no answer, upload or document is refused with 422 invalid_request first). Validated like patient.identity_document on submission: a document that breaks the rules (unknown issuing state, wrong check letter, number format), a non-object or unknown members is refused with 422 invalid_request, field identity_document, code invalid_identity_document; a structural error keeps its nested field error instead, for example field identity_document.type with code invalid_choice for an unsupported type, or identity_document.number with code required, blank or max_length. A document different from the one stored for the patient is refused with 409 patient_conflict. Never echoed or returned; live mode stores it on the patient's account, test mode stores nothing.","required":["issuing_state","number","type"],"properties":{"type":{"type":"string","description":"passport or id_card.","enum":["passport","id_card"],"isRequired":true,"uniqueKey":"oneOf.1.identity_document.oneOf.0.type","typeLabel":"enum\u003cstring>"},"number":{"type":"string","description":"The document number as printed; it is normalised.","maxLength":50,"minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.1.identity_document.oneOf.0.number","typeLabel":"string"},"issuing_state":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 code of the country that issued the document.","maxLength":3,"minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.1.identity_document.oneOf.0.issuing_state","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"oneOf.1.identity_document.oneOf.0","typeLabel":"object"},{"type":"string","description":"The patient's identity document. Accepted only on a request with reason_code identity_document_required (on any other request it is refused with 422 invalid_request, field identity_document, code unexpected_field), and required there: once the body carries an answer or an upload, a missing document is refused with 422 identity_document_required (a body with no answer, upload or document is refused with 422 invalid_request first). Validated like patient.identity_document on submission: a document that breaks the rules (unknown issuing state, wrong check letter, number format), a non-object or unknown members is refused with 422 invalid_request, field identity_document, code invalid_identity_document; a structural error keeps its nested field error instead, for example field identity_document.type with code invalid_choice for an unsupported type, or identity_document.number with code required, blank or max_length. A document different from the one stored for the patient is refused with 409 patient_conflict. Never echoed or returned; live mode stores it on the patient's account, test mode stores nothing.","enum":[null],"uniqueKey":"oneOf.1.identity_document.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"null","description":"The patient's identity document. Accepted only on a request with reason_code identity_document_required (on any other request it is refused with 422 invalid_request, field identity_document, code unexpected_field), and required there: once the body carries an answer or an upload, a missing document is refused with 422 identity_document_required (a body with no answer, upload or document is refused with 422 invalid_request first). Validated like patient.identity_document on submission: a document that breaks the rules (unknown issuing state, wrong check letter, number format), a non-object or unknown members is refused with 422 invalid_request, field identity_document, code invalid_identity_document; a structural error keeps its nested field error instead, for example field identity_document.type with code invalid_choice for an unsupported type, or identity_document.number with code required, blank or max_length. A document different from the one stored for the patient is refused with 409 patient_conflict. Never echoed or returned; live mode stores it on the patient's account, test mode stores nothing.","enum":[null],"uniqueKey":"oneOf.1.identity_document.oneOf.2","typeLabel":"null"}],"uniqueKey":"oneOf.1.identity_document","typeLabel":"object | enum\u003cstring> | null"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","description":"Send at least one answer, one upload or (on an identity_document_required request) the identity document;\na body with none of them is refused with 422 invalid_request before the answer's contents are checked. null is\nthe same as omitting a member; any other type is refused with 422 invalid_request.","required":["identity_document"],"properties":{"identity_document":{"type":"object","description":"The patient's identity document. Accepted only on a request with reason_code identity_document_required (on any other request it is refused with 422 invalid_request, field identity_document, code unexpected_field), and required there: once the body carries an answer or an upload, a missing document is refused with 422 identity_document_required (a body with no answer, upload or document is refused with 422 invalid_request first). Validated like patient.identity_document on submission: a document that breaks the rules (unknown issuing state, wrong check letter, number format), a non-object or unknown members is refused with 422 invalid_request, field identity_document, code invalid_identity_document; a structural error keeps its nested field error instead, for example field identity_document.type with code invalid_choice for an unsupported type, or identity_document.number with code required, blank or max_length. A document different from the one stored for the patient is refused with 409 patient_conflict. Never echoed or returned; live mode stores it on the patient's account, test mode stores nothing.","required":["issuing_state","number","type"],"properties":{"type":{"type":"string","description":"passport or id_card.","enum":["passport","id_card"],"isRequired":true,"uniqueKey":"oneOf.2.identity_document.type","typeLabel":"enum\u003cstring>"},"number":{"type":"string","description":"The document number as printed; it is normalised.","maxLength":50,"minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.2.identity_document.number","typeLabel":"string"},"issuing_state":{"type":"string","description":"ISO 3166-1 alpha-2 or alpha-3 code of the country that issued the document.","maxLength":3,"minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.2.identity_document.issuing_state","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.2.identity_document","typeLabel":"object"},"answers":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.question_key","typeLabel":"string"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.values","typeLabel":"object"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.skip","typeLabel":"enum\u003cboolean>"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.option_inputs","typeLabel":"object"},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0.key","typeLabel":"string"}},"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.key","typeLabel":"string"},"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.question_key.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.question_key","typeLabel":"enum\u003cstring> | null"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.values","typeLabel":"object"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.skip","typeLabel":"enum\u003cboolean>"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1.option_inputs","typeLabel":"object"}},"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.question_key","typeLabel":"string"},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.key","typeLabel":"string"},"step_id":{"description":"Optional: the skipped question's own step_id.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.step_id","typeLabel":"any"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.skip","typeLabel":"enum\u003cboolean>"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.values","typeLabel":"object"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2.option_inputs","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S","isRequired":true,"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.key","typeLabel":"string"},"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.question_key.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.question_key","typeLabel":"enum\u003cstring> | null"},"step_id":{"description":"Optional: the skipped question's own step_id.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.step_id","typeLabel":"any"},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.skip","typeLabel":"enum\u003cboolean>"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.value","typeLabel":"any"},"values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.values.additionalProperties","typeLabel":"any"},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.values","typeLabel":"object"},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs.additionalProperties.oneOf.2","typeLabel":"boolean"}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs.additionalProperties","typeLabel":"string | number | boolean"},"description":"Extra input for options that require it, keyed by option value.","uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3.option_inputs","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"oneOf.2.answers.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Answers for the requested question keys only; may be omitted when uploads or the identity document are sent. Each question may be answered once (otherwise 422 invalid_answers).","uniqueKey":"oneOf.2.answers.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S"},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question."},"values":{"type":"object","additionalProperties":{"oneOf":[{}]},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}."},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true]},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Extra input for options that require it, keyed by option value."},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored."}}},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S"},"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null]},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null]}]},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question."},"values":{"type":"object","additionalProperties":{"oneOf":[{}]},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}."},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true]},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Extra input for options that require it, keyed by option value."}}},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["question_key"],"properties":{"question_key":{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","minLength":1,"pattern":"\\S"},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored."},"step_id":{"description":"Optional: the skipped question's own step_id."},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true]},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question."},"values":{"type":"object","additionalProperties":{"oneOf":[{}]},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}."},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Extra input for options that require it, keyed by option value."}},"additionalProperties":false},{"type":"object","description":"One entries-v1 answer: question_key plus exactly one payload, value, values or skip, as the question kind\nrequires.","required":["key"],"properties":{"question_key":{"oneOf":[{"type":"string","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null]},{"type":"null","description":"A key named in the information request's question_keys; any other key, or none, is refused with 422 unexpected_question_key. Send question_key, or leave it out, empty or null and send its alias key.","enum":["",null]}]},"key":{"type":"string","description":"Alias of question_key, accepted and normalised to question_key; used only when question_key is absent, empty or null, and then it must be a non-empty string. When question_key is set, key is ignored.","minLength":1,"pattern":"\\S"},"step_id":{"description":"Optional: the skipped question's own step_id."},"skip":{"type":"boolean","description":"true to skip an optional question (required false). A skipped entry carries only its locator (question_key, or on an information-request answer its alias key), skip and, optionally, the question's own step_id: value, values, option_inputs or any other member alongside it is refused with 422 invalid_answers.","enum":[true]},"value":{"description":"The answer for option, confirm, upload and scalar kinds: an option value, a list of option values for multi kinds, true for a confirm, or an upload_id for an upload question."},"values":{"type":"object","additionalProperties":{"oneOf":[{}]},"description":"The answer for input, iief5 and likert-grid kinds: an object of field values, for example {\"height\": 172, \"weight\": 96}."},"option_inputs":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"description":"Extra input for options that require it, keyed by option value."}},"additionalProperties":false}]},"description":"Answers for the requested question keys only; may be omitted when uploads or the identity document are sent. Each question may be answered once (otherwise 422 invalid_answers).","uniqueKey":"oneOf.2.answers.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.answers","typeLabel":"object[] | null"},"uploads":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"oneOf.2.uploads.oneOf.0.items.[INDEX]","typeLabel":"string\u003cuuid>"},"maxItems":10,"uniqueItems":true,"description":"upload_id values for requested documents: at most 10 (more is refused with 422 invalid_request). Each upload can be used once: a duplicate, here or between uploads and an upload answer in answers, is refused with 422 upload_unusable, as is an upload that does not exist, expired or was already used.","uniqueKey":"oneOf.2.uploads.oneOf.0","typeLabel":"string\u003cuuid>[]"},{"type":"null","items":{"type":"string","format":"uuid"},"maxItems":10,"uniqueItems":true,"description":"upload_id values for requested documents: at most 10 (more is refused with 422 invalid_request). Each upload can be used once: a duplicate, here or between uploads and an upload answer in answers, is refused with 422 upload_unusable, as is an upload that does not exist, expired or was already used.","uniqueKey":"oneOf.2.uploads.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.uploads","typeLabel":"string\u003cuuid>[] | null"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"answers":[{"question_key":"scalp_photo_top","value":"3d4e5f60-7182-4934-a5b6-c7d8e9f0a1b2"}],"uploads":[]}},"example-2":{"title":"example-2","value":{"identity_document":{"type":"id_card","number":"12345678Z","issuing_state":"ES"}}}},"exampleType":"examples"}},"required":true,"exampleType":"examples"},"responses":{"b39984b6-5773-4e20-9b2d-95c07f4cc3a8":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The information request id.","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"object":{"type":"string","description":"Always info_request.","enum":["info_request"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"consultation_id":{"type":"string","format":"uuid","description":"The consultation this belongs to.","isRequired":true,"uniqueKey":"consultation_id","typeLabel":"string\u003cuuid>"},"status":{"type":"string","description":"open, answered or withdrawn.","enum":["open","answered","withdrawn"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"reason_code":{"type":"string","description":"Why the doctor needs more information.","enum":["answer_unclear","answer_inconsistent","photo_quality","photo_missing","measurement_check","medication_history","medical_history","identity_check","document_missing","identity_document_required","other_clarification"],"isRequired":true,"uniqueKey":"reason_code","typeLabel":"enum\u003cstring>"},"reason_label":{"type":"string","description":"Readable form of reason_code.","isRequired":true,"uniqueKey":"reason_label","typeLabel":"string"},"question_keys":{"type":"array","items":{"type":"string","uniqueKey":"question_keys.items.[INDEX]","typeLabel":"string"},"description":"Question keys the doctor asked to be answered again.","isRequired":true,"uniqueKey":"question_keys","typeLabel":"string[]"},"questions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The question_key to answer.","isRequired":true,"uniqueKey":"questions.items.[INDEX].key","typeLabel":"string"},"label":{"oneOf":[{"type":"string","description":"The question's text in the request's locale (the locale query parameter, else the partner's default locale; English for an unsupported locale and per missing message). Display text, never a message key: null when no catalogue has text for it, and key still identifies the question.","isRequired":true,"uniqueKey":"questions.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","description":"The question's text in the request's locale (the locale query parameter, else the partner's default locale; English for an unsupported locale and per missing message). Display text, never a message key: null when no catalogue has text for it, and key still identifies the question.","isRequired":true,"uniqueKey":"questions.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"questions.items.[INDEX].label","typeLabel":"string | null"},"type":{"type":"string","description":"Kind of answer expected.","isRequired":true,"uniqueKey":"questions.items.[INDEX].type","typeLabel":"string"}},"required":["key","label","type"],"uniqueKey":"questions.items.[INDEX]","typeLabel":"object"},"description":"The questions to answer.","isRequired":true,"uniqueKey":"questions","typeLabel":"object[]"},"documents_requested":{"type":"array","items":{"type":"string","uniqueKey":"documents_requested.items.[INDEX]","typeLabel":"string"},"description":"Kinds of documents the doctor asked for; answer them with upload ids.","isRequired":true,"uniqueKey":"documents_requested","typeLabel":"string[]"},"requested_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the doctor raised the request.","isRequired":true,"uniqueKey":"requested_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the doctor raised the request.","isRequired":true,"uniqueKey":"requested_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"requested_at","typeLabel":"string\u003cdate-time> | null"},"answered_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the request was answered; null while it is open.","isRequired":true,"uniqueKey":"answered_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the request was answered; null while it is open.","isRequired":true,"uniqueKey":"answered_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"answered_at","typeLabel":"string\u003cdate-time> | null"},"withdrawn_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the request was withdrawn; null if it was not.","isRequired":true,"uniqueKey":"withdrawn_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the request was withdrawn; null if it was not.","isRequired":true,"uniqueKey":"withdrawn_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"withdrawn_at","typeLabel":"string\u003cdate-time> | null"},"answered_question_keys":{"type":"array","items":{"type":"string","uniqueKey":"answered_question_keys.items.[INDEX]","typeLabel":"string"},"description":"The question keys the answer covered, in answer order; empty until answered. The answer values are never returned.","isRequired":true,"uniqueKey":"answered_question_keys","typeLabel":"string[]"},"answer_count":{"type":"integer","minimum":0,"description":"How many answer entries Hi Doctor accepted; 0 until answered.","isRequired":true,"uniqueKey":"answer_count","typeLabel":"integer"},"answer_document_count":{"type":"integer","minimum":0,"description":"How many files the answer attached; 0 until answered.","isRequired":true,"uniqueKey":"answer_document_count","typeLabel":"integer"}},"required":["answer_count","answer_document_count","answered_at","answered_question_keys","consultation_id","documents_requested","id","object","question_keys","questions","reason_code","reason_label","requested_at","status","withdrawn_at"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"id":"9c8b7a69-5847-4362-9150-4f3e2d1c0b0a","object":"info_request","consultation_id":"7f8b1c2e-4d5a-4e6f-9a0b-1c2d3e4f5a6b","status":"answered","reason_code":"photo_quality","reason_label":"A photo is not clear enough for a clinical review.","question_keys":["scalp_photo_top"],"questions":[{"key":"scalp_photo_top","label":"Photo of the top of your head","type":"upload"}],"documents_requested":[],"requested_at":"2026-11-03T11:20:00Z","answered_at":"2026-11-03T12:40:00Z","withdrawn_at":null,"answered_question_keys":["scalp_photo_top"],"answer_count":1,"answer_document_count":1}}},"exampleType":"examples"}},"description":"The answered information request.","exampleType":"examples"},"f9dbf447-1772-4531-81e1-ab93c0129895":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"invalid_request","code":"parse_error","message":"JSON parse error - Expecting value: line 1 column 1 (char 0)","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-2":{"title":"example-2","value":{"error":{"type":"invalid_request","code":"brand_header_not_allowed","message":"Brand headers are not accepted on partner requests; the brand comes from the API key.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"The request is malformed. Partner routes also refuse the patient-app brand header with 400 brand_header_not_allowed, before authentication (no rate-limit headers).","exampleType":"examples"},"702024c7-3e23-46d4-ba08-ef6e2317635a":{"headers":{"WWW-Authenticate":{"schema":{"type":"string"},"description":"The authentication scheme to use: Bearer realm=\"hi-doctor-partner\"."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"authentication_error","code":"not_authenticated","message":"Authentication credentials were not provided.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-2":{"title":"example-2","value":{"error":{"type":"authentication_error","code":"invalid_token","message":"The API key is not valid.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-3":{"title":"example-3","value":{"error":{"type":"authentication_error","code":"key_revoked","message":"The API key has been revoked.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-4":{"title":"example-4","value":{"error":{"type":"authentication_error","code":"key_expired","message":"The API key has expired.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-5":{"title":"example-5","value":{"error":{"type":"authentication_error","code":"partner_suspended","message":"The partner account is suspended.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"The API key is missing, malformed, unknown, revoked or expired, or the partner account is suspended. The response carries WWW-Authenticate: Bearer realm=\"hi-doctor-partner\" and no rate-limit headers.","exampleType":"examples"},"4ebd9958-6980-4538-9616-d9b79f4606f1":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"permission_error","code":"insufficient_scope","message":"This endpoint requires the consultations:write scope.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-2":{"title":"example-2","value":{"error":{"type":"permission_error","code":"partner_not_live","message":"Live mode is not enabled for this partner.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"The key lacks the consultations:write scope (insufficient_scope), or a live key was used while live mode is not enabled for the partner (partner_not_live).","exampleType":"examples"},"713729c3-c5a4-4ad5-a3d9-9d6f29a8036e":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error"],"properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"oneOf.0.error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"oneOf.0.error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"oneOf.0.error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"oneOf.0.error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"oneOf.0.error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"oneOf.0.error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"oneOf.0.error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"oneOf.0.error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"oneOf.0.error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"oneOf.0.error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"oneOf.0.error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"oneOf.0.error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"oneOf.0.error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.0.error","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"The reduced body every route answers while the Partner API is switched off for the environment: no code, message or request_id.","required":["error"],"properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["not_found"],"description":"Always not_found.","isRequired":true,"uniqueKey":"oneOf.1.error.type","typeLabel":"enum\u003cstring>"}},"required":["type"],"additionalProperties":false,"description":"Only the error type; no code, message or request_id.","isRequired":true,"uniqueKey":"oneOf.1.error","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"not_found","code":"not_found","message":"No such resource.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-2":{"title":"example-2","value":{"error":{"type":"not_found"}}}},"exampleType":"examples"}},"description":"No such resource for this key's partner and mode. While the Partner API is switched off for the environment, every route answers 404 with only {\"error\": {\"type\": \"not_found\"}}, before authentication.","exampleType":"examples"},"0bcfea1f-cf2a-402c-b683-f10c7cef790f":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"conflict","code":"info_request_not_open","message":"The information request is no longer open.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-2":{"title":"example-2","value":{"error":{"type":"conflict","code":"patient_conflict","message":"The identity document does not match the patient's account.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-3":{"title":"example-3","value":{"error":{"type":"conflict","code":"consent_withdrawn","message":"The patient withdrew consent; the consultation is not processed.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-4":{"title":"example-4","value":{"error":{"type":"conflict","code":"case_closed","message":"The consultation is no longer awaiting information.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-5":{"title":"example-5","value":{"error":{"type":"conflict","code":"consultation_busy","message":"The consultation is busy; retry shortly.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"The request conflicts with the information request's current state. A request withdrawn by a consent withdrawal is refused with info_request_not_open (the request's status is checked first); consent_withdrawn is returned only for a request still open for a patient who withdrew consent.","exampleType":"examples"},"063ff075-73ed-4264-b172-b43b901a8089":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"validation_error","code":"unexpected_question_key","message":"Only the questions named in the information request may be answered.","errors":[{"question_key":"hair_loss_pattern","code":"unexpected_question_key","message":"Only the questions named in the information request may be answered."}],"request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-2":{"title":"example-2","value":{"error":{"type":"validation_error","code":"identity_document_required","message":"The answer to this information request needs the identity document.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-3":{"title":"example-3","value":{"error":{"type":"validation_error","code":"invalid_request","message":"The request body is invalid.","errors":[{"field":"identity_document","code":"invalid_identity_document","message":"Enter a valid document number for this document type and issuing state."}],"request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-4":{"title":"example-4","value":{"error":{"type":"validation_error","code":"invalid_request","message":"The request body is invalid.","errors":[{"field":"identity_document.type","code":"invalid_choice","message":"This is not a valid choice."}],"request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-5":{"title":"example-5","value":{"error":{"type":"validation_error","code":"invalid_request","message":"The request body is invalid.","errors":[{"field":"identity_document","code":"unexpected_field","message":"identity_document is accepted only on an identity_document_required request."}],"request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-6":{"title":"example-6","value":{"error":{"type":"validation_error","code":"invalid_request","message":"Send at least one answer, one upload or the identity document.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-7":{"title":"example-7","value":{"error":{"type":"validation_error","code":"invalid_request","message":"answers must be a list of entries-v1 objects.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-8":{"title":"example-8","value":{"error":{"type":"validation_error","code":"invalid_request","message":"uploads must be a list of upload ids.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-9":{"title":"example-9","value":{"error":{"type":"validation_error","code":"invalid_request","message":"At most 10 uploads per answer.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-10":{"title":"example-10","value":{"error":{"type":"validation_error","code":"invalid_answers","message":"Each question may be answered once.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-11":{"title":"example-11","value":{"error":{"type":"validation_error","code":"out_of_range","message":"A value is outside the schema's input bounds.","errors":[{"question_key":"body_measurements","field":"height","code":"out_of_range","message":"The value is outside the allowed range.","min":100,"max":250}],"request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}},"example-12":{"title":"example-12","value":{"error":{"type":"validation_error","code":"upload_unusable","message":"Each upload can be used once.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"The request body is invalid.","exampleType":"examples"},"ba94fe11-7ef3-40d3-8d77-ba8d3fd4755c":{"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for the most restrictive limit that applies. Absent on refusals made before the throttles run (brand header, flag off, partner_not_live)."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the current window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix time, in seconds, when the window frees up."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error.","required":["code","message","request_id","type"],"properties":{"type":{"type":"string","description":"Error type, for example validation_error or rate_limited; see Errors in the partner guides.","enum":["api_error","authentication_error","conflict","invalid_request","not_found","permission_error","rate_limited","validation_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"A stable, machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"A human-readable explanation; do not parse it.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"request_id":{"type":"string","description":"Quote this identifier when you contact support.","isRequired":true,"uniqueKey":"error.request_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code for this item.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable message. It never repeats the submitted value.","isRequired":true,"uniqueKey":"error.errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"string","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.0","typeLabel":"string"},{"type":"null","description":"The request field the problem refers to, or null when none.","uniqueKey":"error.errors.items.[INDEX].field.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].field","typeLabel":"string | null"},"question_key":{"oneOf":[{"type":"string","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.0","typeLabel":"string"},{"type":"null","description":"The questionnaire question the problem refers to, or null when the entry named none.","uniqueKey":"error.errors.items.[INDEX].question_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.errors.items.[INDEX].question_key","typeLabel":"string | null"},"min":{"type":"number","format":"double","description":"On out_of_range: the lowest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].min","typeLabel":"number\u003cdouble>"},"max":{"type":"number","format":"double","description":"On out_of_range: the highest allowed value, when the schema sets one.","uniqueKey":"error.errors.items.[INDEX].max","typeLabel":"number\u003cdouble>"}},"required":["code","message"],"uniqueKey":"error.errors.items.[INDEX]","typeLabel":"object"},"description":"Field-level problems, when any.","uniqueKey":"error.errors","typeLabel":"object[]"},"current":{"type":"object","description":"On 409 schema_outdated: the schema_version and schema_hash currently published.","required":["schema_hash","schema_version"],"properties":{"schema_version":{"type":"string","description":"The published schema_version.","isRequired":true,"uniqueKey":"error.current.schema_version","typeLabel":"string"},"schema_hash":{"type":"string","description":"A hash accepted for the published version.","isRequired":true,"uniqueKey":"error.current.schema_hash","typeLabel":"string"}},"uniqueKey":"error.current","typeLabel":"object"},"current_notice_version":{"type":"string","description":"On 422 consent_notice_outdated: the patient notice version to show and record.","uniqueKey":"error.current_notice_version","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"example-1":{"title":"example-1","value":{"error":{"type":"rate_limited","code":"throttled","message":"Request was throttled. Expected available in 12 seconds.","request_id":"req_5f0c3a9d2b7e4f18a6c1d9e3b2a7f4c8"}}}},"exampleType":"examples"}},"description":"Too many requests; wait for the number of seconds in Retry-After.","exampleType":"examples"}},"security":{"5b1c1f74-4f7a-4f8f-8021-c9fb83584d20":{"PartnerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Partner API key sent as Authorization: Bearer \u003capi key>. Test keys and live keys are separate.","scopes":[],"schemeName":"PartnerApiKey"}}},"servers":{"a52f5261-d6ca-4f76-8d3e-ad58db271710":{"url":"https://api.hi-doctor.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Partner API key sent as Authorization: Bearer \u003capi key>. Test keys and live keys are separate.","scopes":[],"schemeName":"PartnerApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Partner API key sent as Authorization: Bearer \u003capi key>. Test keys and live keys are separate.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"PartnerApiKey","name":"Authorization"}],"title":"PartnerApiKey"}]},"originalFileLocation":"api-reference/partner/openapi.json"},"subdomain":"hi-doctor-ai","siteName":"Hi Doctor","title":"Answer an information request by id - Hi Doctor","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T14:38:28.175Z","originalFileLocation":"api-reference/information-requests/answer-an-information-request-by-id.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient\u0026#x27;s account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open. Checks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone. ### Access, effects and retries Ownership: The API key\u0026#x27;s own partner and mode (test or live); another partner\u0026#x27;s or mode\u0026#x27;s records answer 404. Prerequisites: A partner API key with the consultations:write scope. Effects: Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event. Retries: A retry after a successful answer answers 409 info_request_not_open.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hi Doctor\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-image-preview:large, max-snippet:-1\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Answer an information request by id - Hi Doctor\">\u003cmeta data-mint-head property=\"og:description\" content=\"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient\u0026#x27;s account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open. Checks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone. ### Access, effects and retries Ownership: The API key\u0026#x27;s own partner and mode (test or live); another partner\u0026#x27;s or mode\u0026#x27;s records answer 404. Prerequisites: A partner API key with the consultations:write scope. Effects: Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event. Retries: A retry after a successful answer answers 409 info_request_not_open.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hi Doctor Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hi-doctor-ai.mintlify.app/_mintlify/api/og/v2?division=Information+requests\u0026amp;title=Answer+an+information+request+by+id\u0026amp;description=Answers+an+open+information+request+with+the+requested+question+keys+and%2C+when+documents+were+requested%2C+upload+ids+%28at+most+10%2C+each+used+once%29.+A+request+with\u0026amp;theme=62172df8443c9a1536d0ebde\u0026amp;signature=cf7ff976489f5cf96ecce938d43662442cefe5ffcd686814e59a147c38caeef2\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Answer an information request by id - Hi Doctor\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient\u0026#x27;s account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open. Checks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone. ### Access, effects and retries Ownership: The API key\u0026#x27;s own partner and mode (test or live); another partner\u0026#x27;s or mode\u0026#x27;s records answer 404. Prerequisites: A partner API key with the consultations:write scope. Effects: Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event. Retries: A retry after a successful answer answers 409 info_request_not_open.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hi-doctor-ai.mintlify.app/_mintlify/api/og/v2?division=Information+requests\u0026amp;title=Answer+an+information+request+by+id\u0026amp;description=Answers+an+open+information+request+with+the+requested+question+keys+and%2C+when+documents+were+requested%2C+upload+ids+%28at+most+10%2C+each+used+once%29.+A+request+with\u0026amp;theme=62172df8443c9a1536d0ebde\u0026amp;signature=cf7ff976489f5cf96ecce938d43662442cefe5ffcd686814e59a147c38caeef2\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/hi-doctor-ai/nurYHPmYbdMdWury/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hi Doctor\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#157A5C\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"author\" content=\"Hi Doctor\">\u003cmeta data-mint-head name=\"theme-color\" content=\"#157A5C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/information-requests/answer-an-information-request-by-id.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://hi-doctor.ai/#organization\",\"name\":\"Hi Doctor\",\"url\":\"https://hi-doctor.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hi-doctor-ai/PIEJYA1zSavoVnhH/logo/wordmark-on-light.svg?fit=max\u0026auto=format\u0026n=PIEJYA1zSavoVnhH\u0026q=85\u0026s=c7243fb417e4d3908f3b5fc634a28923\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.hi-doctor.ai#website\",\"name\":\"Hi Doctor\",\"url\":\"https://docs.hi-doctor.ai\",\"publisher\":{\"@id\":\"https://hi-doctor.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id#webpage\",\"url\":\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id\",\"name\":\"Answer an information request by id\",\"description\":\"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient's account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open. Checks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone. ### Access, effects and retries Ownership: The API key's own partner and mode (test or live); another partner's or mode's records answer 404. Prerequisites: A partner API key with the consultations:write scope. Effects: Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event. Retries: A retry after a successful answer answers 409 info_request_not_open.\",\"dateModified\":\"2026-11-04T14:38:28.175Z\",\"isPartOf\":{\"@id\":\"https://docs.hi-doctor.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Partner API reference\",\"item\":\"https://docs.hi-doctor.ai/api-reference/connectivity/check-an-api-key\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Information requests\",\"item\":\"https://docs.hi-doctor.ai/api-reference/information-requests/list-a-consultations-information-requests\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Answer an information request by id\",\"item\":\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id#apireference\",\"headline\":\"Answer an information request by id\",\"name\":\"Answer an information request by id\",\"description\":\"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient's account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open. Checks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope. Same as the nested route, addressed by the request id alone. ### Access, effects and retries Ownership: The API key's own partner and mode (test or live); another partner's or mode's records answer 404. Prerequisites: A partner API key with the consultations:write scope. Effects: Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event. Retries: A retry after a successful answer answers 409 info_request_not_open.\",\"url\":\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id\",\"mainEntityOfPage\":{\"@id\":\"https://docs.hi-doctor.ai/api-reference/information-requests/answer-an-information-request-by-id#webpage\"},\"dateModified\":\"2026-11-04T14:38:28.175Z\",\"publisher\":{\"@id\":\"https://hi-doctor.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.hi-doctor.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hi Doctor\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hi Doctor","nav":{"global":{"anchors":[{"anchor":"OpenAPI spec","icon":"file-code","href":"/api-reference/openapi.json"},{"anchor":"Add the MCP connector","icon":"plug","href":"https://claude.ai/customize/connectors?modal=add-custom-connector\u0026connectorName=Hi%20Doctor\u0026connectorUrl=https://mcp.hi-doctor.ai/mcp"},{"anchor":"AI integration prompt","icon":"wand-magic-sparkles","href":"/mcp/ai-integration"},{"anchor":"hi-doctor.ai","icon":"house-medical","href":"https://hi-doctor.ai"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/introduction"}]},{"tab":"Partners","groups":[{"group":"Start","pages":[{"title":"Hi Doctor Partner API overview for developers","sidebarTitle":"Partner API overview","href":"/partners/overview"},{"title":"How the Hi Doctor Partner API works: roles and flow","sidebarTitle":"How it works","href":"/partners/how-it-works"},{"title":"Partner API quickstart: your first test consultation","sidebarTitle":"Quickstart","href":"/partners/quickstart"},{"title":"Partner API authentication: keys, scopes and rotation","sidebarTitle":"Authentication","href":"/partners/authentication"},{"title":"Partner API test mode: synthetic consultations","sidebarTitle":"Test mode","href":"/partners/test-mode"}]},{"group":"Build","pages":[{"title":"Partner API questionnaires: schema and answer format","sidebarTitle":"Questionnaires and schema","href":"/partners/questionnaires-and-schema"},{"title":"Submit a consultation with the Partner API","sidebarTitle":"Submit a consultation","href":"/partners/submit-a-consultation"},{"title":"Partner API photos and files: uploads and limits","sidebarTitle":"Photos and files","href":"/partners/photos"},{"title":"Partner API consultation lifecycle and statuses","sidebarTitle":"Consultation lifecycle","href":"/partners/consultation-lifecycle"},{"title":"Partner API prescriptions: data, status and events","sidebarTitle":"Prescriptions","href":"/partners/prescriptions"},{"title":"Partner API webhooks: events, signing and retries","sidebarTitle":"Webhooks","href":"/partners/webhooks"},{"title":"Partner API information requests from the doctor","sidebarTitle":"Information requests","href":"/partners/information-requests"},{"title":"Partner API errors: envelope and error codes","sidebarTitle":"Errors","href":"/partners/errors"},{"title":"Partner API rate limits: per key and per partner","sidebarTitle":"Rate limits","href":"/partners/rate-limits"},{"title":"Partner API idempotency: retry submissions safely","sidebarTitle":"Idempotency","href":"/partners/idempotency"},{"title":"Partner API pagination with opaque cursors","sidebarTitle":"Pagination","href":"/partners/pagination"},{"title":"Partner API versioning policy and changelog","sidebarTitle":"Versioning and changelog","href":"/partners/versioning-and-changelog"}]},{"group":"Operate","pages":[{"title":"Hi Doctor Business portal for Partner API teams","sidebarTitle":"Business portal","href":"/partners/business-portal"},{"title":"Partner API security, GDPR and patient consent","sidebarTitle":"Security and compliance","href":"/partners/security-and-compliance"},{"title":"Partner API go-live checklist before live mode","sidebarTitle":"Go-live checklist","href":"/partners/go-live-checklist"},{"title":"Partner API FAQ for developers","sidebarTitle":"Developer FAQ","href":"/partners/faq"}]},{"group":"Partner API reference","pages":[{"group":"Connectivity","pages":[{"title":"Check an API key","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/ping/","href":"/api-reference/connectivity/check-an-api-key"}]},{"group":"Products","pages":[{"title":"List products","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/products/","href":"/api-reference/products/list-products"}]},{"group":"Questionnaires","pages":[{"title":"Get a questionnaire","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/questionnaires/{slug}/","href":"/api-reference/questionnaires/get-a-questionnaire"}]},{"group":"Files","pages":[{"title":"Upload a photo or document","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/files/","href":"/api-reference/files/upload-a-photo-or-document"}]},{"group":"Consultations","pages":[{"title":"List consultations","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/consultations/","href":"/api-reference/consultations/list-consultations"},{"title":"Submit a consultation","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/consultations/","href":"/api-reference/consultations/submit-a-consultation"},{"title":"Get a consultation by id","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/consultations/{consultation_id}/","href":"/api-reference/consultations/get-a-consultation-by-id"},{"title":"Cancel a consultation","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/consultations/{consultation_id}/cancel/","href":"/api-reference/consultations/cancel-a-consultation"}]},{"group":"Patients","pages":[{"title":"List patients","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/patients/","href":"/api-reference/patients/list-patients"},{"title":"Get a patient","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/patients/{patient_id}/","href":"/api-reference/patients/get-a-patient"},{"title":"Record a consent withdrawal","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/patients/{patient_id}/consent-withdrawal/","href":"/api-reference/patients/record-a-consent-withdrawal"}]},{"group":"Information requests","pages":[{"title":"List a consultation's information requests","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/consultations/{consultation_id}/info-requests/","href":"/api-reference/information-requests/list-a-consultations-information-requests"},{"title":"Answer an information request","description":"Answers an open information request with the requested question keys and, when documents were requested, upload ids (at most 10, each used once). A request with reason_code identity_document_required is answered with identity_document (it may carry no question keys); the document is validated, stored on the patient's account in live mode and never echoed. The consultation returns to review once answered; a retry after a successful answer is refused with 409 info_request_not_open.\n\nChecks run in this order: the request must exist (404), be open (409 info_request_not_open, also for a request withdrawn by a consent withdrawal), the patient must not have withdrawn consent (409 consent_withdrawn) and the consultation must still await information (409 case_closed). Then the body must carry at least one answer, one upload or the identity document: an empty body is refused with 422 invalid_request before identity_document_required or any other check of its contents. Requires the consultations:write scope.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live); another partner's or mode's records answer 404.\n\n**Prerequisites:** A partner API key with the `consultations:write` scope.\n\n**Effects:** Stores the answers, attaches the uploads and returns the consultation to review; emits a consultation webhook event.\n\n**Retries:** A retry after a successful answer answers 409 info_request_not_open.","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/consultations/{consultation_id}/info-requests/{request_id}/answer/","href":"/api-reference/information-requests/answer-an-information-request"},{"title":"Answer an information request by id","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/info-requests/{request_id}/answer/","href":"/api-reference/information-requests/answer-an-information-request-by-id"}]},{"group":"Prescriptions","pages":[{"title":"List prescriptions","description":"Prescriptions issued for your consultations in this key's mode, newest first. The patient receives the prescription itself through the route in fulfilment.route. Requires the prescriptions:read scope.\n\n### Access, effects and retries\n**Ownership:** The API key's own partner and mode (test or live).\n\n**Prerequisites:** A partner API key with the `prescriptions:read` scope.\n\n**Effects:** None.\n\n**Retries:** Safe to retry.","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/prescriptions/","href":"/api-reference/prescriptions/list-prescriptions"},{"title":"Get a prescription","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/prescriptions/{prescription_id}/","href":"/api-reference/prescriptions/get-a-prescription"}]},{"group":"Webhooks","pages":[{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/webhook-endpoints/","href":"/api-reference/webhooks/list-webhook-endpoints"},{"title":"Create a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/webhook-endpoints/","href":"/api-reference/webhooks/create-a-webhook-endpoint"},{"title":"Get a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/webhook-endpoints/{endpoint_id}/","href":"/api-reference/webhooks/get-a-webhook-endpoint"},{"title":"Update a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json patch /v1/partner/webhook-endpoints/{endpoint_id}/","href":"/api-reference/webhooks/update-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json delete /v1/partner/webhook-endpoints/{endpoint_id}/","href":"/api-reference/webhooks/delete-a-webhook-endpoint"},{"title":"Rotate a webhook signing secret","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/webhook-endpoints/{endpoint_id}/rotate-secret/","href":"/api-reference/webhooks/rotate-a-webhook-signing-secret"},{"title":"Send a test event","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/webhook-endpoints/{endpoint_id}/test/","href":"/api-reference/webhooks/send-a-test-event"},{"title":"List deliveries for an endpoint","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json get /v1/partner/webhook-endpoints/{endpoint_id}/deliveries/","href":"/api-reference/webhooks/list-deliveries-for-an-endpoint"},{"title":"Replay a delivery","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/webhook-deliveries/{delivery_id}/replay/","href":"/api-reference/webhooks/replay-a-delivery"}]},{"group":"Test mode","pages":[{"title":"Move a test consultation forward","deprecated":null,"version":null,"openapi":"/api-reference/partner/openapi.json post /v1/partner/test/consultations/{consultation_id}/advance/","href":"/api-reference/test-mode/move-a-test-consultation-forward"}]}]}]},{"tab":"Articles","pages":[{"title":"Articles","href":"/blog/connect-hi-doctor-mcp"}]},{"tab":"Health library","pages":[{"title":"Health library","href":"/library/overview"}]}]},"basePath":"","title":"Answer an information request by id - Hi Doctor","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}