Skip to main content

FinOps Resource Groups

Group platform resources so a budget or a resource schedule can cover them as one, including group lifecycle management and per-group resource membership.

All endpoints require authentication via X-API-Key header and the appropriate scope.


Resource Group Object​

{
"_id": "rg_abc123",
"name": "Production Workloads",
"description": "All production-tier compute and storage",
"status": "active",
"ownerId": "user_456",
"organizationId": "org_xyz",
"resources": [
{
"type": "workflow",
"resourceId": "wf_001",
"name": "ingest-pipeline",
"addedAt": "2025-01-20T09:00:00Z",
"addedBy": "user_456"
}
],
"createdAt": "2025-01-15T10:30:00Z",
"updatedAt": "2025-02-01T14:22:00Z",
"createdBy": "user_456"
}

status is active or archived. A new group is active.


GET /api/v1/finops/resource-groups​

List resource groups with pagination, search, and status filters.

Scope: finops:read

Query Parameters

ParameterTypeRequiredDescription
qstringNoSearch term for name or description
statusstringNoFilter by group status: active or archived
limitintegerNoNumber of results to return (default: 50, max: 200)
cursorstringNometa.nextCursor of the previous page; omit for the first page
sortstringNoSort field, prefixed with - for descending (default: -createdAt)

Response 200 OK

{
"data": [
{
"_id": "rg_abc123",
"name": "Production Workloads",
"status": "active"
}
],
"meta": {
"total": 1,
"limit": 50,
"nextCursor": null,
"requestId": "req_abc123"
}
}

POST /api/v1/finops/resource-groups​

Create a new resource group.

Scope: finops:write

Request Body

{
"name": "Production Workloads",
"description": "All production-tier compute and storage"
}
FieldTypeRequiredDescription
namestringYesResource group name
descriptionstringNoResource group description

Response 201 Created

Returns the created Resource Group object, with status active and no resources.


GET /api/v1/finops/resource-groups/:id​

Get a single resource group by ID.

Scope: finops:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesResource group ID

Response 200 OK

Returns the full Resource Group object.


PATCH /api/v1/finops/resource-groups/:id​

Update an existing resource group by ID.

Scope: finops:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesResource group ID

Request Body

{
"name": "Production Workloads (revised)",
"description": "Updated description"
}
FieldTypeRequiredDescription
namestringNoResource group name
descriptionstringNoResource group description
statusstringNoactive or archived

Response 200 OK

Returns the updated Resource Group object.


DELETE /api/v1/finops/resource-groups/:id​

Delete a resource group by ID.

Scope: finops:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesResource group ID

Response 204 No Content


POST /api/v1/finops/resource-groups/:id/resources​

Add a resource to a resource group.

Scope: finops:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesResource group ID

Request Body

{
"type": "workflow",
"resourceId": "wf_001",
"name": "ingest-pipeline"
}
FieldTypeRequiredDescription
typestringYesResource type
resourceIdstringYesID of the resource to add
namestringYesResource name

Response 200 OK

Returns the updated Resource Group object.


DELETE /api/v1/finops/resource-groups/:groupId/resources/:id​

Remove a resource from a resource group.

Scope: finops:write

Path Parameters

ParameterTypeRequiredDescription
groupIdstringYesResource group ID
idstringYesResource ID to remove

Query Parameters

ParameterTypeRequiredDescription
resourceTypestringYesType of the resource to remove (the type it was added with)

Response 200 OK

Returns the updated Resource Group object.