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 |
StatusPageGroup |
Groups monitors on a status page |
StatusPageResource |
Links a monitor or monitor group to a status page |
OnCallDutyPolicyEscalationRule |
Escalation timing/order within an on-call policy |
OnCallDutyPolicySchedule |
Rotation schedule within an on-call policy |
OnCallDutyPolicyEscalationRuleSchedule |
Links a schedule to an escalation rule |
ProjectSSO |
OIDC/SAML SSO configuration |
Domain |
Verified email domain for SSO user matching |
ProjectSsoTeam |
Auto-assigns SSO users to a team on first login |
ApiKey |
API key lifecycle (the apiKey output is a secret) |
ApiKeyPermission |
Fine-grained permissions on an API key |
TeamMember |
Adds an existing user to a team |
TeamPermission |
Assigns permissions to a team |
MonitorTeamOwner |
Team owns a monitor |
MonitorUserOwner |
User owns a monitor |
MonitorGroupResource |
Adds a monitor to a monitor group |
Probe |
Monitoring probe registration (the key output is a secret) |
StatusPageAnnouncement |
Announcement banner on status pages |
StatusPageDomain |
Binds a custom domain to a status page |
StatusPageHeaderLink |
Link in the status page header |
StatusPageFooterLink |
Link in the status page footer |
StatusPageSubscriber |
Email/SMS/webhook subscriber |
StatusPageTeamOwner |
Team owns a status page |
StatusPageUserOwner |
User owns a status page |
IncidentTemplate |
Standardized template for incident creation |
IncidentNoteTemplate |
Reusable incident note template |
ScheduledMaintenanceEvent |
Planned maintenance window |
ScheduledMaintenanceState |
Workflow state for maintenance events |
ScheduledMaintenanceTemplate |
Template for maintenance events |
Workflow |
Automation workflow |
Bootstrap flow
The provider cannot create the very first OneUptime user or the master API key; both must be set up via the OneUptime UI:
- Install OneUptime and register an admin user via the UI
- Create a project in the UI
- Mint the master API key in Project Settings → API Keys
- Set
oneuptime:apiKeyin your Pulumi config (or exportONEUPTIME_API_KEY) - Everything else — additional API keys, team membership, permissions, monitors, etc. — is declarative from here on
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.5.0.tar.gz.
File metadata
- Download URL: pulumi_oneuptime-0.5.0.tar.gz
- Upload date:
- Size: 44.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70157ea284546901fc4594516be4102a4fde59cf2edfc5c6fa19cbf8a6c84867
|
|
| MD5 |
da414fa93862c7ec798dca5f2462160b
|
|
| BLAKE2b-256 |
f651c8462fad9a69743dd4ed57b9375748d044580dea2195b41f10efb4995152
|
Provenance
The following attestation bundles were made for pulumi_oneuptime-0.5.0.tar.gz:
Publisher:
release-please.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.5.0.tar.gz -
Subject digest:
70157ea284546901fc4594516be4102a4fde59cf2edfc5c6fa19cbf8a6c84867 - Sigstore transparency entry: 1328851555
- Sigstore integration time:
-
Permalink:
ottercoders/pulumi-oneuptime@59a9d4f25d6f54ab137b76b01cc00764c1de0317 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ottercoders
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yml@59a9d4f25d6f54ab137b76b01cc00764c1de0317 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulumi_oneuptime-0.5.0-py3-none-any.whl.
File metadata
- Download URL: pulumi_oneuptime-0.5.0-py3-none-any.whl
- Upload date:
- Size: 130.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 |
7b4a81107725088bbdd10e13411952556c892abfa66e66486245f91ab8a7a8a6
|
|
| MD5 |
827f6bc59b2ea9e9d75cd62d839a24c2
|
|
| BLAKE2b-256 |
31470d7ead9d3e9554f34e479f757863942c229b1a7b90df39b7cf69aff2ab88
|
Provenance
The following attestation bundles were made for pulumi_oneuptime-0.5.0-py3-none-any.whl:
Publisher:
release-please.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.5.0-py3-none-any.whl -
Subject digest:
7b4a81107725088bbdd10e13411952556c892abfa66e66486245f91ab8a7a8a6 - Sigstore transparency entry: 1328851603
- Sigstore integration time:
-
Permalink:
ottercoders/pulumi-oneuptime@59a9d4f25d6f54ab137b76b01cc00764c1de0317 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ottercoders
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-please.yml@59a9d4f25d6f54ab137b76b01cc00764c1de0317 -
Trigger Event:
push
-
Statement type: