Skip to content

Instantly share code, notes, and snippets.

@cshaa
Created January 31, 2025 23:56
Show Gist options
  • Save cshaa/e84ce67fc714bdaddf2181be0c8bb1bc to your computer and use it in GitHub Desktop.
Save cshaa/e84ce67fc714bdaddf2181be0c8bb1bc to your computer and use it in GitHub Desktop.
Release Argus – JSON Schema for config.yml
{
"$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