Skip to main content

FinOps Schedules

Schedule automatic budget review cycles, cost reports, and resource-group rollups, including auto-stop/start schedules with pause/resume/execute/history controls.

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


Schedule Object

{
"_id": "sch_abc123",
"name": "Nightly auto-stop",
"description": "Stop dev workspaces every weeknight",
"scope": {
"level": "resourceGroup",
"id": "rg_dev"
},
"schedule": {
"cron": "0 22 * * 1-5",
"timezone": "America/Los_Angeles",
"action": "stop"
},
"status": "active",
"enabled": true,
"createdBy": "user_456",
"organizationId": "org_xyz",
"createdAt": "2025-01-15T10:30:00Z",
"updatedAt": "2025-02-01T14:22:00Z"
}

GET /api/v1/finops/schedules

List resource schedules with pagination, search, status, scope level, and enabled filters.

Scope: finops:read

Query Parameters

ParameterTypeRequiredDescription
searchstringNoSearch term for name or description
statusstringNoFilter by schedule status
scopeLevelstringNoFilter by scope level
enabledstringNoFilter by enabled state (true or false)
limitintegerNoNumber of results to return
offsetintegerNoNumber of results to skip
sortstringNoSort field and direction

Response 200 OK

{
"count": 1,
"limit": 20,
"offset": 0,
"items": [
{
"_id": "sch_abc123",
"name": "Nightly auto-stop",
"status": "active",
"enabled": true
}
]
}

POST /api/v1/finops/schedules

Create a new resource schedule.

Scope: finops:write

Request Body

{
"name": "Nightly auto-stop",
"scope": { "level": "resourceGroup", "id": "rg_dev" },
"schedule": {
"cron": "0 22 * * 1-5",
"timezone": "America/Los_Angeles",
"action": "stop"
},
"description": "Stop dev workspaces every weeknight"
}
FieldTypeRequiredDescription
namestringYesSchedule name
scopeobjectYesSchedule scope configuration
scheduleobjectYesSchedule timing configuration
descriptionstringNoSchedule description

Response 201 Created

{
"scheduleId": "sch_abc123"
}

GET /api/v1/finops/schedules/:id

Get a single resource schedule by ID.

Scope: finops:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesSchedule ID

Response 200 OK

Returns the full Schedule object.


PUT /api/v1/finops/schedules/:id

Update an existing resource schedule by ID.

Scope: finops:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesSchedule ID

Request Body

{
"name": "Nightly auto-stop (revised)",
"schedule": {
"cron": "0 23 * * 1-5",
"timezone": "America/Los_Angeles",
"action": "stop"
}
}
FieldTypeRequiredDescription
namestringNoSchedule name
scopeobjectNoSchedule scope configuration
scheduleobjectNoSchedule timing configuration
descriptionstringNoSchedule description

Response 200 OK

Returns the updated Schedule object.


DELETE /api/v1/finops/schedules/:id

Delete a resource schedule by ID.

Scope: finops:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesSchedule ID

Response 204 No Content


POST /api/v1/finops/schedules/:id/pause

Pause a resource schedule by ID.

Scope: finops:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesSchedule ID

Response 200 OK

{
"_id": "sch_abc123",
"status": "paused"
}

POST /api/v1/finops/schedules/:id/resume

Resume a paused resource schedule by ID.

Scope: finops:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesSchedule ID

Response 200 OK

{
"_id": "sch_abc123",
"status": "active"
}

POST /api/v1/finops/schedules/:id/execute

Execute a resource schedule immediately by ID.

Scope: finops:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesSchedule ID

Request Body

Optional body forwarded to the execution call (e.g. override arguments).

Response 200 OK

Returns the immediate execution result.


GET /api/v1/finops/schedules/:id/history

Get execution history for a resource schedule by ID.

Scope: finops:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesSchedule ID

Response 200 OK

Returns the schedule's execution history records.