{"id":34589120,"url":"https://github.com/datafold/monitors-schema","last_synced_at":"2026-03-15T19:14:04.061Z","repository":{"id":327056579,"uuid":"1107608103","full_name":"datafold/monitors-schema","owner":"datafold","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-01T13:07:12.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-04T01:48:11.215Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datafold.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-01T11:23:08.000Z","updated_at":"2025-12-01T13:07:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"40b6d4e2-6f18-4dbd-b8fa-c24b685bc75c","html_url":"https://github.com/datafold/monitors-schema","commit_stats":null,"previous_names":["datafold/monitors-schema"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/datafold/monitors-schema","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafold%2Fmonitors-schema","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafold%2Fmonitors-schema/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafold%2Fmonitors-schema/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafold%2Fmonitors-schema/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datafold","download_url":"https://codeload.github.com/datafold/monitors-schema/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datafold%2Fmonitors-schema/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30549853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-15T15:03:43.933Z","status":"ssl_error","status_checked_at":"2026-03-15T15:03:37.630Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-24T10:48:52.562Z","updated_at":"2026-03-15T19:14:04.055Z","avatar_url":"https://github.com/datafold.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# YAML Validation Setup for Datafold Monitors\n\nGet real-time validation, autocomplete, and inline documentation for your Datafold monitors-as-code configurations!\n\n[Read more about monitors-as-code in our docs](https://docs.datafold.com/data-monitoring/monitors-as-code)\n\n## Table of Contents\n\n- [Overview](#overview)\n- [VSCode Setup (Recommended)](#vscode-setup-recommended)\n- [IntelliJ/PyCharm Setup](#intellijpycharm-setup)\n- [Other Editors](#other-editors)\n- [Inline Schema Reference](#inline-schema-reference)\n- [Troubleshooting](#troubleshooting)\n- [Examples](#examples)\n\n---\n\n## Overview\n\nDatafold provides a JSON Schema that enables your editor to:\n\n- **Validate** your monitor configurations in real-time\n- **Autocomplete** field names and values\n- **Show documentation** on hover\n- **Suggest** valid configuration options\n- **Highlight errors** with helpful messages\n\n**Schema URL:**\n```\nhttps://raw.githubusercontent.com/datafold/monitors-schema/main/schema.json\n```\n\n---\n\n## VSCode/Cursor Setup (Recommended)\n\n### Step 1: Install YAML Extension\n\n1. Open VSCode/Cursor\n2. Open \"Extensions\" (Press `Ctrl+Shift+X` (Windows/Linux) or `Cmd+Shift+X` (Mac))\n3. Search for **\"YAML\"** by Red Hat\n4. Click **Install**\n\nOr install directly: [YAML Extension by Red Hat](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml)\n\n### Step 2: Configure Schema Mapping\n\nChoose **Option A** (workspace-specific) or **Option B** (user-wide):\n\n#### Option A: Workspace Settings (Recommended)\n\nCreate or edit `.vscode/settings.json` in your project root:\n\n```json\n{\n  \"yaml.schemas\": {\n    \"https://raw.githubusercontent.com/datafold/monitors-schema/main/schema.json\": [\n      \"monitors.yaml\",\n      \"monitors.yml\",\n      \"**/monitors/**/*.yaml\",\n      \"**/monitors/**/*.yml\",\n      \"**/*-monitors.yaml\",\n      \"**/*-monitors.yml\"\n    ]\n  },\n  \"yaml.customTags\": [\n    \"!include scalar\",\n    \"!include_dir_list scalar\"\n  ]\n}\n```\n\nThis configuration applies validation to any file matching the patterns above.\n\n#### Option B: User Settings (All Projects)\n\n1. Press `Ctrl+,` (Windows/Linux) or `Cmd+,` (Mac) to open Settings\n2. Search for `yaml.schemas`\n3. Click \"Edit in settings.json\"\n4. Add the same configuration as Option A\n\n### Step 3: Verify Setup\n\n1. Open or create a file named `monitors.yaml`\n2. Start typing and you should see:\n   - Autocomplete suggestions\n   - Documentation on hover\n   - Red underlines for errors\n\n**Test with this snippet:**\n\n```yaml\nmonitors:\n  test_monitor:\n    type: test\n    connection_id: # Hover to see docs!\n```\n\n---\n\n## IntelliJ/PyCharm Setup\n\n### Step 1: Configure JSON Schema Mapping\n\n1. Go to **Settings/Preferences** (`Ctrl+Alt+S` or `Cmd+,`)\n2. Navigate to **Languages \u0026 Frameworks → Schemas and DTDs → JSON Schema Mappings**\n3. Click **+** to add a new mapping\n4. Configure the mapping:\n\n   | Field | Value |\n   |-------|-------|\n   | **Name** | Datafold Monitors |\n   | **Schema file or URL** | `https://raw.githubusercontent.com/datafold/monitors-schema/main/schema.json` |\n   | **Schema version** | JSON Schema version 7 |\n\n5. Under **File path pattern**, click **+** and add:\n   - `monitors.yaml`\n   - `monitors.yml`\n   - Or custom patterns like `*-monitors.yaml`\n\n### Step 2: Apply and Test\n\n1. Click **OK** to save\n2. Open a monitor configuration file\n3. Validation should work automatically!\n\n---\n\n## Other Editors\n\nMost modern editors support JSON Schema validation for YAML files:\n\n### Neovim/Vim\n\nInstall [yaml-language-server](https://github.com/redhat-developer/yaml-language-server):\n\n```bash\nnpm install -g yaml-language-server\n```\n\nConfigure in your LSP setup (e.g., with `nvim-lspconfig`):\n\n```lua\nrequire'lspconfig'.yamlls.setup {\n  settings = {\n    yaml = {\n      schemas = {\n        [\"https://raw.githubusercontent.com/datafold/monitors-schema/main/schema.json\"] = \"monitors*.{yaml,yml}\"\n      }\n    }\n  }\n}\n```\n\n### Sublime Text\n\n1. Install [LSP](https://packagecontrol.io/packages/LSP) package\n2. Install [LSP-yaml](https://packagecontrol.io/packages/LSP-yaml)\n3. Configure in `LSP-yaml` settings:\n\n```json\n{\n  \"settings\": {\n    \"yaml.schemas\": {\n      \"https://raw.githubusercontent.com/datafold/monitors-schema/main/schema.json\": [\"monitors*.{yaml,yml}\"]\n    }\n  }\n}\n```\n\n### Emacs\n\nUse [lsp-mode](https://github.com/emacs-lsp/lsp-mode) with yaml-language-server:\n\n```elisp\n(use-package lsp-mode\n  :hook (yaml-mode . lsp)\n  :config\n  (setq lsp-yaml-schemas\n        '(:https://raw.githubusercontent.com/datafold/monitors-schema/main/schema.json [\"monitors*.yaml\" \"monitors*.yml\"])))\n```\n\n---\n\n## Inline Schema Reference\n\nYou can specify the schema directly in your YAML files using a comment:\n\n```yaml\n# yaml-language-server: $schema=https://raw.githubusercontent.com/datafold/monitors-schema/main/schema.json\n\nmonitors:\n  my_monitor:\n    type: test\n    connection_id: 123\n    test:\n      type: accepted_values\n      tables:\n        - path: schema.table\n          columns: [column1]\n      variables:\n        accepted_values:\n          value: [1, 2, 3]\n          quote: false\n    schedule:\n      interval:\n        every: hour\n    notifications: []\n```\n\n**Benefits:**\n- Works without editor configuration\n- Self-documenting (schema URL is visible)\n- Portable (works on any machine)\n- Useful for shared snippets\n\n**When to use:**\n- One-off configuration files\n- Shared examples and templates\n- CI/CD validation scripts\n- Files outside standard naming patterns\n\n---\n\n## Troubleshooting\n\n### Validation Not Working\n\n**Problem:** Editor shows no validation, autocomplete, or hover docs.\n\n**Solutions:**\n\n1. **Verify YAML extension is installed**\n   - VSCode: Check Extensions panel\n   - IntelliJ: Check Plugins\n\n2. **Check file name patterns**\n   - Ensure your file matches configured patterns (e.g., `monitors.yaml`)\n   - Try adding inline schema reference (see above)\n\n3. **Reload editor window**\n   - VSCode: `Ctrl/Cmd+Shift+P` → \"Reload Window\"\n   - IntelliJ: File → Invalidate Caches / Restart\n\n4. **Verify schema URL is accessible**\n   - Open the URL in a browser to ensure it loads\n   - Check network/firewall settings\n\n\n## Questions or Issues?\n\nContact [support team](mailto:support@datafold.com).\n\n\n**Happy monitoring!** 🎉\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatafold%2Fmonitors-schema","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatafold%2Fmonitors-schema","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatafold%2Fmonitors-schema/lists"}