Created
January 31, 2025 23:56
-
-
Save cshaa/e84ce67fc714bdaddf2181be0c8bb1bc to your computer and use it in GitHub Desktop.
Release Argus – JSON Schema for config.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"$schema": "http://json-schema.org/draft-07/schema#", | |
"type": "object", | |
"properties": { | |
"settings": { | |
"type": "object", | |
"properties": { | |
"log": { | |
"type": "object", | |
"description": "Logging settings for the application.", | |
"properties": { | |
"level": { | |
"type": "string", | |
"enum": ["DEBUG", "VERBOSE", "INFO", "WARNING", "ERROR"], | |
"description": "Log level to use." | |
}, | |
"timestamps": { | |
"type": "boolean", | |
"description": "Whether to include timestamps in logs." | |
} | |
}, | |
"required": ["level", "timestamps"] | |
}, | |
"data": { | |
"type": "object", | |
"properties": { | |
"database_file": { | |
"type": "string", | |
"description": "Path to the SQLite database file." | |
} | |
}, | |
"required": ["database_file"] | |
}, | |
"web": { | |
"type": "object", | |
"properties": { | |
"listen_host": { | |
"type": "string", | |
"description": "IP address to listen on." | |
}, | |
"listen_port": { | |
"type": "integer", | |
"description": "Port to listen on." | |
}, | |
"route_prefix": { | |
"type": "string", | |
"description": "Web route prefix, e.g. /demo means http://IP:PORT/demo to access." | |
}, | |
"cert_file": { | |
"type": "string", | |
"description": "Path to the HTTPS certificate file." | |
}, | |
"pkey_file": { | |
"type": "string", | |
"description": "Path to the HTTPS private key file." | |
}, | |
"basic_auth": { | |
"type": "object", | |
"properties": { | |
"username": { | |
"type": "string", | |
"description": "Basic authentication username." | |
}, | |
"password": { | |
"type": "string", | |
"description": "Basic authentication password." | |
} | |
} | |
}, | |
"disabled_routes": { | |
"type": "array", | |
"items": { | |
"type": "string", | |
"enum": [ | |
"service_create", | |
"service_update", | |
"service_delete", | |
"notify_test", | |
"lv_refresh", | |
"dv_refresh", | |
"lv_refresh_new", | |
"dv_refresh_new", | |
"service_actions" | |
] | |
}, | |
"description": "List of API routes to disable." | |
}, | |
"favicon": { | |
"type": "object", | |
"properties": { | |
"png": { | |
"type": "string", | |
"description": "URL to override the PNG favicon." | |
}, | |
"svg": { | |
"type": "string", | |
"description": "URL to override the SVG favicon." | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"defaults": { | |
"type": "object", | |
"properties": { | |
"service": { | |
"type": "object", | |
"properties": { | |
"options": { | |
"type": "object", | |
"properties": { | |
"interval": { | |
"type": "string", | |
"description": "Time interval for querying new releases." | |
}, | |
"semantic_versioning": { | |
"type": "boolean", | |
"description": "Whether to enforce semantic versioning." | |
} | |
} | |
}, | |
"latest_version": { | |
"type": "object", | |
"properties": { | |
"access_token": { | |
"type": "string", | |
"description": "GitHub access token for API requests." | |
}, | |
"allow_invalid_certs": { | |
"type": "boolean", | |
"description": "Allow invalid HTTPS certificates." | |
}, | |
"use_prerelease": { | |
"type": "boolean", | |
"description": "Allow prerelease versions." | |
} | |
} | |
}, | |
"deployed_version": { | |
"type": "object", | |
"properties": { | |
"allow_invalid_certs": { | |
"type": "boolean", | |
"description": "Allow invalid HTTPS certificates." | |
} | |
} | |
}, | |
"dashboard": { | |
"type": "object", | |
"properties": { | |
"auto_approve": { | |
"type": "boolean", | |
"description": "Auto-approve new releases in the web UI." | |
} | |
} | |
} | |
} | |
}, | |
"notify": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "object", | |
"description": "Notification service configurations." | |
} | |
}, | |
"webhook": { | |
"type": "object", | |
"properties": { | |
"delay": { | |
"type": "string", | |
"description": "Delay before sending webhooks when a new release is found." | |
}, | |
"max_tries": { | |
"type": "integer", | |
"description": "Maximum number of webhook retries." | |
}, | |
"allow_invalid_certs": { | |
"type": "boolean", | |
"description": "Allow invalid HTTPS certificates for webhooks." | |
}, | |
"desired_status_code": { | |
"type": "integer", | |
"description": "Expected HTTP status code indicating success." | |
}, | |
"silent_fails": { | |
"type": "boolean", | |
"description": "Silence failure notifications when max retries are reached." | |
} | |
} | |
} | |
} | |
}, | |
"service": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "object", | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "Service name to show in the UI (if it's different from the key)." | |
}, | |
"comment": { | |
"type": "string", | |
"description": "Optional comment about the service." | |
}, | |
"options": { | |
"type": "object", | |
"properties": { | |
"active": { | |
"type": "boolean", | |
"description": "Enable or disable the service without removing it from the config." | |
}, | |
"interval": { | |
"type": "string", | |
"pattern": "^d+[smhdw]$", | |
"description": "Time interval (e.g., 30m, 1h5m) between version queries." | |
}, | |
"semantic_versioning": { | |
"type": "boolean", | |
"description": "Whether the repository follows semantic MAJOR.MINOR.PATCH versioning." | |
} | |
} | |
}, | |
"latest_version": { | |
"type": "object", | |
"properties": { | |
"type": { | |
"type": "string", | |
"enum": ["github", "web"], | |
"description": "Source type to query for the latest version (GitHub API or a URL)." | |
}, | |
"url": { | |
"type": "string", | |
"description": "GitHub repo or URL to monitor." | |
}, | |
"access_token": { | |
"type": "string", | |
"description": "Optional access token for private repositories or rate limit bypassing." | |
}, | |
"use_prerelease": { | |
"type": "boolean", | |
"description": "Whether to allow prerelease versions." | |
}, | |
"url_commands": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"type": { | |
"type": "string", | |
"enum": ["regex", "replace", "split"] | |
}, | |
"regex": { | |
"type": "string", | |
"description": "Regular expression pattern." | |
}, | |
"old": { | |
"type": "string", | |
"description": "Old value to replace." | |
}, | |
"new": { | |
"type": "string", | |
"description": "New value to replace with." | |
}, | |
"index": { | |
"type": "integer", | |
"description": "Index for split operation." | |
} | |
} | |
} | |
}, | |
"require": { | |
"type": "object", | |
"properties": { | |
"regex_content": { | |
"type": "string", | |
"description": "Regex for verifying the content." | |
}, | |
"regex_version": { | |
"type": "string", | |
"description": "Regex for validating the version." | |
}, | |
"command": { | |
"type": "array", | |
"items": { "type": "string" }, | |
"description": "Command to validate version." | |
}, | |
"docker": { | |
"type": "object", | |
"properties": { | |
"type": { | |
"type": "string", | |
"enum": ["hub", "ghcr", "quay"] | |
}, | |
"image": { "type": "string" }, | |
"tag": { "type": "string" }, | |
"username": { "type": "string" }, | |
"token": { "type": "string" } | |
} | |
} | |
} | |
} | |
} | |
}, | |
"deployed_version": { | |
"type": "object", | |
"properties": { | |
"method": { "type": "string", "enum": ["GET", "POST"] }, | |
"url": { "type": "string" }, | |
"allow_invalid_certs": { "type": "boolean" }, | |
"basic_auth": { | |
"type": "object", | |
"properties": { | |
"username": { "type": "string" }, | |
"password": { "type": "string" } | |
} | |
}, | |
"headers": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"key": { "type": "string" }, | |
"value": { "type": "string" } | |
} | |
} | |
}, | |
"json": { "type": "string" }, | |
"regex": { "type": "string" } | |
} | |
}, | |
"notify": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "object", | |
"properties": { | |
"message": { "type": "string" } | |
} | |
} | |
}, | |
"command": { | |
"type": "array", | |
"items": { "type": "array", "items": { "type": "string" } } | |
}, | |
"webhook": { | |
"type": "object", | |
"additionalProperties": { | |
"type": "object", | |
"properties": { | |
"secret": { "type": "string" } | |
} | |
} | |
}, | |
"dashboard": { | |
"type": "object", | |
"properties": { | |
"auto_approve": { "type": "boolean" }, | |
"web_url": { "type": "string" }, | |
"icon": { "type": "string" }, | |
"icon_link_to": { "type": "string" } | |
} | |
} | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment