Last updated: 15 April 2024
Symbient Uptime API Testing
The Symbient Uptime API can be tested at Symbient Uptime API Testing. This endpoint documentation can be used to test, develop, and debug any systems that utilize the Uptime APIs.
Authorization
Before making any requests to the API endpoints listed in this documentation, you must obtain authorization. There are two methods to achieve this: 1) using a Bearer Token or 2) a combination of API Key and Encryption Key (Enc Key). Below are the instructions for both methods.
API and ENC Keys
A. Accessing The Keys:
- Open a Browser: Launch your preferred web browser.
- Log In: Navigate to the Symbient Uptime login page and enter your credentials to access your account.
- Locate Keys: Once logged in, go to the settings page. You can find your API and Encryption (Enc) Keys listed under the "Integrations" section. If you need more detailed guidance on locating these keys, please see the Help Docs section for Integrations.
B. Authorization Process:
Provide your API and Enc keys within the header of any requests.
Here’s an example of headers within a Javascript request:
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'your_api_key_here', // Replace 'your_api_key_here' with your actual API Key
'X-Enc-Key': 'your_enc_key_here' // Replace 'your_enc_key_here' with your actual Enc Key
}
C. Verification:
After setting up your authorization, it's a good practice to verify it's working correctly. You can do this by testing the /api/v1/authenticated endpoint.
Bearer Token
Request Authentication:
To request a Bearer Token, make a POST request to the /api/v1/authenticated endpoint. Include your credentials (such as username and password or API key) in the request body.
Example Javascript Fetch Request:
fetch('https://symbient.online/api/v1/authenticated', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: 'your_username',
password: 'your_password'
})
})
Receive Token:
Upon successful authentication, the API will return a JSON response containing the Bearer Token. The token is typically found in the token
field of the response.
Example Response:
{
"success": true,
"token": "efJgxGocOi4IUzI1NiIoiI2NoTAKcyMTEk0Y"
}
Using the Token:
Use the retrieved Bearer Token in the Authorization header of your subsequent API requests.
Authenticate
/api/v1/authenticated
Path:https://symbient.online/api/v1/authenticated
Method: GET
Summary: This endpoint verifies the validity of the provided authorization credentials. Upon successful validation, it returns a confirmation of the authorization's validity and a Bearer Token for this user.
Arguments
This endpoint does not require any body or query parameters.
Example Response
{
"success": true,
"token": "tokenid1234"
}
Membership
/api/v1/membership/save
Path:https://symbient.online/api/membership/save
Method: POST
Summary: Allows you to change your membership plan. You must provide either new credit card details or an existing payment method ID.
Arguments
Request Body Parameters
- plan (required): String - The ID or name of the new membership plan to apply.
- method (required): String - Indicates whether a new credit card is being used ('new') or an existing payment method ID ('methodID').
- If using a new credit card ("method": "new"):
- cardholderName: String - Name as it appears on the credit card.
- cardNumber: String - Credit card number.
- expiryMonth: Integer - Month of expiration (MM).
- expiryYear: Integer - Year of expiration (YYYY).
- cvc: Integer - Card Verification Code.
- zipCode: String - Billing postal code.
- If using an existing payment method ID ("method": "methodID"):
- methodID: String - The identifier for a previously saved payment method.
Example JSON Request Body
Using a new credit card:
{
"plan": "premiumPlanID",
"method": "new",
"cardholderName": "John Doe",
"cardNumber": "4111111111111111",
"expiryMonth": 12,
"expiryYear": 2024,
"cvc": 123,
"zipCode": "12345"
}
Using an existing payment method ID:
{
"plan": "standardPlanID",
"method": "methodID123"
}
Example Response
{
"success": true,
"message": "You have now been enrolled with the STANDARD membership.",
"membershipToken": "membershipToken1234"
}
Important Notes
To manage payment methods or retrieve existing ones, use the endpoints /api/v1/paymentmethods/get for retrieving all of your available payment methods, or /api/v1/paymentmethod/save to store new payment methods which can be used here.
/api/v1/membership/stop
Path:https://symbient.online/api/v1/membership/stop
Method: POST
Summary: Attempts to cancel your current account membership. Please note that some memberships may require administrative intervention to cancel. Please Contact Us if you encounter issues.
Arguments
This endpoint does not require any body or query parameters for the cancellation request.
Example Response
{
"success": true,
"message": "Membership canceled successfully."
}
Important Notes
Cancellation Restrictions: Some memberships may not be eligible for normal cancellation and might require intervention by an administrator. If your cancellation request fails, or if you are informed that your plan cannot be canceled normally, please Contact Us for assistance.
Monitor
/api/v1/monitor/notify/{monitorid}
Path: https://symbient.online/api/v1/monitor/notify/{monitorid}
Method: POST
Summary: Sends an update to the specified Monitor by its unique identifier. You will need to provide the monitorid in the URL and configure the status and payload according to what the target Monitor expects.
Arguments
URL Parameters
- monitorid (required): String - The unique identifier of the Monitor you want to notify. For information about retrieving a “monitorid”, please see /api/v1/monitors.
Request Body Parameters
- status (required): String - The status to report to the Monitor, such as "up" or "down".
- payload: Object - A JSON object containing data that the Monitor expects to receive. The structure of this object will depend on the specific requirements of the Monitor.
Example JSON Request Body
{
"status": "up",
"payload": {
"temperature": 22,
"humidity": 60
}
}
Expected Response
{
"success": true,
"message": "Monitor notified successfully"
}
Important Notes
Configuring Payload: Ensure that the payload is configured according to the specific data requirements of the targeted Monitor. This may include various types of data such as metrics or configuration updates.
/api/v1/monitor/{monitorid}/delete
Path: https://symbient.online/api/v1/monitor/{monitorid}/delete
Method: DELETE
Summary: Deletes a specific Monitor by its unique identifier. Use this endpoint with caution as all configuration settings and data associated with the Monitor will be permanently lost.
Arguments
URL Parameters
- monitorid (required): String - The identifier of the Monitor to be deleted. For information about retrieving a “monitorid”, please see /api/v1/monitors.
Example Response
{
"success": true,
"message": "Monitor deleted successfully"
}
/api/v1/monitor/{monitorid}/get
Path: https://symbient.online/api/v1/monitor/{monitorid}/get
Method: GET
Summary: Retrieves detailed information about a specific Monitor's settings and configuration by its identifier.
Arguments
URL Parameters
- monitorid (required): String - The unique identifier of the Monitor for which information is being retrieved. For information about retrieving a “monitorid”, please see /api/v1/monitors.
Example Response
{
"success": true,
"monitor": {
"monitorid": "5f8a3e4idNumber",
"type": "http",
"isactive": true,
"name": "My Monitor",
"http": {
"keyword": "OK",
"url": "https://example.com",
"certificate_expiry_notification": true,
"ignore_tls_error": true,
"method": "GET",
"authentication_type": "none",
"body": "Hello World",
"headers": "Content-Type: application/json",
"accepted_status_codes": [
"200-299"
]
},
"notifiers": [],
"heartbeat_interval": 1,
"upside_down_mode": true,
"tags": [
"string"
],
"status": "down",
"last_check": "2020-10-18T00:00:00.000Z",
"last_message": "Hello World",
"load_time": 100,
"created": "2020-10-18T00:00:00.000Z",
"modified": "2020-10-18T00:00:00.000Z"
}
}
/api/v1/monitor/save
Path: https://symbient.online/api/v1/monitor/save
Method: POST
Summary: This endpoint is used to create new Monitors or update existing ones. If a monitorid is not provided, a new Monitor will be created. If a monitorid is provided, the existing Monitor will be updated. This endpoint supports various types of Monitors, such as API, DNS, HTTP, HTTP Keyword, Ping, and TCP.
Arguments
Request Body Parameters
- monitorid (optional): String - The unique identifier of a Monitor. If omitted, a new Monitor is created.
- type (required): String - The type of Monitor to create or update. Possible values include "api", "dns", "http", "http_keyword", "ping", "tcp".
- name (required): String - The name of the Monitor.
- heartbeat_interval (required): Integer - The interval in seconds at which the Monitor checks are performed.
- isactive (required): Boolean - Indicates whether the Monitor is active.
- notifiers (optional): String - Identifiers for any notification mechanisms linked to the Monitor.
- upside_down_mode (required): Boolean - If true, the Monitor's success criteria are reversed.
- tags (optional): String - Tags associated with the Monitor for categorization or filtering.
- hostname (optional for types except HTTP and TCP): String - The hostname for DNS, TCP, and PING type Monitors.
- port (required for DNS and TCP): String - The port for DNS and TCP type Monitors.
- http (conditional based on type): Object - Contains HTTP-specific monitoring settings. Fields should only be filled if the type is "http".
- url (required for HTTP): String - The URL to monitor.
- accepted_status_codes (required for HTTP): String - Range of HTTP status codes considered successful. Example: “200-299”.
- keyword (optional for HTTP): String - A keyword to look for within the webpage.
- certificate_expiry_notification (optional for HTTP): Boolean - Whether to notify on SSL certificate expiry.
- ignore_tls_error (optional for HTTP): Boolean - Whether to ignore TLS/SSL errors.
- method (optional for HTTP): String - HTTP method to use. Either GET, POST, PUT, PATCH, DELETE, or OPTIONS.
- authentication_type (optional for HTTP): String - Type of HTTP authentication required. Either “none”, “basic” for HTTP Basic Auth, or “ntlm” for NTLM Auth.
- body (optional for HTTP): String - Request body for POST methods.
- headers (optional for HTTP): String - HTTP headers to include in the request.
- dns (conditional based on type): Object - Contains DNS-specific monitoring settings. Fields should only be filled if the type is "dns".
- resolver_server (required for DNS): String - The DNS server used for resolving.
- record_type (required for DNS): String - The type of DNS record to query (e.g., A, AAAA).
Example JSON Request Body
{
"type": "http",
"name": "Name Here",
"heartbeat_interval": 10,
"isactive": false,
"upside_down_mode": false,
"tags": "",
"http": {
"url": "https://www.google.com/",
"keyword": "",
"certificate_expiry_notification": false,
"ignore_tls_error": false,
"method": "GET",
"authentication_type": "None",
"body": "",
"headers": "",
"accepted_status_codes": "200-299"
},
"notifiers": ""
}
Example Response
{
"success": true,
"message": "Monitor saved successfully",
"monitor": {
"monitorid": "5f8a3e4idNumber",
"type": "http",
"isactive": true,
"name": "My Monitor",
"http": {
"keyword": "OK",
"url": "https://example.com",
"certificate_expiry_notification": true,
"ignore_tls_error": true,
"method": "GET",
"authentication_type": "none",
"body": "Hello World",
"headers": "Content-Type: application/json",
"accepted_status_codes": [
"200-299"
]
},
"notifiers": [],
"heartbeat_interval": 1,
"upside_down_mode": true,
"tags": [
"string"
],
"status": "down",
"last_check": "2020-10-18T00:00:00.000Z",
"last_message": "Hello World",
"load_time": 100,
"created": "2020-10-18T00:00:00.000Z",
"modified": "2020-10-18T00:00:00.000Z"
}
}
Monitors
/api/v1/monitors
Path: https://symbient.online/api/v1/monitors
Method: GET
Summary: Returns information about all of your saved Monitors. This endpoint is useful for finding the monitorid of a target Monitor.
Arguments
This endpoint does not require any body or query parameters for the request.
Example Response
{
"success": true,
"monitors": [
{
"monitorid": "5f8a3e4idNumber",
"type": "http",
"isactive": true,
"name": "My Monitor",
"http": {
"keyword": "OK",
"url": "https://example.com",
"certificate_expiry_notification": true,
"ignore_tls_error": true,
"method": "GET",
"authentication_type": "none",
"body": "Hello World",
"headers": "Content-Type: application/json",
"accepted_status_codes": [
"200-299"
]
},
"notifiers": [],
"heartbeat_interval": 1,
"upside_down_mode": true,
"tags": [
"string"
],
"status": "down",
"last_check": "2020-10-18T00:00:00.000Z",
"last_message": "Hello World",
"load_time": 100,
"created": "2020-10-18T00:00:00.000Z",
"modified": "2020-10-18T00:00:00.000Z"
}
]
}
Notifier
/api/v1/notifier/save
Path: https://symbient.online/api/v1/notifier/save
Method: POST
Summary: Saves new Notifiers or updates existing ones. If a notifierid is provided, the existing Notifier is updated. Otherwise, a new Notifier is created.
Arguments
Request Body Parameters
- notifierid (optional): String - The unique identifier of the Notifier. If provided, the system updates the existing Notifier; if not, a new Notifier is created.
- name (required): String - The name of the Notifier.
- type (required): String - The type of the Notifier. Possible values are "email" or "webhook".
- email (required if type is "email"): Object - Contains all necessary configuration for an email Notifier.
- hostname: String - The server's hostname for sending emails.
- port: Integer - The port number on the server for email service.
- security: String - The type of security protocol used. This can be either be “none” or “tls”.
- ignore_tls_errors: Boolean - Whether to ignore TLS certificate errors.
- username: String - Username required to authenticate with the email server.
- password: String - Password required to authenticate with the email server.
- from_email: String - The email address from which the emails will be sent.
- to_email: String - The primary recipient's email address.
- to_cc: String - The email addresses for CC recipients.
- to_bcc: String - The email addresses for BCC recipients.
- subject: String - The subject line of the email.
- webhook (required if type is "webhook"): Object - Contains configuration for a webhook Notifier.
- url: String - The URL to which the webhook will send data.
Example JSON Request Body
{
"name": "Alert System",
"type": "email",
"email": {
"hostname": "smtp.example.com",
"port": 587,
"security": "TLS",
"ignore_tls_errors": false,
"username": "alert@example.com",
"password": "securepassword",
"from_email": "alert@example.com",
"to_email": "user@example.com",
"to_cc": "team@example.com",
"to_bcc": "audit@example.com",
"subject": "Alert Notification"
}
}
Example Response
{
"notifierid": "notifier123",
"name": "Alert System",
"type": "email",
"email": {
"hostname": "smtp.example.com",
"port": 587,
"security": "TLS",
"ignore_tls_errors": false,
"username": "alert@example.com",
"password": "securepassword",
"from_email": "alert@example.com",
"to_email": "user@example.com",
"to_cc": "team@example.com",
"to_bcc": "audit@example.com",
"subject": "Alert Notification"
}
}
/api/v1/notifier/test
Path: https://symbient.online/api/v1/notifier/test
Method: POST
Summary: Tests a specified Notifier by sending a test notification using its settings. This helps ensure that the Notifier is configured correctly and is capable of sending notifications as expected.
Arguments
Request Body Parameters
- notifierid (required): String - The identifier of the Notifier to be tested. For information about retrieving a “notifierid”, please see /api/v1/notifiers.
Example JSON Request Body
{
"notifierid": "4a088e7-426h20-e914aks5068d1"
}
Example Response
{
"success": true,
"message": "Webhook response message"
}
/api/v1/notifier/{notifierid}/delete
Path: https://symbient.online/api/v1/notifier/{notifierid}/delete
Method: DELETE
Summary: Deletes a specified Notifier by its unique identifier. It's important to ensure that the Notifier is not linked to any Monitors at the time of deletion. Otherwise, the deletion will not be successful and a message describing the issue will be returned.
Arguments
URL Parameters
- notifierid (required): String - The identifier of the Notifier that you want to delete. It should be verified that the Notifier is not linked to any Monitors. For information about retrieving a “notifierid”, please see /api/v1/notifiers.
Example Response
{
"success": true,
"message": "Notifier deleted successfully."
}
Notifiers
/api/v1/notifiers
Path: https://symbient.online/api/v1/notifiers
Method: GET
Summary: Retrieves information about your saved Notifiers. This endpoint is useful for obtaining the notifierid of all Notifiers, which is crucial for managing notification settings and linking Notifiers to Monitors.
Arguments
This endpoint does not require any body or query parameters for the request.
Example Response
{
"success": true,
"notifiers": [
{
"notifierid": "notifier123",
"name": "Alert System",
"type": "email",
"email": {
"hostname": "smtp.example.com",
"port": 587,
"security": "TLS",
"ignore_tls_errors": false,
"username": "alert@example.com",
"password": "securepassword",
"from_email": "alert@example.com",
"to_email": "user@example.com",
"to_cc": "team@example.com",
"to_bcc": "audit@example.com",
"subject": "Alert Notification"
}
}
]
}
Payment Method
/api/v1/paymentmethod/save
Path: https://symbient.online/api/v1/paymentmethod/save
Method: POST
Summary: Saves a new Payment Method. This endpoint is designed to securely transmit payment details to a PCI-compliant payment processor without storing any credit card information directly on Symbient Uptime servers. All fields are required, and the card must have a future expiry date to be accepted.
Arguments
Request Body Parameters
- cardholderName (required): String - The name of the cardholder as it appears on the credit card.
- cardNumber (required): String - The credit card number.
- expiryMonth (required): Integer - The month the credit card expires (MM).
- expiryYear (required): Integer - The year the credit card expires (YYYY).
- cvc (required): Integer - The card verification code.
- zipCode (required): String - The postal code associated with the credit card billing address.
Example JSON Request Body
{
"cardholderName": "Jane Doe",
"cardNumber": "4111111111111111",
"expiryMonth": 12,
"expiryYear": 2025,
"cvc": 123,
"zipCode": "12345"
}
Important Notes
- Security Note: As stated, no credit card information is stored on Symbient Uptime servers. All sensitive data is handled by our PCI-compliant payment processor to ensure security.
- Updating Payment Methods: This endpoint does not support updating existing payment methods. If updates are necessary, the existing payment method must be deleted first, and then the new information should be saved as a new entry.