What Vectis does with Egnyte
- One folder per customer. Each immediate subfolder under your configured clients root becomes a row on the matching customer’s Documentation section.
- Recent files, live. Click a folder card and the customer hub fetches the most recently modified files for that folder from the Egnyte API. File metadata only — no file contents are persisted, and every fetch is audit-logged.
- Never touches file content. Vectis lists files; opening them happens in Egnyte’s web UI via the Open link. We do not download, mirror, or render file bodies.
What you'll need
- Egnyte subdomain — the
<x>in<x>.egnyte.com - Long-lived access token — minted via the Egnyte Developer portal
- Clients folder root — the absolute path inside your Egnyte tenant whose immediate subfolders are customer folders, e.g.
/Shared/Work/Acme/Clients
1. Mint a developer access token
- Sign in at developers.egnyte.com and register an API key. Pick a descriptive name like “Vectis”.
- Once the key is approved (Egnyte usually approves within a business day), run the OAuth password-grant flow once to exchange the API key for a long-lived bearer token. The request is
POST https://<x>.egnyte.com/puboauth/tokenwithclient_id, username, password, grant_type=password. - Save the
access_tokenfrom the response — that’s what you paste into Vectis.
2. Paste the connection into Vectis
- Go to Admin → Integrations and click Configure on Egnyte.
- Enter the subdomain (no protocol or path), the access token, and the clients root path. The path must start with
/. - Click Test. Vectis calls
/pubapi/v1/userinfoto verify the token, then probes the clients root to confirm the user can read it. - Click Save, then trigger an initial sync. The sync lists subfolders under the clients root and creates one documentation row per subfolder, auto-matching by normalized name to your existing customers.
3. When folder names don't match customer names
If a folder name doesn’t match the PSA customer name — abbreviations, acquisitions, alternate spellings — the auto-match will miss. Pin the customer to a specific folder path by inserting a row into customer_egnyte_folder_overrides:
INSERT INTO customer_egnyte_folder_overrides
(customer_id, folder_path)
VALUES
('<customer-uuid>', '/Shared/Work/Acme/Clients/Acme Holdings');The next sync will pick up the override and link the folder to that customer regardless of name match.
What appears where
- Customer hub → Documentation section: a “Linked folders” group with one card for the customer’s mapped Egnyte folder. Click the card to expand recent files (top 25, modified-desc). Click Open in Egnyte to jump to the folder in Egnyte’s web UI.
- Inline preview: file metadata only — name, modified date, size. Opening a file always happens in Egnyte; we do not proxy file content.
Search and preview
Vectis maintains an index of file metadata — name, parent folder, size, modified date — for every file under each customer’s mapped folder. The index is rebuilt on every Egnyte sync and is what powers filename search (in the customer hub Documentation section’s search box, and in the global ⌘K palette when a customer page is open). The index never stores file contents.
Inline preview renders these formats without leaving Vectis:
- PDF (
.pdf) — rendered by your browser’s native PDF viewer in a sandboxed iframe. - Image (
.png,.jpg,.jpeg,.gif,.webp,.svg) — SVG is sanitized server-side before render. - Plain text (
.txt,.md,.csv,.log,.json) — first 2 MB shown verbatim. - Word (
.docx) — converted to HTML server-side via Mammoth and rendered in a strict-CSP iframe. - Excel (
.xlsx) — converted to a stacked HTML table per sheet with anchor-link navigation. Multi-sheet workbooks render every sheet in one scroll.
Anything else (PowerPoint, legacy .doc/.xls, archives, video) shows a “Preview not supported — Open in Egnyte” fallback. Files larger than 50 MB also fall through to the Egnyte web UI; this cap is intentional and applies before any conversion runs.
audit_log row attributing the action to the signed-in user.Tuning the index
By default Vectis walks each customer folder up to 8 directories deep and indexes up to 50,000 files per customer. If a customer tree is deeper or larger than that, the customer’s folder card surfaces a small “some files weren’t indexed” notice and search results are best-effort.
Both caps are tunable per integration via integration_configs.settings:
UPDATE integration_configs
SET settings = jsonb_set(
COALESCE(settings, '{}'::jsonb),
'{walkDepth}', '12'::jsonb
)
WHERE provider = 'egnyte';Same shape for fileCap. The next sync will pick up the new caps; the index will grow or shrink to match on the run after that.
Common errors
401 Unauthorized — the access token is invalid or has been revoked. Mint a new one in the Developer portal.
403 on the clients root — the token user doesn’t have permission to read that folder. Grant access to the service account in Egnyte and re-test.
404 — either the subdomain is wrong or the clients root path doesn’t exist. Verify both in Egnyte’s web UI before retrying.