Skip to main content

Use Cases API

Use Cases describe the approved business purposes for a data product. The API lets you manage the space-level use case catalog, review product registration requests, and inspect use case coverage across a space or organization.

All endpoints are served under /api/v1.0. Paths below omit that prefix.

Endpoint Overview

MethodEndpointPurpose
GET/spaces/{slug}/use-case-workflowsList active workflow definitions that can be assigned to use cases.
GET/spaces/{slug}/use-cases/overviewList use cases with registration counts and product registrations for a space.
GET/organizations/{slug}/use-cases/overviewList use cases with product registrations across organization spaces visible to the caller.
GET/spaces/{slug}/use-casesList active use cases in a space.
POST/spaces/{slug}/use-casesCreate a use case in a space.
GET/spaces/{slug}/use-cases/{use_case_id}Get one use case with overview data.
PUT/spaces/{slug}/use-cases/{use_case_id}Update a use case.
DELETE/spaces/{slug}/use-cases/{use_case_id}Permanently delete a use case that has no active registrations.
POST/spaces/{slug}/use-cases/{use_case_id}/archiveArchive a use case.
POST/spaces/{slug}/use-cases/{use_case_id}/unarchiveRestore an archived use case.
GET/spaces/{slug}/use-cases/{use_case_id}/commentsList comments on a use case.
POST/spaces/{slug}/use-cases/{use_case_id}/commentsAdd a comment or reply to a use case.
PUT/spaces/{slug}/use-cases/{use_case_id}/comments/{comment_id}Update a use case comment.
DELETE/spaces/{slug}/use-cases/{use_case_id}/comments/{comment_id}Delete a use case comment.
GET/spaces/{slug}/products/{product_id}/use-case-registrationsList use case registrations for one product.
POST/spaces/{slug}/products/{product_id}/use-case-registrationsRequest or create a registration between a product and use case.
GET/spaces/{slug}/use-case-registrations/pendingList pending registrations in the space for governance review.
POST/spaces/{slug}/use-case-registrations/{registration_id}/reviewApprove or reject a pending registration.
DELETE/spaces/{slug}/use-case-registrations/{registration_id}Revoke a registration.

Authorization Model

Space routes resolve {slug} to the current space context. Organization overview routes resolve {slug} to an organization and aggregate only spaces the caller can access.

Use case catalog operations use the use_case resource:

ActionTypical baseline roles
viewmember, owner, steward, dpo, space_admin, superadmin
createspace_admin, superadmin
editspace_admin, superadmin
deletespace_admin, superadmin

Registration review and revocation use the use_case_registration resource and also check governance authority on the product. The reviewer must be a superadmin or have an active governance assignment on that product.

Use Case Object

Use case list and create/update responses return this shape:

{
"id": "5a8f0b7a-4181-4d81-a0c4-c17f8aa4a76b",
"name": "Customer retention analytics",
"description": "Customer behavior analysis for retention programs.",
"long_description": "Long-form markdown guidance for stewards and reviewers.",
"business_value_score": 80,
"requires_approval": true,
"workflow_id": "8ec5f4e3-40a2-4fb4-a43d-cd745c2ca813",
"workflow_name": null,
"is_archived": false
}
FieldNotes
nameRequired when creating a use case.
descriptionShort summary shown in use case lists and registration cards.
long_descriptionLonger markdown-capable description used by detail views.
business_value_scoreInteger score. Missing values are stored and returned as 0.
requires_approvalDefaults to true. If false, product registrations are approved immediately.
workflow_idOptional workflow definition identifier stored on the use case. Use /use-case-workflows to discover active definitions.
is_archivedArchived use cases are hidden from the basic list endpoint and can be included in overview calls.

List Workflows

GET /spaces/{slug}/use-case-workflows

Returns active workflow definitions that can be selected on use cases.

[
{
"id": "8ec5f4e3-40a2-4fb4-a43d-cd745c2ca813",
"name": "Governance Review",
"description": "Steward and owner approval flow"
}
]

The use case registration endpoint creates a governance request when approval is required and returns its request_id. The registration response does not include a workflow instance identifier.

Overview

GET /spaces/{slug}/use-cases/overview?search=retention&status=pending&include_archived=true
GET /organizations/{slug}/use-cases/overview?search=retention&status=pending

Use overview endpoints for governance dashboards. They return use case metadata, registration status counts, and product registration summaries.

Query parameterSpace overviewOrganization overviewNotes
searchYesYesCase-insensitive use case name search.
statusYesYesFilters returned registrations by status. Use all or omit for all statuses.
include_archivedYesNoIncludes archived use cases in the space response.
[
{
"id": "5a8f0b7a-4181-4d81-a0c4-c17f8aa4a76b",
"space_id": "d4f6b12d-5c91-48d0-aa8d-083cb6b9c72b",
"space_name": "Retail",
"space_slug": "retail",
"name": "Customer retention analytics",
"description": "Customer behavior analysis for retention programs.",
"long_description": null,
"business_value_score": 80,
"requires_approval": true,
"workflow_id": null,
"workflow_name": null,
"is_archived": false,
"status_counts": {
"pending": 1,
"approved": 2,
"rejected": 0,
"cancelled": 0
},
"registrations": [
{
"id": "a0c8e6f4-00a9-4a0e-9d7d-71b0112fc7a5",
"product_id": "9ae66075-37a4-4dd8-a13f-9f85d7a77122",
"product_name": "Customer 360",
"status": "pending",
"justification": "Used by the retention modeling team.",
"requested_by": {
"id": "6f77342c-b7ad-4c2d-af7e-c2d742466725",
"email": "steward@example.com",
"full_name": "Data Steward"
},
"requested_at": "2026-06-26T14:22:17",
"request_id": "8ac7a921-b157-4fc9-9283-01cbfcf51538"
}
]
}
]

Manage Use Cases

List Use Cases

GET /spaces/{slug}/use-cases

Returns active, non-archived use cases in name order.

Create Use Case

POST /spaces/{slug}/use-cases
Content-Type: application/json
{
"name": "Fraud detection",
"description": "Transaction scoring and case investigation.",
"long_description": "Approved for fraud operations and analyst review.",
"business_value_score": 90,
"requires_approval": true,
"workflow_id": "8ec5f4e3-40a2-4fb4-a43d-cd745c2ca813"
}

Get Use Case

GET /spaces/{slug}/use-cases/{use_case_id}

Returns one use case in the same overview shape used by /use-cases/overview, including status counts and registrations. Archived use cases can be returned by this endpoint if the caller can view them.

Update Use Case

PUT /spaces/{slug}/use-cases/{use_case_id}
Content-Type: application/json

All fields are optional. To clear the stored workflow, send "workflow_id": null.

{
"description": "Transaction scoring for fraud operations.",
"requires_approval": false,
"workflow_id": null
}

Archive And Restore

POST /spaces/{slug}/use-cases/{use_case_id}/archive
POST /spaces/{slug}/use-cases/{use_case_id}/unarchive

Archive is a soft delete. It sets archive metadata and removes the use case from the basic list endpoint. Restore clears archive metadata.

Both endpoints return:

{
"message": "Use case archived"
}

or:

{
"message": "Use case restored"
}

Delete Use Case

DELETE /spaces/{slug}/use-cases/{use_case_id}

Deletes the use case record permanently. The request fails with 409 Conflict when the use case has active pending or approved registrations.

{
"message": "Use case deleted"
}

If deletion is blocked, archive the use case or resolve active registrations first.

Registration Lifecycle

Use case registrations connect data products to the business purposes they serve. A product and use case can have only one registration record.

Registration statuses are:

StatusMeaning
pendingApproval is required and the registration is awaiting review.
approvedThe registration is active.
rejectedThe registration was reviewed and denied. A later request can reset it.
revokedA previously approved registration was revoked.
cancelledThe linked governance request was cancelled while pending.

List Product Registrations

GET /spaces/{slug}/products/{product_id}/use-case-registrations?status_filter=approved

Returns registrations for one product, newest first.

[
{
"id": "a0c8e6f4-00a9-4a0e-9d7d-71b0112fc7a5",
"product_id": "9ae66075-37a4-4dd8-a13f-9f85d7a77122",
"use_case": {
"id": "5a8f0b7a-4181-4d81-a0c4-c17f8aa4a76b",
"name": "Customer retention analytics",
"description": "Customer behavior analysis for retention programs.",
"long_description": null,
"business_value_score": 80
},
"status": "approved",
"justification": "Used by the retention modeling team.",
"requested_by": {
"id": "6f77342c-b7ad-4c2d-af7e-c2d742466725",
"email": "steward@example.com",
"full_name": "Data Steward",
"avatar_url": null
},
"requested_at": "2026-06-26T14:22:17",
"reviewed_by": {
"id": "f04a24bb-92f7-49ef-a678-c75f0994d4d2",
"email": "owner@example.com",
"full_name": "Product Owner",
"avatar_url": null
},
"reviewed_at": "2026-06-27T08:31:44",
"reviewer_notes": "Approved for the retention program.",
"request_id": "8ac7a921-b157-4fc9-9283-01cbfcf51538"
}
]

Request Registration

POST /spaces/{slug}/products/{product_id}/use-case-registrations
Content-Type: application/json
{
"use_case_id": "5a8f0b7a-4181-4d81-a0c4-c17f8aa4a76b",
"justification": "Used by the retention modeling team."
}

Behavior:

ConditionResult
requires_approval is trueCreates a pending registration and a pending governance request. The response includes request_id.
requires_approval is falseCreates an approved registration immediately.
Existing registration is pendingReturns 400 with Registration already pending.
Existing registration is approvedReturns 400 with Use case already registered.
Existing registration is rejectedResets the existing record to pending or approved, depending on current use case approval settings.
Product or use case is outside the URL spaceReturns 404.

List Pending Registrations

GET /spaces/{slug}/use-case-registrations/pending

Returns all pending registrations in the space with product summaries. Use this endpoint for governance review queues.

Review Registration

POST /spaces/{slug}/use-case-registrations/{registration_id}/review
Content-Type: application/json
{
"action": "approve",
"notes": "Approved for the stated campaign scope."
}

action must be approve or reject. The registration must currently be pending; otherwise the API returns 400. Successful review sets reviewed_by, reviewed_at, and reviewer_notes, then returns the updated registration detail.

Revoke Registration

DELETE /spaces/{slug}/use-case-registrations/{registration_id}

Sets the registration status to revoked and records the revoking reviewer and timestamp.

{
"message": "Registration revoked"
}

The endpoint verifies that the registration belongs to the URL space through its product. The caller must have governance authority on that product or be a superadmin.

Comments

Use case comments share the product comment payload shape.

GET /spaces/{slug}/use-cases/{use_case_id}/comments?search=approval
POST /spaces/{slug}/use-cases/{use_case_id}/comments
PUT /spaces/{slug}/use-cases/{use_case_id}/comments/{comment_id}
DELETE /spaces/{slug}/use-cases/{use_case_id}/comments/{comment_id}

Create a top-level comment:

{
"content_markdown": "Please confirm this use case includes only approved customer segments."
}

Create a reply by passing the parent comment identifier:

{
"content_markdown": "Confirmed for campaign-scoped records only.",
"parent_id": "b361aa2c-4428-4d80-b00c-e0f0fdcf9920"
}

List responses include pagination headers. Update requires content_markdown. Only comment authors can edit their own comments. Delete is limited to the author or an administrator.

Error Reference

StatusCause
400Duplicate pending or approved registration, invalid review action, or reviewing a non-pending registration.
403Missing space, resource, or product governance permission.
404Space, organization, use case, product, registration, or parent comment was not found in the resolved scope.
409Deleting a use case with active pending or approved registrations.

Implementation Notes

  • Use case catalog routes are mounted from the versioned API router at /api/v1.0/spaces.
  • Organization overview routes are mounted at /api/v1.0/organizations.
  • Use case records are space-scoped. Organization overview aggregates across spaces visible to the caller.
  • Registration review and revocation are product-governance actions, not only use case catalog edits.
  • If a pending governance request is cancelled through the Requests API, the linked registration status becomes cancelled.