Skip to content

Commit 5f9815a

Browse files
committed
first commit
0 parents  commit 5f9815a

19 files changed

Lines changed: 1118 additions & 0 deletions

.github/workflows/validate.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Validate Registry
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- 'registry.json'
7+
- 'discovery/**'
8+
- 'schemas/**'
9+
- 'scripts/**'
10+
push:
11+
branches:
12+
- main
13+
paths:
14+
- 'registry.json'
15+
- 'discovery/**'
16+
- 'schemas/**'
17+
- 'scripts/**'
18+
19+
jobs:
20+
validate:
21+
runs-on: ubuntu-latest
22+
steps:
23+
- uses: actions/checkout@v4
24+
25+
- name: Setup Node
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: '20'
29+
cache: 'npm'
30+
31+
- name: Install dependencies
32+
run: npm ci
33+
34+
- name: Validate registry schema
35+
run: npm run validate:registry
36+
37+
- name: Validate discovery manifests
38+
run: npm run validate:discovery

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules/
2+
.DS_Store
3+
*.log
4+
.env

CONTRIBUTING.md

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# Contributing to Scanopy Integrations
2+
3+
We welcome community integrations! This guide explains how to add your integration to the registry.
4+
5+
## Integration Types
6+
7+
| Type | Description | How to Contribute |
8+
|------|-------------|-------------------|
9+
| **API** | External integrations that consume the Scanopy API | Add a registry entry pointing to your repo |
10+
| **Discovery** | Built-in daemon capabilities | Requires a PR to the main Scanopy repo |
11+
12+
## Adding an API Integration
13+
14+
### 1. Create Your Integration Repository
15+
16+
Your repository should include:
17+
18+
**Required files:**
19+
- `manifest.json` - Integration metadata ([see schema](./schemas/manifest.schema.json))
20+
- `README.md` - Setup instructions
21+
- `LICENSE` - Open source license
22+
23+
**Recommended files:**
24+
- `Dockerfile` - Container build
25+
- `docker-compose.yml` - One-command deployment
26+
- `.env.example` - Example environment variables
27+
28+
See [`templates/python-poll/`](./templates/python-poll/) for a complete example.
29+
30+
### 2. Create Your manifest.json
31+
32+
```json
33+
{
34+
"id": "my-integration",
35+
"name": "My Integration",
36+
"description": "What it does (max 200 chars)",
37+
"categories": ["notifications"],
38+
"version": "1.0.0",
39+
"author": {
40+
"name": "Your Name",
41+
"github": "yourusername"
42+
},
43+
"repository": "https://github.com/you/scanopy-my-integration",
44+
"license": "MIT",
45+
"scanopy": {
46+
"api_version": 1,
47+
"scopes": ["hosts:read", "services:read"]
48+
},
49+
"triggers": {
50+
"poll": {
51+
"default_interval": 300
52+
}
53+
},
54+
"configuration": [
55+
{
56+
"key": "MY_API_KEY",
57+
"type": "secret",
58+
"required": true,
59+
"description": "API key for the target service"
60+
}
61+
]
62+
}
63+
```
64+
65+
### 3. Open a Pull Request
66+
67+
Add an entry to `registry.json`:
68+
69+
```json
70+
{
71+
"id": "my-integration",
72+
"type": "api",
73+
"repository": "https://github.com/you/scanopy-my-integration",
74+
"official": false
75+
}
76+
```
77+
78+
**Important:**
79+
- The `id` must match your manifest's `id`
80+
- Use kebab-case for the id (lowercase letters, numbers, hyphens)
81+
- Set `official` to `false` for community integrations
82+
83+
### 4. Review Process
84+
85+
The Scanopy team will review your PR and may request changes. Once approved, your integration will appear in the registry.
86+
87+
## Adding a Discovery Integration
88+
89+
Discovery integrations require changes to the Scanopy daemon itself.
90+
91+
1. Open an issue on [scanopy/scanopy](https://github.com/scanopy/scanopy) proposing the discovery method
92+
2. Discuss the approach with maintainers
93+
3. Submit a PR with the implementation
94+
4. Upon merge, the Scanopy team will add the registry entry and manifest here
95+
96+
## Categories
97+
98+
Use one or more of these categories in your manifest:
99+
100+
| Category | Use For |
101+
|----------|---------|
102+
| `containers` | Docker, Kubernetes, Podman |
103+
| `virtualization` | Proxmox, VMware, Hyper-V |
104+
| `cloud` | AWS, GCP, Azure |
105+
| `networking` | Network devices, SNMP |
106+
| `asset-management` | DCIM, CMDB, IPAM (NetBox, etc.) |
107+
| `notifications` | Slack, Discord, PagerDuty |
108+
| `ticketing` | Jira, ServiceNow, Linear |
109+
| `monitoring` | Prometheus, Datadog, Grafana |
110+
| `backup` | Data export, S3, file sync |
111+
112+
## Questions?
113+
114+
Open an issue if you have questions about contributing.

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Scanopy
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Scanopy Integrations
2+
3+
Public registry of Scanopy integrations - both built-in discovery methods and community API integrations.
4+
5+
## Integration Types
6+
7+
| Type | Description | Location |
8+
|------|-------------|----------|
9+
| **Discovery** | Extends what Scanopy can find (Docker, Proxmox, etc.) | Built into daemon |
10+
| **API** | Consumes Scanopy API to sync/export/alert | User-hosted, external repos |
11+
12+
## Browse Integrations
13+
14+
See [`registry.json`](./registry.json) for the full list of available integrations.
15+
16+
## Contributing
17+
18+
Want to add your integration? See [CONTRIBUTING.md](./CONTRIBUTING.md).
19+
20+
## For Integration Developers
21+
22+
Check out the [`templates/`](./templates/) directory for starter templates:
23+
24+
- [`python-poll`](./templates/python-poll/) - Python polling-based integration
25+
26+
## Links
27+
28+
- [Scanopy Documentation](https://docs.scanopy.io)
29+
- [API Reference](https://docs.scanopy.io/api)

discovery/docker/manifest.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"id": "docker",
3+
"name": "Docker Container Discovery",
4+
"description": "Discovers containers and networks via Docker API",
5+
"categories": ["containers"],
6+
"docs_url": "https://docs.scanopy.io/discovery/docker"
7+
}

0 commit comments

Comments
 (0)