1. Go to this page and download the library: Download openstatus/sdk-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
openstatus / sdk-php example snippets
penstatus\Monitor\V1\CreateHTTPMonitorRequest;
use Openstatus\Monitor\V1\HTTPMethod;
use Openstatus\Monitor\V1\HTTPMonitor;
use Openstatus\Monitor\V1\ListMonitorsRequest;
use Openstatus\Monitor\V1\NumberComparator;
use Openstatus\Monitor\V1\Periodicity;
use Openstatus\Monitor\V1\Region;
use Openstatus\Monitor\V1\StatusCodeAssertion;
use Openstatus\Sdk\ClientOptions;
use Openstatus\Sdk\OpenstatusClient;
$client = new OpenstatusClient(new ClientOptions(
apiKey: getenv('OPENSTATUS_API_KEY') ?: null,
));
// Create a monitor
$response = $client->monitor->v1->monitorService->createHTTPMonitor(
new CreateHTTPMonitorRequest([
'monitor' => new HTTPMonitor([
'name' => 'My API',
'url' => 'https://api.example.com/health',
'periodicity' => Periodicity::PERIODICITY_1M,
'method' => HTTPMethod::HTTP_METHOD_GET,
'regions' => [
Region::REGION_FLY_AMS,
Region::REGION_FLY_IAD,
Region::REGION_FLY_SYD,
],
'active' => true,
'status_code_assertions' => [
new StatusCodeAssertion([
'comparator' => NumberComparator::NUMBER_COMPARATOR_EQUAL,
'target' => 200,
]),
],
]),
]),
);
$monitor = $response->getMonitor();
printf("Monitor created: %s\n", $monitor?->getId() ?? 'unknown');
// List all monitors
$list = $client->monitor->v1->monitorService->listMonitors(new ListMonitorsRequest());
printf("Found %d monitors\n", $list->getTotalSize());
use Openstatus\Sdk\ClientOptions;
use Openstatus\Sdk\OpenstatusClient;
$client = new OpenstatusClient(new ClientOptions(
apiKey: getenv('OPENSTATUS_API_KEY') ?: null,
));
// No need to pass headers on each call.
$client->monitor->v1->monitorService->listMonitors(new ListMonitorsRequest());
$client->monitor->v1->monitorService->listMonitors(
new ListMonitorsRequest(),
['x-trace-id' => 'trace-abc'],
);
use Openstatus\Health\V1\CheckRequest;
use Openstatus\Health\V1\CheckResponse\ServingStatus;
$response = $client->health->v1->healthService->check(new CheckRequest());
echo ServingStatus::name($response->getStatus());
use Openstatus\Status_report\V1\CreateStatusReportRequest;
use Openstatus\Status_report\V1\StatusReport;
use Openstatus\Status_report\V1\StatusReportStatus;
$service = $client->statusReport->v1->statusReportService;
$response = $service->createStatusReport(new CreateStatusReportRequest([
'report' => new StatusReport([
'title' => 'Elevated error rate',
'status' => StatusReportStatus::STATUS_REPORT_STATUS_INVESTIGATING,
'status_page_ids' => ['page_123'],
]),
]));
use Openstatus\Status_report\V1\GetStatusReportRequest;
use Openstatus\Status_report\V1\ListStatusReportsRequest;
use Openstatus\Status_report\V1\UpdateStatusReportRequest;
use Openstatus\Status_report\V1\DeleteStatusReportRequest;
$service->getStatusReport(new GetStatusReportRequest(['id' => 'rep_123']));
$service->listStatusReports(new ListStatusReportsRequest());
$service->updateStatusReport(new UpdateStatusReportRequest(['id' => 'rep_123', 'report' => $updated]));
$service->deleteStatusReport(new DeleteStatusReportRequest(['id' => 'rep_123']));
use Openstatus\Status_report\V1\AddStatusReportUpdateRequest;
use Openstatus\Status_report\V1\StatusReportUpdate;
$service->addStatusReportUpdate(new AddStatusReportUpdateRequest([
'report_id' => 'rep_123',
'update' => new StatusReportUpdate([
'status' => StatusReportStatus::STATUS_REPORT_STATUS_IDENTIFIED,
'message' => 'Root cause identified, fix deploying.',
]),
]));
use Openstatus\Status_page\V1\CreateStatusPageRequest;
use Openstatus\Status_page\V1\PageTheme;
use Openstatus\Status_page\V1\StatusPage;
$service = $client->statusPage->v1->statusPageService;
$service->createStatusPage(new CreateStatusPageRequest([
'page' => new StatusPage([
'title' => 'Acme Status',
'slug' => 'acme',
'theme' => PageTheme::PAGE_THEME_LIGHT,
]),
]));
use Openstatus\Status_page\V1\CreateComponentGroupRequest;
use Openstatus\Status_page\V1\DeleteComponentGroupRequest;
use Openstatus\Status_page\V1\UpdateComponentGroupRequest;
$service->createComponentGroup(new CreateComponentGroupRequest(['page_id' => 'page_123', 'name' => 'Edge']));
$service->updateComponentGroup(new UpdateComponentGroupRequest(['id' => 'grp_1', 'name' => 'Edge servers']));
$service->deleteComponentGroup(new DeleteComponentGroupRequest(['id' => 'grp_1']));
use Openstatus\Status_page\V1\CreatePageSubscriptionRequest;
use Openstatus\Status_page\V1\ListSubscribersRequest;
use Openstatus\Status_page\V1\SubscribeToPageRequest;
use Openstatus\Status_page\V1\UnsubscribeFromPageRequest;
$service->subscribeToPage(new SubscribeToPageRequest(['page_id' => 'page_123', 'email' => '[email protected]']));
$service->createPageSubscription(new CreatePageSubscriptionRequest(['page_id' => 'page_123', 'email' => '[email protected]']));
$service->listSubscribers(new ListSubscribersRequest(['page_id' => 'page_123']));
$service->unsubscribeFromPage(new UnsubscribeFromPageRequest(['token' => 'unsub_token']));
use Openstatus\Maintenance\V1\CreateMaintenanceRequest;
use Openstatus\Maintenance\V1\DeleteMaintenanceRequest;
use Openstatus\Maintenance\V1\GetMaintenanceRequest;
use Openstatus\Maintenance\V1\ListMaintenancesRequest;
use Openstatus\Maintenance\V1\Maintenance;
use Openstatus\Maintenance\V1\UpdateMaintenanceRequest;
$service = $client->maintenance->v1->maintenanceService;
$service->createMaintenance(new CreateMaintenanceRequest([
'maintenance' => new Maintenance([
'title' => 'Database migration',
'page_id' => 'page_123',
'from_timestamp' => 1730000000000,
'to_timestamp' => 1730003600000,
]),
]));
$service->getMaintenance(new GetMaintenanceRequest(['id' => 'mnt_1']));
$service->listMaintenances(new ListMaintenancesRequest(['page_id' => 'page_123']));
$service->updateMaintenance(new UpdateMaintenanceRequest(['id' => 'mnt_1', 'maintenance' => $updated]));
$service->deleteMaintenance(new DeleteMaintenanceRequest(['id' => 'mnt_1']));
use Openstatus\Notification\V1\CreateNotificationRequest;
use Openstatus\Notification\V1\Notification;
use Openstatus\Notification\V1\NotificationProvider;
use Openstatus\Notification\V1\NotificationData;
use Openstatus\Notification\V1\SlackData;
$service = $client->notification->v1->notificationService;
$service->createNotification(new CreateNotificationRequest([
'notification' => new Notification([
'name' => 'Eng channel',
'provider' => NotificationProvider::NOTIFICATION_PROVIDER_SLACK,
'data' => new NotificationData([
'slack' => new SlackData(['webhook_url' => 'https://hooks.slack.com/...']),
]),
]),
]));
use Openstatus\Notification\V1\CheckNotificationLimitRequest;
use Openstatus\Notification\V1\DeleteNotificationRequest;
use Openstatus\Notification\V1\GetNotificationRequest;
use Openstatus\Notification\V1\ListNotificationsRequest;
use Openstatus\Notification\V1\SendTestNotificationRequest;
use Openstatus\Notification\V1\UpdateNotificationRequest;
$service->getNotification(new GetNotificationRequest(['id' => 'notif_1']));
$service->listNotifications(new ListNotificationsRequest());
$service->updateNotification(new UpdateNotificationRequest(['id' => 'notif_1', 'notification' => $updated]));
$service->deleteNotification(new DeleteNotificationRequest(['id' => 'notif_1']));
$service->sendTestNotification(new SendTestNotificationRequest(['id' => 'notif_1']));
$service->checkNotificationLimit(new CheckNotificationLimitRequest());
use Openstatus\Monitor\V1\BodyAssertion;
use Openstatus\Monitor\V1\HeaderAssertion;
use Openstatus\Monitor\V1\NumberComparator;
use Openstatus\Monitor\V1\StatusCodeAssertion;
use Openstatus\Monitor\V1\StringComparator;
$statusCode = new StatusCodeAssertion([
'comparator' => NumberComparator::NUMBER_COMPARATOR_EQUAL,
'target' => 200,
]);
$body = new BodyAssertion([
'comparator' => StringComparator::STRING_COMPARATOR_CONTAINS,
'target' => 'ok',
]);
$header = new HeaderAssertion([
'key' => 'content-type',
'comparator' => StringComparator::STRING_COMPARATOR_EQUAL,
'target' => 'application/json',
]);
use Openstatus\Monitor\V1\HTTPMethod;
use Openstatus\Monitor\V1\Periodicity;
HTTPMethod::HTTP_METHOD_GET; // int 1
HTTPMethod::name(HTTPMethod::HTTP_METHOD_GET); // "HTTP_METHOD_GET"
Periodicity::PERIODICITY_1M; // int 2
$timestamp = (int) $log->getTimestamp(); // ms since epoch
$p95Ms = (int) $summary->getP95();
use Openstatus\Sdk\Exception\AuthenticationException;
use Openstatus\Sdk\Exception\InvalidArgumentException;
use Openstatus\Sdk\Exception\NotFoundException;
use Openstatus\Sdk\Exception\OpenstatusException;
use Openstatus\Sdk\Exception\RateLimitException;
use Openstatus\Sdk\Exception\ServiceUnavailableException;
try {
$client->monitor->v1->monitorService->createHTTPMonitor($req);
} catch (AuthenticationException $e) {
// 401 / connectCode "unauthenticated"
} catch (NotFoundException $e) {
// 404 / "not_found"
} catch (InvalidArgumentException $e) {
// 400 / "invalid_argument" — inspect $e->details() for field violations
foreach ($e->details() as $detail) {
printf("%s: %s\n", $detail->type, $detail->value);
}
} catch (RateLimitException $e) {
// 429 / "resource_exhausted"
} catch (ServiceUnavailableException $e) {
// 5xx, network errors, or non-Connect responses
} catch (OpenstatusException $e) {
// anything else
printf("code=%s http=%d body=%s\n", $e->connectCode(), $e->httpStatus(), $e->rawBody());
}
public function __construct(private OpenstatusClient $openstatus) {}
$this->app->singleton(\Openstatus\Sdk\OpenstatusClient::class, function (): \Openstatus\Sdk\OpenstatusClient {
return new \Openstatus\Sdk\OpenstatusClient(new \Openstatus\Sdk\ClientOptions(
apiKey: env('OPENSTATUS_API_KEY'),
));
});