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
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | No | Search term for name or description |
status | string | No | Filter by group status: active or archived |
limit | integer | No | Number of results to return (default: 50, max: 200) |
cursor | string | No | meta.nextCursor of the previous page; omit for the first page |
sort | string | No | Sort 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"
}
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Resource group name |
description | string | No | Resource 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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Resource 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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Resource group ID |
Request Body
{
"name": "Production Workloads (revised)",
"description": "Updated description"
}
| Field | Type | Required | Description |
|---|---|---|---|
name | string | No | Resource group name |
description | string | No | Resource group description |
status | string | No | active 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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Resource 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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Resource group ID |
Request Body
{
"type": "workflow",
"resourceId": "wf_001",
"name": "ingest-pipeline"
}
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Resource type |
resourceId | string | Yes | ID of the resource to add |
name | string | Yes | Resource 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
| Parameter | Type | Required | Description |
|---|---|---|---|
groupId | string | Yes | Resource group ID |
id | string | Yes | Resource ID to remove |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
resourceType | string | Yes | Type of the resource to remove (the type it was added with) |
Response 200 OK
Returns the updated Resource Group object.