# 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 <METHOD> <BASE_URL> <API_PATH> <VAULT_PATH> <TOKEN_KEY> [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).
