Skip to main content

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

FieldTypeRequiredDescription
productsarrayYesProducts 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

FieldTypeRequiredDescription
idstring (UUID)YesOrganization product ID
visitTypestringNoVisit type (e.g. ASYNC_TEXT_EMAIL, SYNC_IN_PERSON, SYNC_PHONE,SYNC_VIDEO)
formobjectNoHealthcare intake form (see Product Form)
subscriptionobjectNoOptional 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:

FieldTypeRequiredDescription
intervalstringNoOne of: "day", "week", "month", "year" (case-sensitive, lowercase).
intervalCountintegerNoPositive integer (e.g. 1, 2, 3, 6, 12).

Constraints:

  • interval: Only "day", "week", "month", or "year" (lowercase).
  • intervalCount: Positive integer.
  • subscription is optional; omit it if the product has no subscription. When returned (e.g. in GET /api/v1/cases or GraphQL), both interval and intervalCount can 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

FieldTypeRequiredDescription
questionstringYesQuestion text
answerstringYesUser response
typestringYesQuestion type
requiredbooleanNoMandatory flag
phibooleanNoPHI indicator
optionsarrayNoSelectable 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

CodeDescription
400Invalid request
401Unauthorized
409Case conflict
422Validation failed
500Internal server error

Versioning

API Version: v2.2