Add Products to Case
Endpoint Details
Base URLs
- Production:
https://api.care360-next.carevalidate.com/api/v1/cases/:caseId/products - Staging:
https://api-staging.care360-next.carevalidate.com/api/v1/cases/:caseId/products
Method: POST
Content-Type: application/json
Authentication
Required Headers
Authorization: Bearer <access_token>
Content-Type: application/json
Request Body Structure
Root Fields
| Field | Type | Required | Description |
|---|---|---|---|
products | array | Yes | Products to attach to the case |
Products
Each case can include one or more products. Each item in the products array may include an optional subscription object. Other fields (e.g. id, form, visitType) are unchanged.
Product item fields
| Field | Type | Required | Description |
|---|---|---|---|
id | string (UUID) | Yes | Organization product ID |
visitType | string | No | Visit type (e.g. ASYNC_TEXT_EMAIL, SYNC_IN_PERSON, SYNC_PHONE,SYNC_VIDEO) |
form | object | No | Healthcare intake form (see Product Form) |
subscription | object | No | Optional subscription for this case product. If provided, values are stored on the case product and returned in GET /api/v1/cases and in GraphQL. |
Subscription object (optional)
When attaching a product, you may include a subscription object with the following fields:
| Field | Type | Required | Description |
|---|---|---|---|
interval | string | No | One of: "day", "week", "month", "year" (case-sensitive, lowercase). |
intervalCount | integer | No | Positive integer (e.g. 1, 2, 3, 6, 12). |
Constraints:
- interval: Only
"day","week","month", or"year"(lowercase). - intervalCount: Positive integer.
subscriptionis optional; omit it if the product has no subscription. When returned (e.g. in GET /api/v1/cases or GraphQL), bothintervalandintervalCountcan be null if no subscription data is set.
Example product with subscription:
{
"id": "<organizationProductId-uuid>",
"subscription": {
"interval": "month",
"intervalCount": 3
}
}
Example without subscription (other fields unchanged):
{
"id": "product-uuid",
"visitType": "SYNC_VIDEO",
"form": {
"title": "Healthcare Intake Form",
"description": "Patient intake form for healthcare services",
"questions": []
}
}
Product Form
{
"title": "Healthcare Form",
"description": "Patient form",
"questions": []
}
Form Questions
Question Fields
| Field | Type | Required | Description |
|---|---|---|---|
question | string | Yes | Question text |
answer | string | Yes | User response |
type | string | Yes | Question type |
required | boolean | No | Mandatory flag |
phi | boolean | No | PHI indicator |
options | array | No | Selectable options |
Supported Question Types
- TEXT
- SINGLESELECT
- MULTISELECT
PHI Handling
Questions marked with "phi": true are treated as Protected Health Information (PHI) and are stored and processed according to HIPAA compliance requirements.
Example Request
Example with optional subscription on a product:
{
"products": [
{
"id": "<organizationProductId-uuid>",
"subscription": {
"interval": "month",
"intervalCount": 3
}
}
]
}
Full example (products with and without subscription):
{
"products": [
{
"id": "8dff2c47-b2ab-42d8-9af0-4c4dbca8b4b6",
"visitType": "SYNC_VIDEO",
"subscription": {
"interval": "month",
"intervalCount": 3
}
},
{
"id": "621527f5-3877-48b3-b27f-df395a5308bb",
"form": {
"title": "Healthcare Intake Form",
"description": "Patient intake form for healthcare services",
"questions": [
{
"question": "How much do you weigh QAZ?",
"answer": "138 lbs",
"phi": true,
"type": "TEXT"
},
{
"question": "What is your height new?",
"answer": "5' 7''",
"phi": true,
"type": "TEXT"
},
{
"question": "What are your weight loss goals?",
"answer": "Lose 1-20lbs for good",
"type": "SINGLESELECT",
"required": true,
"options": [
"Lose 1-20lbs for good",
"Lose 21-50lbs for good",
"Lose over 50 for good",
"Maintain my healthy weight",
"None of the above",
"other"
]
},
{
"question": "What weight loss initiatives have you tried in the past? Select all that apply",
"answer": "[\"Other GLP1's\"]",
"type": "MULTISELECT",
"required": true,
"options": [
"Exercise",
"Dieting",
"Weight-loss Supplements",
"Intermittent Fasting",
"Other GLP1's",
"Other"
]
},
{
"question": "BMI Calculation",
"answer": "21.61",
"type": "TEXT"
},
{
"question": "What is your age?",
"answer": "58",
"type": "TEXT"
},
{
"question": "Are you currently taking any GLP-1 medications?",
"answer": "Yes",
"type": "SINGLESELECT",
"required": true,
"options": [
"Yes",
"No"
]
},
{
"question": "Which GLP-1 medication are you currently taking?",
"answer": "Compounded Semaglutide Injections ",
"type": "SINGLESELECT",
"options": [
"Compounded Semaglutide Injections",
"Compounded Tirzepatide Injections",
"Branded Semaglutide (Wegovy or Ozempic)",
"Branded Tirzepatide (Zepbound or Mounjaro)",
"Oral Semaglutide",
"Oral Tirzepatide"
]
},
{
"question": "What was the approximate date of your last dose?",
"answer": "2025-10-19",
"type": "SINGLESELECT"
},
{
"question": "What was the strength of your last dose? Please provide strength of last dose in milligrams (mg) if known",
"answer": "50 ml",
"type": "SINGLESELECT"
},
{
"question": "GLP-1 is available as an injection or a dissolvable tablet. Which do you prefer?",
"answer": "I prefer to inject",
"type": "SINGLESELECT",
"required": true,
"options": [
"I prefer to inject",
"I prefer a tablet"
]
}
]
}
}
]
}
Response Format
Success Response
{
"success": true,
"data": {
"caseId": "550e8400-e29b-41d4-a716-446655440000"
}
}
Error Responses
| Code | Description |
|---|---|
| 400 | Invalid request |
| 401 | Unauthorized |
| 409 | Case conflict |
| 422 | Validation failed |
| 500 | Internal server error |
Versioning
API Version: v2.2