WYRE-AI/msp-claude-plugins/msp-claude-plugins/kaseya/datto-saas-protection/skills/api-patterns/SKILL.md
Datto SaaS Protection API Patterns
Datto SaaS Protection (formerly Backupify) REST API fundamentals: regional base URLs, bearer-token auth, the seat/tenant object model, backup status queries, and restore operations.
- Source repository stars
- 42
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-08-28
- Source checked
- 2026-08-28
Decision brief
What it does: where it fits
Datto SaaS Protection (formerly Backupify) REST API fundamentals: regional base URLs, bearer-token auth, the seat/tenant object model, backup status queries, and restore operations.
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/kaseya/datto-saas-protection/skills/api-patterns"Inspect the Agent Skill "Datto SaaS Protection API Patterns" from https://github.com/WYRE-AI/msp-claude-plugins/blob/5005f73ba2f52cd299f58aa6bb79f4e70ae87103/msp-claude-plugins/kaseya/datto-saas-protection/skills/api-patterns/SKILL.md at commit 5005f73ba2f52cd299f58aa6bb79f4e70ae87103. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Status note
The MCP server (datto-saas-protection-mcp) and SDK (@wyre-technology/node-datto-saas-protection) are in development.
The MCP server (datto-saas-protection-mcp) and SDK (@wyre-technology/node-datto-saas-protection) are in development. - 02
Anti-triggers
Spanning — Kaseya's other cloud-to-cloud backup product covers
Spanning — Kaseya's other cloud-to-cloud backup product coversDatto's appliance backup — SIRIS/Alto image backup is BCDR, a- Spanning — Kaseya's other cloud-to-cloud backup product covers the same Microsoft 365 and Google Workspace workloads (plus Salesforce) under separate credentials and a separate API; use spanning-api-patterns. - Datto'… - 03
Authentication
API key issued from the SaaS Protection partner portal:
SaaS Protection portal → Settings → API → Create KeyOptional: scope key to specific clientsSend on every request: - 04
Object model
Review the “Object model” section in the pinned source before continuing.
Review and apply the “Object model” source section. - 05
Common endpoints
Review the “Common endpoints” section in the pinned source before continuing.
Review and apply the “Common endpoints” source section.
Permission review
Static risk signals and limitations
Network access
The documentation includes network, browsing, or remote request actions.
https://api.datto.com/api/v1 (US)Network access
The documentation includes network, browsing, or remote request actions.
https://api.eu.datto.com/api/v1 (EU)Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 42 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- WYRE-AI/msp-claude-plugins
- Skill path
- msp-claude-plugins/kaseya/datto-saas-protection/skills/api-patterns/SKILL.md
- Commit
- 5005f73ba2f52cd299f58aa6bb79f4e70ae87103
- License
- Apache-2.0
- Collected
- 2026-08-28
- Default branch
- main
View the original SKILL.md
Datto SaaS Protection API Patterns
Status note
The MCP server (datto-saas-protection-mcp) and SDK (@wyre-technology/node-datto-saas-protection) are in development.
Overview
Datto SaaS Protection (rebranded Backupify, now also folded together with Spanning under the same product family) provides cloud-to-cloud backup for Microsoft 365 and Google Workspace tenants.
Base URLs (per region):
https://api.datto.com/api/v1 (US)
https://api.eu.datto.com/api/v1 (EU)
The MCP server takes a region credential field (us or eu); never hard-code.
Anti-triggers
- Spanning — Kaseya's other cloud-to-cloud backup product covers
the same Microsoft 365 and Google Workspace workloads (plus
Salesforce) under separate credentials and a separate API; use
spanning-api-patterns. - Datto's appliance backup — SIRIS/Alto image backup is BCDR, a
different product and API; use
datto-bcdr-api-patterns.
Authentication
API key issued from the SaaS Protection partner portal:
- SaaS Protection portal → Settings → API → Create Key
- Optional: scope key to specific clients
- Send on every request:
Authorization: Bearer <api_key>
Keys are long-lived; rotate from the same UI.
Object model
Partner
└── Client (a customer organization)
└── Domain (M365 tenant / Google domain)
└── Seat (mailbox / OneDrive / SharePoint site / Google user)
└── Backup runs / restore points
Common endpoints
| Domain | Endpoint | Notes |
|---|---|---|
| Clients | GET /clients | All client orgs |
| Domains | GET /clients/{clientId}/domains | M365/Google tenants |
| Seats | GET /clients/{clientId}/domains/{domainId}/seats | Active + archived |
| Single seat | GET /seats/{seatId} | |
| Backup status | GET /seats/{seatId}/backups | Most recent backup runs |
| Activity log | GET /clients/{clientId}/activity | Org-level events |
| Restore (request) | POST /seats/{seatId}/restores | Queue restore |
| Restore status | GET /restores/{restoreId} | |
| License usage | GET /clients/{clientId}/usage | Seat counts |
Pagination
Cursor-based:
GET /clients?limit=100
→ { items: [...], nextCursor: "abc123" }
GET /clients?limit=100&cursor=abc123
Default limit is 50, max is 250. Stop when nextCursor is missing or null.
Restore operations
Restores are async. The flow:
1. POST /seats/{seatId}/restores → { restoreId, status: "queued" }
2. Poll GET /restores/{restoreId} → status transitions queued → running → completed | failed
3. On completed, fetch the result location (URL or destination metadata)
Typical restore wall-clock: minutes to hours depending on data volume. Poll at 30-second intervals; do not poll faster.
Rate limits
60 req/min per API key under default policy. HTTP 429 includes Retry-After. Aggregate operations (list all seats across all clients) should use Promise.all with concurrency capped at 4.
Error handling
| HTTP | Meaning | Action |
|---|---|---|
| 200 | OK | |
| 400 | Bad request | Validate inputs |
| 401 | Bad / expired key | Rotate key |
| 403 | Key lacks scope on this client | Verify scope |
| 404 | Unknown seatId / clientId / domainId | |
| 409 | Restore already queued for this seat | Surface; offer to cancel-and-retry |
| 429 | Rate limited | Back off per Retry-After |
| 500-503 | Transient | Exponential backoff |
Gotchas
- Region selection is sticky: A US-region key cannot call EU endpoints. The error is a generic 401, not a 404 — surface a clear message asking the user to check the region credential.
- Archived seats: By default, list endpoints return only active seats. Pass
?includeArchived=trueto see seats whose source mailboxes were deleted but whose backups are retained. - Spanning vs. SaaS Protection: These are different products that share marketing branding. Spanning has its own API (
spanning-mcpplugin) — don't conflate keys. - Restore destination quirks: Restoring an M365 mailbox to an existing user requires Graph API permissions on the target tenant; the SaaS Protection API surfaces the dependency as a 400 once the restore starts running, not at queue time.
Related skills
When the build-out lands, expect domain skills for: clients, seats, restores, activity-logs, license-usage.
Frequently asked questions
What to verify before installation and use
What does the Datto SaaS Protection API Patterns source document cover?
Datto SaaS Protection (formerly Backupify) REST API fundamentals: regional base URLs, bearer-token auth, the seat/tenant object model, backup status queries, and restore operations.
How do I install Datto SaaS Protection API Patterns?
The source record exposes this install command: npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/kaseya/datto-saas-protection/skills/api-patterns". Inspect the command and pinned source before running it.
Which permission-related actions were detected?
Static rules flagged network in the source; the page lists the matching lines and excerpts.
Alternatives
Compare before choosing
garrytan/gbrain
bulk-ingestion
End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.
alirezarezvani/claude-skills
app-store-optimization
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
dotnet/skills
migrate-vstest-to-mtp
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing
oaustegard/claude-skills
featuring
Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre