Skip to main content

Update Case Product

POST/api/v1/cases/:caseId

Updates a product associated with a case. Supports closing a case product with an optional reason, or updating the product's due date.

cv-api-key
Productionhttps://api.care360-next.carevalidate.com/api/v1/cases/:caseId
Staginghttps://api-staging.care360-next.carevalidate.com/api/v1/cases/:caseId

Parameters

Headers
cv-api-keystringrequired
Your unique API key for authentication.
Content-Typestringrequired
Must be application/json.
Example: application/json
Path Parameters
caseIdstring (UUID)required
Unique identifier of the case
Example: ec5e0d29-bf87-46b9-98e7-03848442fe53
Request Body
actionstringrequired
Must be exactly `UPDATE_CASE_PRODUCT`
Values:UPDATE_CASE_PRODUCT
caseProductInputobjectrequired
Object containing the case product update details
Show 4 child properties
productIdstring (UUID)required
Unique identifier of the product to update
statusstringoptional
New status for the case product. Cannot be provided together with `dueDate`.
Values:CLOSE
reasonstringoptional
Reason for the status change. Only allowed when status is CLOSE.
dueDatestring (ISO 8601 date)optional
New due date for the case product. Cannot be in the past, and cannot be provided together with `status`. The product must be open (status updates and closed/inactive products are rejected).
Example: 2026-08-15
note

Provide either status or dueDate in a single request — not both. A dueDate can only be updated on an open, non-closed case product.

Examples

curl -X POST "https://api-staging.care360-next.carevalidate.com/api/v1/cases/ec5e0d29-bf87-46b9-98e7-03848442fe53" \
-H "cv-api-key: <redacted>" \
-H "Content-Type: application/json" \
-d '{
"action": "UPDATE_CASE_PRODUCT",
"caseProductInput": {
"productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "CLOSE",
"reason": "Treatment completed"
}
}'

Responses

200SuccessCase product updated successfully.
{
"status": 200,
"success": true,
"message": "Case product updated successfully",
"data": {
"success": true
}
}
400Bad RequestReturned when the case or product ID is invalid, the status string is invalid, or the API key is missing.
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "No Case found for provided details!",
"code": "VALIDATION_ERROR"
}
400Validation ErrorReturned when a field fails validation (e.g., invalid UUID format).
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "caseProductInput.productId, Product id must be a valid UUID",
"code": "VALIDATION_ERROR"
}
400Due Date In PastReturned when the provided due date is in the past.
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "caseProductInput.dueDate, Due date cannot be in the past",
"code": "VALIDATION_ERROR"
}
400Due Date With StatusReturned when both dueDate and status are provided in the same request.
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "dueDate and status cannot be updated in the same request",
"code": "VALIDATION_ERROR"
}
400Due Date On Closed/Inactive ProductReturned when a due date update is attempted on a closed or inactive case product. Due dates can only be updated on open products.
{
"status": 400,
"success": false,
"message": "Invalid request",
"error": "Due date can only be updated for an open case product",
"code": "VALIDATION_ERROR"
}
401UnauthorizedInvalid or missing API key, or organization not found.
{
"status": 401,
"success": false,
"message": "Unauthorized"
}
403ForbiddenCase does not belong to the organization, or permission denied.
{
"status": 403,
"success": false,
"message": "Forbidden"
}

Try It Out

info

Case Product Close activity notifications are sent via webhooks.