truthound-dashboard 1.0.1__tar.gz → 1.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/PKG-INFO +1 -1
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/docs/api.md +60 -60
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/docs/configuration.md +82 -82
- truthound_dashboard-1.0.2/docs/features.md +414 -0
- truthound_dashboard-1.0.2/docs/getting-started.md +170 -0
- truthound_dashboard-1.0.2/docs/index.md +82 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/pyproject.toml +1 -1
- truthound_dashboard-1.0.2/src/truthound_dashboard/__init__.py +18 -0
- truthound_dashboard-1.0.1/docs/features.md +0 -414
- truthound_dashboard-1.0.1/docs/getting-started.md +0 -168
- truthound_dashboard-1.0.1/docs/index.md +0 -86
- truthound_dashboard-1.0.1/src/truthound_dashboard/__init__.py +0 -11
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/.github/workflows/release.yml +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/.github/workflows/trigger-docs.yml +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/.gitignore +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/LICENSE +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/README.md +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/e2e/package.json +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/e2e/playwright.config.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/e2e/tests/dashboard.spec.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/e2e/tests/language.spec.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/e2e/tests/notifications.spec.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/e2e/tests/theme.spec.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/.env.development +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/.env.mock +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/.env.production +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/.eslintrc.cjs +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/index.html +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/netlify.toml +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/package-lock.json +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/package.json +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/postcss.config.js +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/public/favicon.ico +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/public/mockServiceWorker.js +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/App.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/api/client.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/assets/logo.png +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/AnimatedNumber.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ConfirmDialog.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/DemoBanner.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/GlassCard.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/LanguageSelector.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/Layout.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ThemeToggle.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/theme-provider.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/alert-dialog.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/badge.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/button.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/card.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/dialog.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/dropdown-menu.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/input.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/label.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/select.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/switch.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/table.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/tabs.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/toast.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/components/ui/toaster.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/hooks/use-api.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/hooks/use-toast.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/i18n/index.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/i18n/locales/en.json +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/i18n/locales/ko.json +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/index.css +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/lib/utils.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/main.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/browser.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/data/store.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/base.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/drift.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/history.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/index.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/notifications.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/profile.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/schedules.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/schemas.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/sources.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/factories/validations.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/drift.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/health.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/history.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/index.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/notifications.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/profile.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/schedules.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/schemas.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/sources.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/handlers/validations.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/mocks/index.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/Dashboard.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/Drift.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/History.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/Notifications.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/Profile.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/Rules.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/Schedules.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/SourceDetail.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/Sources.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/pages/Validations.tsx +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/stores/theme.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/src/vite-env.d.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/tailwind.config.js +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/tsconfig.json +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/tsconfig.node.json +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/frontend/vite.config.ts +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/scripts/load_test.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/__main__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/__init__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/deps.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/drift.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/error_handlers.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/health.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/history.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/middleware.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/notifications.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/profile.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/router.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/rules.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/schedules.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/schemas.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/sources.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/api/validations.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/cli.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/config.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/__init__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/base.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/cache.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/connections.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/encryption.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/exceptions.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/logging.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/maintenance.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/notifications/__init__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/notifications/base.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/notifications/channels.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/notifications/dispatcher.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/notifications/events.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/notifications/service.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/sampling.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/scheduler.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/services.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/core/truthound_adapter.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/db/__init__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/db/base.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/db/database.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/db/models.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/db/repository.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/main.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/__init__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/base.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/drift.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/history.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/profile.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/rule.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/schedule.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/schema.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/source.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/schemas/validation.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/static/assets/index-BqJMyAHX.js +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/static/assets/index-DMDxHCTs.js +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/static/assets/index-Dm2D11TK.css +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/static/index.html +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/src/truthound_dashboard/static/mockServiceWorker.js +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/__init__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/conftest.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/test_api/__init__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/test_api/test_health.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/test_api/test_rules.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/test_api/test_sources.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/test_core/__init__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/test_core/test_services.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/test_db/__init__.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/test_db/test_models.py +0 -0
- {truthound_dashboard-1.0.1 → truthound_dashboard-1.0.2}/tests/test_phase4.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# API Reference
|
|
2
2
|
|
|
3
|
-
Truthound Dashboard REST API
|
|
3
|
+
This document describes the Truthound Dashboard REST API.
|
|
4
4
|
|
|
5
5
|
## Base URL
|
|
6
6
|
|
|
@@ -52,13 +52,13 @@ http://localhost:8765/api/v1
|
|
|
52
52
|
|
|
53
53
|
### GET /health
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
Check server status.
|
|
56
56
|
|
|
57
57
|
**Response:**
|
|
58
58
|
```json
|
|
59
59
|
{
|
|
60
60
|
"status": "ok",
|
|
61
|
-
"version": "1.0.
|
|
61
|
+
"version": "1.0.1"
|
|
62
62
|
}
|
|
63
63
|
```
|
|
64
64
|
|
|
@@ -68,7 +68,7 @@ http://localhost:8765/api/v1
|
|
|
68
68
|
|
|
69
69
|
### GET /sources
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
Retrieve all data sources.
|
|
72
72
|
|
|
73
73
|
**Response:**
|
|
74
74
|
```json
|
|
@@ -90,7 +90,7 @@ http://localhost:8765/api/v1
|
|
|
90
90
|
|
|
91
91
|
### POST /sources
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
Create a new data source.
|
|
94
94
|
|
|
95
95
|
**Request:**
|
|
96
96
|
```json
|
|
@@ -104,7 +104,7 @@ http://localhost:8765/api/v1
|
|
|
104
104
|
```
|
|
105
105
|
|
|
106
106
|
**Source Types:**
|
|
107
|
-
- `file` -
|
|
107
|
+
- `file` - Local file (CSV, Parquet)
|
|
108
108
|
- `postgresql` - PostgreSQL
|
|
109
109
|
- `mysql` - MySQL
|
|
110
110
|
- `snowflake` - Snowflake
|
|
@@ -172,11 +172,11 @@ http://localhost:8765/api/v1
|
|
|
172
172
|
|
|
173
173
|
### GET /sources/{id}
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
Retrieve a specific source.
|
|
176
176
|
|
|
177
177
|
### PUT /sources/{id}
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
Update source information.
|
|
180
180
|
|
|
181
181
|
**Request:**
|
|
182
182
|
```json
|
|
@@ -188,11 +188,11 @@ http://localhost:8765/api/v1
|
|
|
188
188
|
|
|
189
189
|
### DELETE /sources/{id}
|
|
190
190
|
|
|
191
|
-
|
|
191
|
+
Delete a source.
|
|
192
192
|
|
|
193
193
|
### POST /sources/{id}/test
|
|
194
194
|
|
|
195
|
-
|
|
195
|
+
Test source connection.
|
|
196
196
|
|
|
197
197
|
**Response:**
|
|
198
198
|
```json
|
|
@@ -210,7 +210,7 @@ http://localhost:8765/api/v1
|
|
|
210
210
|
|
|
211
211
|
### GET /sources/{id}/schema
|
|
212
212
|
|
|
213
|
-
|
|
213
|
+
Retrieve the learned schema for a source.
|
|
214
214
|
|
|
215
215
|
**Response:**
|
|
216
216
|
```json
|
|
@@ -237,7 +237,7 @@ http://localhost:8765/api/v1
|
|
|
237
237
|
|
|
238
238
|
### PUT /sources/{id}/schema
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
Save schema (manual edit).
|
|
241
241
|
|
|
242
242
|
**Request:**
|
|
243
243
|
```json
|
|
@@ -248,9 +248,9 @@ http://localhost:8765/api/v1
|
|
|
248
248
|
|
|
249
249
|
### POST /sources/{id}/learn
|
|
250
250
|
|
|
251
|
-
|
|
251
|
+
Generate schema automatically (th.learn).
|
|
252
252
|
|
|
253
|
-
|
|
253
|
+
Analyzes data to automatically generate a schema.
|
|
254
254
|
|
|
255
255
|
**Response:**
|
|
256
256
|
```json
|
|
@@ -286,7 +286,7 @@ http://localhost:8765/api/v1
|
|
|
286
286
|
|
|
287
287
|
### POST /sources/{id}/validate
|
|
288
288
|
|
|
289
|
-
|
|
289
|
+
Run validation (th.check).
|
|
290
290
|
|
|
291
291
|
**Request:**
|
|
292
292
|
```json
|
|
@@ -298,9 +298,9 @@ http://localhost:8765/api/v1
|
|
|
298
298
|
```
|
|
299
299
|
|
|
300
300
|
**Parameters:**
|
|
301
|
-
- `validators` (optional):
|
|
302
|
-
- `schema_path` (optional):
|
|
303
|
-
- `auto_schema` (optional): true
|
|
301
|
+
- `validators` (optional): List of validators to run
|
|
302
|
+
- `schema_path` (optional): Path to schema file
|
|
303
|
+
- `auto_schema` (optional): If true, auto-generate schema before validation
|
|
304
304
|
|
|
305
305
|
**Response:**
|
|
306
306
|
```json
|
|
@@ -337,11 +337,11 @@ http://localhost:8765/api/v1
|
|
|
337
337
|
|
|
338
338
|
### GET /validations/{id}
|
|
339
339
|
|
|
340
|
-
|
|
340
|
+
Retrieve validation result details.
|
|
341
341
|
|
|
342
342
|
### GET /sources/{id}/validations
|
|
343
343
|
|
|
344
|
-
|
|
344
|
+
Retrieve validation history for a source.
|
|
345
345
|
|
|
346
346
|
**Query Parameters:**
|
|
347
347
|
- `page` (default: 1)
|
|
@@ -376,7 +376,7 @@ http://localhost:8765/api/v1
|
|
|
376
376
|
|
|
377
377
|
### POST /sources/{id}/profile
|
|
378
378
|
|
|
379
|
-
|
|
379
|
+
Run data profiling (th.profile).
|
|
380
380
|
|
|
381
381
|
**Response:**
|
|
382
382
|
```json
|
|
@@ -420,7 +420,7 @@ http://localhost:8765/api/v1
|
|
|
420
420
|
|
|
421
421
|
### GET /sources/{id}/profile
|
|
422
422
|
|
|
423
|
-
|
|
423
|
+
Retrieve the most recent profile result.
|
|
424
424
|
|
|
425
425
|
---
|
|
426
426
|
|
|
@@ -428,7 +428,7 @@ http://localhost:8765/api/v1
|
|
|
428
428
|
|
|
429
429
|
### POST /drift/compare
|
|
430
430
|
|
|
431
|
-
|
|
431
|
+
Compare two datasets (th.compare).
|
|
432
432
|
|
|
433
433
|
**Request:**
|
|
434
434
|
```json
|
|
@@ -438,7 +438,7 @@ http://localhost:8765/api/v1
|
|
|
438
438
|
}
|
|
439
439
|
```
|
|
440
440
|
|
|
441
|
-
|
|
441
|
+
Or:
|
|
442
442
|
```json
|
|
443
443
|
{
|
|
444
444
|
"source_path": "/data/v1.csv",
|
|
@@ -477,7 +477,7 @@ http://localhost:8765/api/v1
|
|
|
477
477
|
|
|
478
478
|
### GET /drift/{id}
|
|
479
479
|
|
|
480
|
-
|
|
480
|
+
Retrieve drift comparison result.
|
|
481
481
|
|
|
482
482
|
---
|
|
483
483
|
|
|
@@ -485,7 +485,7 @@ http://localhost:8765/api/v1
|
|
|
485
485
|
|
|
486
486
|
### GET /schedules
|
|
487
487
|
|
|
488
|
-
|
|
488
|
+
Retrieve all schedules.
|
|
489
489
|
|
|
490
490
|
**Response:**
|
|
491
491
|
```json
|
|
@@ -509,7 +509,7 @@ http://localhost:8765/api/v1
|
|
|
509
509
|
|
|
510
510
|
### POST /schedules
|
|
511
511
|
|
|
512
|
-
|
|
512
|
+
Create a new schedule.
|
|
513
513
|
|
|
514
514
|
**Request:**
|
|
515
515
|
```json
|
|
@@ -522,34 +522,34 @@ http://localhost:8765/api/v1
|
|
|
522
522
|
```
|
|
523
523
|
|
|
524
524
|
**Cron Expression Examples:**
|
|
525
|
-
- `0 9 * * *` -
|
|
526
|
-
- `0 */6 * * *` - 6
|
|
527
|
-
- `0 0 * * 1` -
|
|
528
|
-
- `0 0 1 * *` -
|
|
525
|
+
- `0 9 * * *` - Daily at 9 AM
|
|
526
|
+
- `0 */6 * * *` - Every 6 hours
|
|
527
|
+
- `0 0 * * 1` - Every Monday at midnight
|
|
528
|
+
- `0 0 1 * *` - First day of each month at midnight
|
|
529
529
|
|
|
530
530
|
### GET /schedules/{id}
|
|
531
531
|
|
|
532
|
-
|
|
532
|
+
Retrieve schedule details.
|
|
533
533
|
|
|
534
534
|
### PUT /schedules/{id}
|
|
535
535
|
|
|
536
|
-
|
|
536
|
+
Update a schedule.
|
|
537
537
|
|
|
538
538
|
### DELETE /schedules/{id}
|
|
539
539
|
|
|
540
|
-
|
|
540
|
+
Delete a schedule.
|
|
541
541
|
|
|
542
542
|
### POST /schedules/{id}/pause
|
|
543
543
|
|
|
544
|
-
|
|
544
|
+
Pause a schedule.
|
|
545
545
|
|
|
546
546
|
### POST /schedules/{id}/resume
|
|
547
547
|
|
|
548
|
-
|
|
548
|
+
Resume a schedule.
|
|
549
549
|
|
|
550
550
|
### POST /schedules/{id}/run
|
|
551
551
|
|
|
552
|
-
|
|
552
|
+
Run a schedule immediately.
|
|
553
553
|
|
|
554
554
|
---
|
|
555
555
|
|
|
@@ -557,7 +557,7 @@ http://localhost:8765/api/v1
|
|
|
557
557
|
|
|
558
558
|
### GET /notifications/channels
|
|
559
559
|
|
|
560
|
-
|
|
560
|
+
Retrieve notification channels.
|
|
561
561
|
|
|
562
562
|
**Response:**
|
|
563
563
|
```json
|
|
@@ -578,7 +578,7 @@ http://localhost:8765/api/v1
|
|
|
578
578
|
|
|
579
579
|
### POST /notifications/channels
|
|
580
580
|
|
|
581
|
-
|
|
581
|
+
Create a new notification channel.
|
|
582
582
|
|
|
583
583
|
**Slack Channel:**
|
|
584
584
|
```json
|
|
@@ -624,11 +624,11 @@ http://localhost:8765/api/v1
|
|
|
624
624
|
|
|
625
625
|
### DELETE /notifications/channels/{id}
|
|
626
626
|
|
|
627
|
-
|
|
627
|
+
Delete a channel.
|
|
628
628
|
|
|
629
629
|
### POST /notifications/channels/{id}/test
|
|
630
630
|
|
|
631
|
-
|
|
631
|
+
Send a test notification.
|
|
632
632
|
|
|
633
633
|
**Response:**
|
|
634
634
|
```json
|
|
@@ -640,7 +640,7 @@ http://localhost:8765/api/v1
|
|
|
640
640
|
|
|
641
641
|
### GET /notifications/rules
|
|
642
642
|
|
|
643
|
-
|
|
643
|
+
Retrieve notification rules.
|
|
644
644
|
|
|
645
645
|
**Response:**
|
|
646
646
|
```json
|
|
@@ -662,7 +662,7 @@ http://localhost:8765/api/v1
|
|
|
662
662
|
|
|
663
663
|
### POST /notifications/rules
|
|
664
664
|
|
|
665
|
-
|
|
665
|
+
Create a new notification rule.
|
|
666
666
|
|
|
667
667
|
**Request:**
|
|
668
668
|
```json
|
|
@@ -675,18 +675,18 @@ http://localhost:8765/api/v1
|
|
|
675
675
|
```
|
|
676
676
|
|
|
677
677
|
**Condition Types:**
|
|
678
|
-
- `validation_failed` -
|
|
679
|
-
- `critical_issues` -
|
|
680
|
-
- `high_issues` -
|
|
681
|
-
- `schedule_failed` -
|
|
678
|
+
- `validation_failed` - When validation fails
|
|
679
|
+
- `critical_issues` - When critical severity issues occur
|
|
680
|
+
- `high_issues` - When high severity issues occur
|
|
681
|
+
- `schedule_failed` - When scheduled execution fails
|
|
682
682
|
|
|
683
683
|
### DELETE /notifications/rules/{id}
|
|
684
684
|
|
|
685
|
-
|
|
685
|
+
Delete a rule.
|
|
686
686
|
|
|
687
687
|
### GET /notifications/logs
|
|
688
688
|
|
|
689
|
-
|
|
689
|
+
Retrieve notification delivery logs.
|
|
690
690
|
|
|
691
691
|
**Query Parameters:**
|
|
692
692
|
- `limit` (default: 50)
|
|
@@ -714,21 +714,21 @@ http://localhost:8765/api/v1
|
|
|
714
714
|
|
|
715
715
|
| Code | Description |
|
|
716
716
|
|------|-------------|
|
|
717
|
-
| `SOURCE_NOT_FOUND` |
|
|
718
|
-
| `VALIDATION_ERROR` |
|
|
719
|
-
| `CONNECTION_ERROR` |
|
|
720
|
-
| `SCHEDULE_ERROR` |
|
|
721
|
-
| `NOTIFICATION_ERROR` |
|
|
722
|
-
| `RATE_LIMIT_EXCEEDED` |
|
|
723
|
-
| `INTERNAL_ERROR` |
|
|
717
|
+
| `SOURCE_NOT_FOUND` | Data source not found |
|
|
718
|
+
| `VALIDATION_ERROR` | Error during validation execution |
|
|
719
|
+
| `CONNECTION_ERROR` | Database connection failed |
|
|
720
|
+
| `SCHEDULE_ERROR` | Scheduled task failed |
|
|
721
|
+
| `NOTIFICATION_ERROR` | Notification delivery failed |
|
|
722
|
+
| `RATE_LIMIT_EXCEEDED` | Request limit exceeded |
|
|
723
|
+
| `INTERNAL_ERROR` | Internal server error |
|
|
724
724
|
|
|
725
725
|
---
|
|
726
726
|
|
|
727
727
|
## Rate Limiting
|
|
728
728
|
|
|
729
|
-
|
|
729
|
+
By default, requests are limited to 120 per minute.
|
|
730
730
|
|
|
731
|
-
|
|
731
|
+
When rate limit is exceeded:
|
|
732
732
|
```json
|
|
733
733
|
{
|
|
734
734
|
"success": false,
|
|
@@ -743,13 +743,13 @@ Rate limit 초과 시:
|
|
|
743
743
|
|
|
744
744
|
## Authentication (Optional)
|
|
745
745
|
|
|
746
|
-
|
|
746
|
+
When authentication is enabled, all API requests require Basic Auth headers:
|
|
747
747
|
|
|
748
748
|
```bash
|
|
749
749
|
curl -u :password http://localhost:8765/api/v1/health
|
|
750
750
|
```
|
|
751
751
|
|
|
752
|
-
|
|
752
|
+
Enable authentication via environment variables:
|
|
753
753
|
```bash
|
|
754
754
|
TRUTHOUND_AUTH_ENABLED=true
|
|
755
755
|
TRUTHOUND_AUTH_PASSWORD=your-secret-password
|