Skip to content

Project Settings File Structure Guide

The settings.json file contains all configuration and metadata for a Uplinkr project, including probe definitions, alert rules, and project status.

storage/app/private/uplinkr/<project-name>/settings.json
{
"project": "my-project",
"label": "My Website Monitoring",
"description": "Production website health monitoring",
"created_at": "2026-01-25 18:01:06",
"updated_at": "2026-01-26 04:32:41",
"status": "enabled",
"probes": [...],
"alerts": [...]
}
FieldTypeDescription
projectstringUnique project identifier (used for directory naming)
labelstringHuman-readable project name
descriptionstringDetailed project description
created_atdatetimeProject creation timestamp
updated_atdatetimeLast modification timestamp
statusstringProject status: enabled or disabled

The probes array contains all health check configurations for the project:

{
"url": "https://example.com/api/health",
"project": "my-project",
"method": "GET",
"headers": [
"Authorization: Bearer token",
"Content-Type: application/json"
],
"body": null
}
FieldTypeDescription
urlstringTarget URL to monitor
projectstringProject identifier (matches parent project)
methodstringHTTP method: GET, POST, PUT, DELETE, etc.
headersarrayOptional HTTP headers (array of strings)
bodystring|nullOptional request body for POST/PUT requests

Legacy note: Older project files may still contain header; Uplinkr normalizes this to headers for compatibility.

The alerts array defines alerting rules and notification channels:

{
"enabled": true,
"trigger_after_failures": 20,
"cooldown_minutes": 120,
"latency_threshold_ms": 1000,
"trigger_after_slow": 10,
"channels": [
"mail",
"webhook"
]
}
FieldTypeDescription
enabledbooleanWhether alerts are active
trigger_after_failuresintegerNumber of consecutive failures before alerting
cooldown_minutesintegerMinutes to wait before re-alerting for the same issue
latency_threshold_msintegerResponse time threshold in milliseconds
trigger_after_slowintegerNumber of consecutive slow responses before alerting
channelsarrayNotification channels configured for this project (commonly mail, log, webhook).

Creates the initial settings.json file when initializing a new project.

Example:

Terminal window
php artisan uplinkr:project:init --project=my-project

Result:

  • Creates project directory
  • Generates settings.json with default values
  • Sets project status to enabled

Updates project metadata such as label, description, or status.

Example:

Terminal window
php artisan uplinkr:project:update --project=my-project --label="New Label"

Modifies:

  • label, description, status fields
  • Updates updated_at timestamp

Adds a new probe configuration to the probes array.

Example:

Terminal window
php artisan uplinkr:project:add:probe --project=my-project \
--url=https://example.com/health \
--method=GET

Modifies:

  • Appends new probe to probes array
  • Updates updated_at timestamp

Configures or updates alert rules in the alerts array.

Example:

Terminal window
php artisan uplinkr:project:alerts \
--project=my-project \
--failures=30 \
--cooldown=60

Modifies:

  • Updates alert configuration
  • Adds or removes notification channels
  • Updates updated_at timestamp
{
"project": "uplinkr-dev-api-test",
"label": "Uplinkr Dev API Test",
"description": "Development environment API monitoring",
"created_at": "2026-01-25 18:01:06",
"updated_at": "2026-01-26 04:32:41",
"status": "enabled",
"probes": [
{
"url": "https://api.example.com/health",
"project": "uplinkr-dev-api-test",
"method": "GET",
"headers": [],
"body": null
},
{
"url": "https://api.example.com/auth",
"project": "uplinkr-dev-api-test",
"method": "POST",
"headers": [
"Content-Type: application/json"
],
"body": "{\"username\":\"test\",\"password\":\"test\"}"
}
],
"alerts": [
{
"enabled": true,
"trigger_after_failures": 20,
"cooldown_minutes": 120,
"latency_threshold_ms": 1000,
"trigger_after_slow": 10,
"channels": [
"mail",
"webhook"
]
}
]
}

While you can manually edit settings.json, it’s recommended to use the provided Artisan commands to:

  • Ensure proper validation
  • Maintain consistent timestamps
  • Avoid JSON syntax errors
  • Group related endpoints in the same project
  • Use descriptive URLs that identify the service
  • Include authentication headers when needed
  • Set trigger_after_failures high enough to avoid false positives
  • Use cooldown_minutes to prevent alert spam
  • Configure appropriate latency_threshold_ms for your application

Since this file contains all project configuration:

  • Include it in your backup strategy
  • Version control it for infrastructure-as-code approaches
  • Keep copies before major changes