Manage OneUptime monitoring resources
Project description
Pulumi OneUptime Provider
A native Pulumi provider for managing OneUptime monitoring resources.
Installation
Go
go get github.com/ottercoders/pulumi-oneuptime/sdk/go/oneuptime
Node.js
npm install @ottercoders/pulumi-oneuptime
Python
pip install pulumi-oneuptime
Configuration
The provider requires an API key and optionally a base URL and default project ID.
| Property | Environment Variable | Required | Default | Description |
|---|---|---|---|---|
apiKey |
ONEUPTIME_API_KEY |
Yes | API key for authentication | |
baseUrl |
ONEUPTIME_BASE_URL |
No | https://oneuptime.com |
Base URL of the OneUptime instance |
projectId |
ONEUPTIME_PROJECT_ID |
No | Default project ID for all resources |
Using Pulumi Config
pulumi config set oneuptime:apiKey --secret <your-api-key>
pulumi config set oneuptime:projectId <your-project-id>
# For self-hosted instances
pulumi config set oneuptime:baseUrl https://your-instance.example.com
Using Environment Variables
export ONEUPTIME_API_KEY="your-api-key"
export ONEUPTIME_PROJECT_ID="your-project-id"
Resources
All resources (except Project) accept an optional projectId property. When omitted, the provider-level projectId config is used. Every resource exposes resourceId, slug, createdAt, and updatedAt as outputs.
| Resource | Description |
|---|---|
Team |
Manages teams within a project |
Monitor |
Manages monitors (API, website, etc.) |
StatusPage |
Manages public/private status pages |
Incident |
Manages incidents |
OnCallDutyPolicy |
Manages on-call duty escalation policies |
Label |
Manages labels for categorizing resources |
MonitorGroup |
Manages logical groupings of monitors |
IncidentState |
Manages incident workflow states (e.g. Created, Acknowledged, Resolved) |
IncidentSeverity |
Manages incident severity levels (e.g. Critical, Major, Minor) |
AlertState |
Manages alert workflow states |
AlertSeverity |
Manages alert severity levels |
Project |
Manages OneUptime projects |
Resource Properties
Team
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Team name |
description |
string | No | Team description |
Monitor
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Monitor name |
monitorType |
string | Yes | Type of monitor (e.g. API, Website) |
currentMonitorStatusId |
string | Yes | ID of the current monitor status |
description |
string | No | Monitor description |
disableActiveMonitoring |
bool | No | Disable active monitoring |
monitoringInterval |
string | No | Monitoring check interval |
StatusPage
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Status page name |
description |
string | No | Status page description |
pageTitle |
string | No | HTML page title |
pageDescription |
string | No | Page description text |
isPublicStatusPage |
bool | No | Whether the page is public |
showIncidentHistoryInDays |
int | No | Days of incident history to show |
showAnnouncementHistoryInDays |
int | No | Days of announcement history |
showScheduledEventHistoryInDays |
int | No | Days of scheduled event history |
Incident
| Property | Type | Required | Description |
|---|---|---|---|
title |
string | Yes | Incident title |
currentIncidentStateId |
string | Yes | ID of the current state |
incidentSeverityId |
string | Yes | ID of the severity level |
description |
string | No | Incident description |
declaredAt |
string | No | When the incident was declared |
OnCallDutyPolicy
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Policy name |
description |
string | No | Policy description |
repeatPolicyIfNoOneAcknowledges |
bool | No | Repeat if no acknowledgement |
repeatPolicyIfNoOneAcknowledgesNoOfTimes |
int | No | Number of times to repeat |
Label
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Label name |
color |
string | Yes | Hex color code (e.g. #e74c3c) |
description |
string | No | Label description |
MonitorGroup
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Group name |
description |
string | No | Group description |
IncidentState
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | State name |
color |
string | Yes | Hex color code |
description |
string | No | State description |
isCreatedState |
bool | No | Mark as the initial created state |
isAcknowledgedState |
bool | No | Mark as the acknowledged state |
isResolvedState |
bool | No | Mark as the resolved state |
order |
int | No | Display order |
IncidentSeverity
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Severity name |
color |
string | Yes | Hex color code |
description |
string | No | Severity description |
order |
int | No | Display order (1 = most severe) |
AlertState
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | State name |
color |
string | Yes | Hex color code |
description |
string | No | State description |
isCreatedState |
bool | No | Mark as the initial created state |
isAcknowledgedState |
bool | No | Mark as the acknowledged state |
isResolvedState |
bool | No | Mark as the resolved state |
order |
int | No | Display order |
AlertSeverity
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Severity name |
color |
string | Yes | Hex color code |
description |
string | No | Severity description |
order |
int | No | Display order (1 = most severe) |
Project
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Project name |
description |
string | No | Project description |
Note: The
Projectresource does not accept aprojectIdproperty since it represents the project itself.
Example
YAML
name: oneuptime-example
runtime: yaml
resources:
engineering-team:
type: oneuptime:resources:Team
properties:
name: Engineering
description: Engineering team managed by Pulumi
api-monitor:
type: oneuptime:resources:Monitor
properties:
name: API Health Check
monitorType: API
currentMonitorStatusId: ${monitorStatusId}
status-page:
type: oneuptime:resources:StatusPage
properties:
name: Public Status
pageTitle: Service Status
isPublicStatusPage: true
showIncidentHistoryInDays: 14
env-label:
type: oneuptime:resources:Label
properties:
name: production
color: "#e74c3c"
description: Production environment
api-monitors:
type: oneuptime:resources:MonitorGroup
properties:
name: API Monitors
description: All API health check monitors
critical-severity:
type: oneuptime:resources:IncidentSeverity
properties:
name: Critical
color: "#e74c3c"
description: Service is completely down
order: 1
TypeScript
import * as oneuptime from "@ottercoders/pulumi-oneuptime";
const team = new oneuptime.resources.Team("engineering", {
name: "Engineering",
description: "Engineering team",
});
const label = new oneuptime.resources.Label("production", {
name: "production",
color: "#e74c3c",
description: "Production environment",
});
const severity = new oneuptime.resources.IncidentSeverity("critical", {
name: "Critical",
color: "#e74c3c",
description: "Service is completely down",
order: 1,
});
Python
from pulumi_oneuptime import resources
team = resources.Team("engineering",
name="Engineering",
description="Engineering team",
)
label = resources.Label("production",
name="production",
color="#e74c3c",
description="Production environment",
)
severity = resources.IncidentSeverity("critical",
name="Critical",
color="#e74c3c",
description="Service is completely down",
order=1,
)
Development
Prerequisites
- Go 1.25+
- Pulumi CLI
Build
make provider # Build the provider binary
make install # Install to $GOPATH/bin
make schema # Generate schema.json
make sdk # Generate SDKs (Go, Node.js, Python, .NET)
make test # Run unit tests
make lint # Run linter
make clean # Remove build artifacts
Testing
Unit tests use mocked HTTP servers and require no credentials:
make test
Acceptance tests run against a real OneUptime instance:
export ONEUPTIME_API_KEY="your-key"
export ONEUPTIME_PROJECT_ID="your-project-id"
make test-acceptance
Adding a New Resource
- Create a new file in
provider/resources/(e.g.,workflow.go) - Define
Args,State, and resource structs withpulumi:"..."andjson:"..."tags - Implement
Create,Read,Update,Deletemethods following the pattern in existing resources - Register the resource in
provider/provider.go
License
Apache 2.0 - See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pulumi_oneuptime-0.1.5.tar.gz.
File metadata
- Download URL: pulumi_oneuptime-0.1.5.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9aea83924cdd60798824ef19e2e17191a7ed65e66c2878e59d525a59e14137da
|
|
| MD5 |
91d184b69081fbd4e4d55a4a459a4831
|
|
| BLAKE2b-256 |
3d6c24a3dfd67060d733e45fe6f7e69af4fc505e208fbb89922454abf118f434
|
Provenance
The following attestation bundles were made for pulumi_oneuptime-0.1.5.tar.gz:
Publisher:
release.yml on ottercoders/pulumi-oneuptime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulumi_oneuptime-0.1.5.tar.gz -
Subject digest:
9aea83924cdd60798824ef19e2e17191a7ed65e66c2878e59d525a59e14137da - Sigstore transparency entry: 1309702323
- Sigstore integration time:
-
Permalink:
ottercoders/pulumi-oneuptime@602d0a638368dd6c8a74fab3e2950180679b60f5 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/ottercoders
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@602d0a638368dd6c8a74fab3e2950180679b60f5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulumi_oneuptime-0.1.5-py3-none-any.whl.
File metadata
- Download URL: pulumi_oneuptime-0.1.5-py3-none-any.whl
- Upload date:
- Size: 36.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2634b936bb0715d21e1ed8f4ec711545f7e99fae61320817e2c0e89e17be4b4c
|
|
| MD5 |
15c7f33bce8b383140bf28139e21ec87
|
|
| BLAKE2b-256 |
fa8b8821debf77d2ecdbfe495b200de91950b86447dfc76944e550fcf9c4b931
|
Provenance
The following attestation bundles were made for pulumi_oneuptime-0.1.5-py3-none-any.whl:
Publisher:
release.yml on ottercoders/pulumi-oneuptime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulumi_oneuptime-0.1.5-py3-none-any.whl -
Subject digest:
2634b936bb0715d21e1ed8f4ec711545f7e99fae61320817e2c0e89e17be4b4c - Sigstore transparency entry: 1309702399
- Sigstore integration time:
-
Permalink:
ottercoders/pulumi-oneuptime@602d0a638368dd6c8a74fab3e2950180679b60f5 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/ottercoders
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@602d0a638368dd6c8a74fab3e2950180679b60f5 -
Trigger Event:
push
-
Statement type: