# Vault API Wrapper — Test Results **Date:** July 16, 2026 **Wrapper:** `/home/jcbeasley/.openclaw/workspace/scripts/vault_api.py` --- ## ✅ Verified Working Services ### 1. Grist ```bash python3 vault_api.py GET "https://grist.beawit.net" \ "/api/docs/wmBGUbgBveCdeY8fZ6T6eL/tables/Intune/records" \ "api/integration" "grist" "Bearer" ``` **Status:** ✅ Works (63 records) **Header:** Bearer ### 2. NocoDB ```bash python3 vault_api.py GET "http://192.168.25.5:8080" \ "/api/v1/db/meta/projects" \ "api/infrastructure" "nocodb-token" "xc-token" ``` **Status:** ✅ Works (7 projects) **Header:** xc-token ### 3. Qdrant ```bash python3 vault_api.py GET "http://192.168.19.17:6333" \ "/collections" \ "api/infrastructure" "qdrant-api-key" "api-key" ``` **Status:** ✅ Works (29 collections) **Header:** api-key ### 4. Home Assistant ```bash python3 vault_api.py GET "http://homeassistant.beawit.net:8123" \ "/api/" \ "api/integration" "homeassistant-api-key" "Bearer" ``` **Status:** ✅ Works (API running) **Header:** Bearer --- ## ⚠️ Service-Specific Issues ### n8n **Issue:** SSL/TLS SNI error — `n8n.beawit.net` certificate mismatch **Workaround:** Use HTTP or correct hostname ### Odoo **Issue:** Returns 400 — Odoo uses different auth mechanism (not simple Bearer tokens) **Workaround:** Requires session-based auth or API key in specific format --- ## Vault Structure Summary ### api/infrastructure | Token Key | Service | Status | Header | |-----------|---------|--------|--------| | gitea-token | Gitea | Not tested | — | | metabase-api-key | Metabase | Not tested | — | | metabase-password | Metabase | Not tested | — | | nocodb-token | NocoDB | ✅ Works | xc-token | | odoo-api-key | Odoo | ⚠️ 400 | Custom | | qdrant-api-key | Qdrant | ✅ Works | api-key | | rustfs-access-key | RustFS | Not tested | — | | rustfs-secret-key | RustFS | Not tested | — | ### api/integration | Token Key | Service | Status | Header | |-----------|---------|--------|--------| | grist | Grist | ✅ Works | Bearer | | homeassistant-api-key | Home Assistant | ✅ Works | Bearer | | n8n-api-key | n8n | ⚠️ SSL | Bearer | | tavily-api-key | Tavily | Not tested | — | ### Other Categories - `api/ai-ml` — kokoro, ollama, openai, serpapi - `api/business` — hunter, invoiceninja, kimai - `api/media` — freepik, json2video, pexels, youtube - `api/monitoring` — uptime-kuma --- ## Usage Pattern ```bash python3 vault_api.py [header_type] [payload_file] ``` **Parameters:** - `METHOD`: GET, POST, PATCH - `BASE_URL`: Service base URL (e.g., `https://grist.beawit.net`) - `API_PATH`: API endpoint (e.g., `/api/docs/xxx/records`) - `VAULT_PATH`: Vault category path (e.g., `api/infrastructure`) - `TOKEN_KEY`: Specific token key within category (e.g., `nocodb-token`) - `header_type`: Bearer, xc-token, api-key, X-Api-Key --- ## Next Steps 1. **Fix n8n SSL** — Certificate/hostname issue 2. **Fix Odoo auth** — Requires session-based or API key auth 3. **Test remaining services** — Metabase, Gitea, RustFS, etc. 4. **Add service-specific wrappers** — Some services need custom auth flows The generic wrapper is **production-ready** for services that use standard token-based auth (Bearer, api-key, xc-token).