Sweep Backoffice API

The Backoffice API from Sweep — 67 operation(s) for backoffice.

Operations 75

GET /backoffice/accounts #
POST /backoffice/accounts #
GET /backoffice/users #
GET /backoffice/accounts/installed-packages #
POST /backoffice/accounts/{accountId} #
GET /backoffice/crm_orgs/{crmOrgId}/sweep_transactions_log #
GET /backoffice/crm_orgs/{crmOrgId}/fetch #
POST /backoffice/crm_orgs/{orgId}/force-refresh-token #
POST /backoffice/crm_orgs/{orgId}/force-refresh-user-token #
GET /backoffice/crm_orgs/all/get_soql #
GET /backoffice/ai_agents/{agentId}/trigger_scan #
GET /backoffice/crm_orgs/{crmOrgId}/get_soql #
GET /backoffice/accounts/{accountId}/crm_orgs #
GET /backoffice/accounts/{accountId}/orgs #
POST /backoffice/orgs/{orgId}/fetch #
GET /backoffice/orgs/{orgId}/metadata-search #
GET /backoffice/orgs/{orgId} #
POST /backoffice/snowflake-orgs/{orgId}/query #
GET /backoffice/crm-orgs/{crmOrgId} #
POST /backoffice/crm_orgs/{crmOrgId}/salesforce-event-monitoring-log-export #
PUT /backoffice/crm-orgs/{crmOrgId}/tier #
POST /backoffice/parse-all #
POST /backoffice/housekeeping/purge-salto-workspaces #
POST /backoffice/recovery/init-missing-bare-repos #
POST /backoffice/ai-projects/backfill-origin-template-ids #
POST /backoffice/accounts/{accountId}/invite #
GET /backoffice/accounts/{accountId}/users #
GET /backoffice/accounts/{accountId}/roles #
PUT /backoffice/users/{userId}/role #
DELETE /backoffice/users/{userId} #
POST /backoffice/accounts/{accountId}/move-user #
GET /backoffice/crm-orgs/{crmOrgId}/automations #
PUT /backoffice/accounts/{accountId}/trial #
POST /backoffice/accounts/{orgId}/named-credential #
DELETE /backoffice/accounts/{orgId}/named-credential #
POST /backoffice/mp-version Update a file in s3 folder #
GET /backoffice/cache #
DELETE /backoffice/cache #
GET /backoffice/crm_orgs/{orgId}/analyse/{objectName} #
GET /backoffice/crm_orgs/{orgId}/unused-apex-classes #
GET /backoffice/job-execution/failed #
GET /backoffice/auto-fetch/org/{orgId} #
PUT /backoffice/auto-fetch/org/{orgId} #
POST /backoffice/crm_orgs/{orgId}/opt-monitoring #
GET /backoffice/lock/{lockKey} #
DELETE /backoffice/lock/{lockKey}/{ownerId} #
GET /backoffice/lock/{lockKey}/{ownerId} #
GET /backoffice/product-plan/available-product-policies #
GET /backoffice/product-plan/available-features #
GET /backoffice/product-plan/{accountId} #
PATCH /backoffice/product-plan/{accountId} #
PUT /backoffice/product-plan/{accountId}/features #
GET /backoffice/product-plan/{accountId}/features #
GET /backoffice/dump-automations/{folderName} #
POST /backoffice/restart-python-agent #
POST /backoffice/crm_orgs/{orgId}/ai-process-mining #
POST /backoffice/opensearch/reset-index/{orgId} #
POST /backoffice/opensearch/migrate-index/{orgId} #
POST /backoffice/opensearch/purge-inactive-index/{orgId} #
POST /backoffice/opensearch/search-by-content/{orgId} #
POST /backoffice/opensearch/search-by-filename/{orgId} #
POST /backoffice/opensearch/raw-search/{orgId} #
GET /backoffice/opensearch/scope/{orgId} #
PUT /backoffice/opensearch/scope/{orgId} #
POST /backoffice/agent-files/{fileId}/generate-summary #
POST /backoffice/agent-files/regenerate-all-summaries #
POST /backoffice/accounts/{accountId}/copy-prompt-group/{promptGroupId} #
GET /backoffice/agent-summaries #
GET /backoffice/agent-summaries/stats #
GET /backoffice/agent-summaries/accounts #
GET /backoffice/agent-summaries/users #
GET /backoffice/agent-summaries/agents #
GET /backoffice/agent-summaries/modes #
GET /backoffice/ai-artifacts/{versionId} Fetch a single AI artifact by its version id (primary key of AiArtifact). `versionId` matches the naming used in the dashboard's artifact API and in the `[Artifact: (ID: <a</span> <a href="#op-BackofficeController_getAiArtifactByVersionId" style="font-family:ui-monospace,Menlo,monospace;font-size:.72rem;color:#9ca3af;text-decoration:none" title="BackofficeController_getAiArtifactByVersionId">#</a> </div> <div id="op-BackofficeController_syncGraphDbBatch" style="display:flex;gap:.75rem;align-items:baseline;padding:.5rem .9rem;border-bottom:1px solid #f1f3f7;background:#fff;scroll-margin-top:5rem"> <span style="font-family:ui-monospace,Menlo,monospace;font-size:.7rem;font-weight:700;color:#1d4ed8;min-width:3.5rem">POST</span> <span style="font-family:ui-monospace,Menlo,monospace;font-size:.82rem;color:#1a1a2e">/backoffice/sync-graph-db-batch</span> <span style="color:#6b7280;font-size:.82rem;flex:1"></span> <a href="#op-BackofficeController_syncGraphDbBatch" style="font-family:ui-monospace,Menlo,monospace;font-size:.72rem;color:#9ca3af;text-decoration:none" title="BackofficeController_syncGraphDbBatch">#</a> </div> </div> <div class="api-grid"> <div> <h3 class="section-title" id="documentation">Documentation</h3> <div class="resource-group"> <a href="https://api.sweep.io/api" class="property-tile" target="_blank" rel="noopener"> <div class="property-icon">📖</div> <div class="property-text"> <div class="property-type">APIReference</div> <div class="property-host">https://api.sweep.io/api</div> </div> </a> <a href="https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/authentication/sweep-authentication.yml" class="property-tile" target="_blank" rel="noopener"> <div class="property-icon">📖</div> <div class="property-text"> <div class="property-type">Authentication</div> <div class="property-host">https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/authentication/sweep-authentication.yml</div> </div> </a> </div> <h3 class="section-title" id="specifications">Specifications</h3> <div class="resource-group"> <a href="https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/openapi/sweep-backoffice-api-openapi.yml" class="property-tile" target="_blank" rel="noopener"> <div class="property-icon">⚙</div> <div class="property-text"> <div class="property-type">OpenAPI</div> <div class="property-host">https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/openapi/sweep-backoffice-api-openapi.yml</div> </div> </a> </div> <h3 class="section-title" id="other-resources">Other Resources</h3> <div class="resource-group"> <a href="https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/conventions/sweep-conventions.yml" class="property-tile" target="_blank" rel="noopener"> <div class="property-icon">🔗</div> <div class="property-text"> <div class="property-type">Conventions</div> <div class="property-host">https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/conventions/sweep-conventions.yml</div> </div> </a> <a href="https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/data-model/sweep-data-model.yml" class="property-tile" target="_blank" rel="noopener"> <div class="property-icon">🔗</div> <div class="property-text"> <div class="property-type">DataModel</div> <div class="property-host">https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/data-model/sweep-data-model.yml</div> </div> </a> <a href="https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/errors/sweep-problem-types.yml" class="property-tile" target="_blank" rel="noopener"> <div class="property-icon">🔗</div> <div class="property-text"> <div class="property-type">ErrorCatalog</div> <div class="property-host">https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/errors/sweep-problem-types.yml</div> </div> </a> </div> </div> <aside> <div class="sidebar-card"> <h3 class="section-title" style="margin-top: 0;">Provider</h3> <p class="sidebar-meta" style="margin: 0;"> <a href="https://apis.io/providers/sweep/"><strong>Sweep</strong></a> </p> </div> <div class="sidebar-card"> <h3 class="section-title" style="margin-top: 0;">Base URL</h3> <p class="sidebar-meta" style="margin: 0; font-family: monospace; font-size: 0.8rem; word-break: break-all;">https://api.sweep.io</p> </div> <div class="sidebar-card"> <h3 class="section-title" style="margin-top: 0;">Tags</h3> <div style="display: flex; flex-wrap: wrap; gap: 0.4rem;" itemprop="keywords"> <a href="https://apis.io/tags/back-office/" class="tag-chip-link">Back Office</a> </div> </div> <div class="sidebar-card"> <h3 class="section-title" style="margin-top: 0;">APIs.json</h3> <p class="sidebar-meta" style="margin: 0;"> <a href="https://github.com/api-evangelist/sweep/blob/main/apis.yml">View index file</a> </p> </div> </aside> </div> </article> <style> /* One row of options, not four stacked blocks. align-items:start so opening a <details> grows only its own card instead of stretching every sibling. */ .apimcp-bar { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 0.75rem; margin: 1rem 0 0; } /* flex over a fixed 4-column grid: two of the four cards are conditional, and a grid would leave a hole in the row on the sections that render three or two. */ .apimcp-card { flex: 1 1 220px; min-width: 0; background: #fff; border: 1px solid #e3e7ee; border-left: 3px solid var(--apimcp-accent, #6c757d); border-radius: 10px; padding: 0.9rem 1rem; } .apimcp-card h4 { font-size: 0.9rem; font-weight: 700; color: #1a1a2e; margin: 0 0 0.35rem; } .apimcp-card p { font-size: 0.78rem; line-height: 1.4; color: #6c757d; margin: 0; } .apimcp-card p + p, .apimcp-card > * + p { margin-top: 0.5rem; } .apimcp-card code { font-size: 0.72rem; word-break: break-all; } .apimcp-card summary { font-size: 0.78rem; color: #0d6efd; font-weight: 600; cursor: pointer; } .apimcp-card summary:hover { text-decoration: underline; } .apimcp-card details { margin-top: 0.15rem; } .apimcp-card ul { list-style: none; padding: 0; margin: 0.5rem 0 0; font-size: 0.78rem; } .apimcp-card ul li { margin-bottom: 0.5rem; } .apimcp-card ul li span { display: block; color: #6c757d; } .apimcp-card pre { background: #f6f8fa; border: 1px solid #e3e7ee; border-radius: 6px; padding: 0.5rem; margin: 0; white-space: pre-wrap; word-break: break-all; } .apimcp-curl { margin-top: 0.6rem; } .apimcp-curl .apimcp-label { display: block; font-size: 0.72rem; color: #6c757d; margin-bottom: 0.25rem; } .apimcp-link { display: inline-block; margin-top: 0.55rem; font-size: 0.78rem; font-weight: 600; color: #0d6efd; text-decoration: none; } .apimcp-link:hover { text-decoration: underline; } /* Three auth providers side by side keeps this card the same height as the others; stacked buttons were what made the row ragged. */ .apimcp-auth { display: flex; gap: 0.4rem; margin-top: 0.15rem; } .apimcp-auth a { flex: 1 1 0; min-width: 0; display: inline-flex; align-items: center; justify-content: center; gap: 0.3rem; padding: 0.35rem 0.4rem; border: 1px solid #d7dce5; border-radius: 6px; background: #fff; color: #4a5568; font-size: 0.72rem; font-weight: 600; text-decoration: none; } .apimcp-auth a:hover { border-color: #0d6efd; color: #0d6efd; } .apimcp-auth svg { flex: none; } @media (max-width: 575.98px) { .apimcp-card { flex-basis: 100%; } } </style> <h2 class="section-anchor" id="api-mcp"><a href="#api-mcp">Work with this as data</a></h2> <p class="section-blurb"> Every API here is available over the APIs.io API and to AI agents over MCP.</p> <div class="apimcp-bar"> <div class="apimcp-card" style="--apimcp-accent: #3098d8;"> <h4>MCP server</h4> <p>One button, every client — Claude, Cursor, VS Code and the rest.</p> <script src="https://install.apicommons.org/button.js" async></script> <mcp-install-button server="https://apis.io/server.json" label="Install the MCP server" color="#3098d8"></mcp-install-button> <p><code>https://apis.io/mcp</code></p> </div> <div class="apimcp-card" style="--apimcp-accent: #6d28d9;"> <h4>Tools for apis</h4> <details> <summary>7 MCP tools reach this</summary> <ul> <li><code>find_apis</code><span>Browse and filter every API in the catalog.</span></li> <li><code>get_api_artifacts</code><span>One API's artifacts, grouped by type.</span></li> <li><code>get_openapi</code><span>The primary OpenAPI for this API.</span></li> <li><code>find_similar_apis</code><span>APIs that look like this one.</span></li> <li><code>apis_io_search</code><span>START HERE — APIs, providers and tags for one query, each with its total.</span></li> <li><code>resolve</code><span>Turn a domain, URL or GitHub org into the provider it belongs to.</span></li> <li><code>find_cohorts</code><span>Every scored population of providers in the catalog.</span></li> </ul> </details> <a href="https://apis.io/developer/mcp-server/" class="apimcp-link">All 92 tools →</a> </div> <div class="apimcp-card" style="--apimcp-accent: #198754;"> <h4>Call it yourself</h4> <details> <summary>curl for this page</summary> <div class="apimcp-curl"> <span class="apimcp-label">This API</span> <pre><code>curl "https://apis.io/api/v1/apis/sweep-backoffice-api"</code></pre> </div> <div class="apimcp-curl"> <span class="apimcp-label">All apis</span> <pre><code>curl "https://apis.io/api/v1/apis?limit=25"</code></pre> </div> </details> <p>Discovery needs no key. Ratings and market analysis are Pro.</p> </div><div class="apimcp-card" style="--apimcp-accent: #6c757d;"> <h4>Get an API key</h4> <p>Free tier, no email required.</p> <div class="apimcp-auth"> <a href="https://apis.io/api/v1/auth/login?provider=github"> <svg viewBox="0 0 16 16" width="14" height="14" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"/></svg> <span>GitHub</span> </a> <a href="https://apis.io/api/v1/auth/login?provider=google"> <svg viewBox="0 0 18 18" width="14" height="14" aria-hidden="true"><path fill="#4285F4" d="M17.64 9.2c0-.64-.06-1.25-.16-1.84H9v3.48h4.84a4.14 4.14 0 0 1-1.8 2.72v2.26h2.92c1.7-1.57 2.68-3.88 2.68-6.62Z"/><path fill="#34A853" d="M9 18c2.43 0 4.47-.8 5.96-2.18l-2.92-2.26c-.81.54-1.84.86-3.04.86-2.34 0-4.32-1.58-5.03-3.7H.96v2.33A9 9 0 0 0 9 18Z"/><path fill="#FBBC05" d="M3.97 10.72a5.41 5.41 0 0 1 0-3.44V4.95H.96a9 9 0 0 0 0 8.1l3.01-2.33Z"/><path fill="#EA4335" d="M9 3.58c1.32 0 2.5.45 3.44 1.35l2.58-2.58C13.46.89 11.43 0 9 0A9 9 0 0 0 .96 4.95l3.01 2.33C4.68 5.16 6.66 3.58 9 3.58Z"/></svg> <span>Google</span> </a> <a href="https://apis.io/api/v1/auth/login?provider=linkedin"> <svg viewBox="0 0 24 24" width="14" height="14" fill="#0A66C2" aria-hidden="true"><path d="M20.45 20.45h-3.56v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.35V9h3.41v1.56h.05c.48-.9 1.63-1.85 3.36-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29ZM5.34 7.43a2.06 2.06 0 1 1 0-4.13 2.06 2.06 0 0 1 0 4.13ZM7.12 20.45H3.55V9h3.57v11.45ZM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.72V1.72C24 .77 23.2 0 22.22 0Z"/></svg> <span>LinkedIn</span> </a> </div> <p>A second provider on the same verified email joins the account you already have.</p> </div> </div> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebAPI", "name": "Sweep Backoffice API", "description": "The Backoffice API from Sweep — 67 operation(s) for backoffice.", "documentation": "https://api.sweep.io/api", "provider": { "@type": "Organization", "name": "Sweep" } ,"keywords": "Back Office" } </script> <link rel="stylesheet" href="/assets/prism/prism-coy.min.css"> <link rel="stylesheet" href="/assets/prism/prism-line-numbers.min.css"> <style> .src-widget { background: #fdfdfd; border: 1px solid #e3e7ee; border-radius: 10px; overflow: hidden; margin-top: 0.75rem; } .src-widget-head { display: flex; align-items: center; gap: 0.5rem; padding: 0.55rem 0.85rem; background: #f8fafc; border-bottom: 1px solid #e3e7ee; flex-wrap: wrap; } .src-label { color: #475569; font-weight: 600; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.8rem; flex: 0 0 auto; } .src-picker { flex: 0 0 auto; max-width: 360px; padding: 0.3em 0.55em; border: 1px solid #cbd5e1; border-radius: 4px; background: #fff; font-size: 0.78rem; color: #1a1a2e; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; cursor: pointer; } .src-picker:focus { outline: none; border-color: #1e40af; box-shadow: 0 0 0 2px rgba(30, 64, 175, 0.15); } .src-loading { color: #94a3b8; font-style: italic; padding: 1rem; } .src-search { flex: 1 1 200px; min-width: 140px; } .src-search input { width: 100%; padding: 0.3em 0.6em; border: 1px solid #cbd5e1; border-radius: 4px; font-size: 0.8rem; background: #fff; color: #1a1a2e; } .src-search input:focus { outline: none; border-color: #1e40af; box-shadow: 0 0 0 2px rgba(30, 64, 175, 0.15); } .src-actions { display: flex; gap: 0.25rem; flex: 0 0 auto; } .src-actions a, .src-actions button { background: none; border: 1px solid transparent; padding: 0.25em 0.6em; color: #1e40af; font-size: 0.78rem; font-weight: 500; cursor: pointer; text-decoration: none; border-radius: 4px; line-height: 1.4; } .src-actions a:hover, .src-actions button:hover { background: #eef2f7; } .src-actions button.active { background: #dbeafe; border-color: #93c5fd; } .src-actions button:disabled { color: #94a3b8; cursor: not-allowed; } .src-actions button:disabled:hover { background: none; } .src-widget pre[class*="language-"] { margin: 0; padding: 1rem 0; background: #fdfdfd; box-shadow: none; border: none; max-height: 540px; overflow: auto; font-size: 0.82rem; line-height: 1.5; } .src-widget pre[class*="language-"] > code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; padding-right: 1rem; } .src-widget pre[class*="language-"]::before, .src-widget pre[class*="language-"]::after { display: none; } .src-widget pre.line-numbers { padding-left: 3.5em; counter-reset: linenumber; position: relative; } .src-widget pre.line-numbers > code { position: relative; white-space: inherit; } .src-widget pre.line-numbers .line-numbers-rows { position: absolute; pointer-events: none; top: 1rem; font-size: 100%; left: -3em; width: 2.7em; letter-spacing: -1px; border-right: 1px solid #e3e7ee; user-select: none; } .src-widget pre.line-numbers .line-numbers-rows > span { display: block; counter-increment: linenumber; } .src-widget pre.line-numbers .line-numbers-rows > span:before { content: counter(linenumber); color: #cbd5e1; display: block; padding-right: 0.7em; text-align: right; font-size: 0.78rem; } .src-widget .token.key, .src-widget .token.property, .src-widget .token.atrule { color: #1e40af; font-weight: 600; } .src-widget .token.string { color: #047857; } .src-widget .token.number, .src-widget .token.boolean, .src-widget .token.null { color: #b45309; } .src-widget .token.comment { color: #94a3b8; font-style: italic; } .src-widget .token.punctuation, .src-widget .token.operator { color: #64748b; } .src-widget .token.tag { color: #7c3aed; } .src-widget .token.anchor, .src-widget .token.alias { color: #be185d; } .src-widget mark.src-hit { background: #fef08a; color: inherit; padding: 0; border-radius: 2px; } .src-widget mark.src-hit-active { background: #fb923c; color: #fff; } .src-copied { color: #047857 !important; } .src-empty { padding: 2rem 1rem; text-align: center; color: #94a3b8; font-size: 0.85rem; } </style> <h3 class="section-title" id="source">OpenAPI Specification</h3> <div class="src-widget" data-src-widget data-original-lang="yaml" data-current-lang="yaml" data-original-filename="sweep-backoffice-api-openapi.yml"> <div class="src-widget-head"> <span class="src-label" data-src-filename>sweep-backoffice-api-openapi.yml</span> <span class="src-search"> <input type="search" data-src-search placeholder="Search in source… (n / N to navigate)" aria-label="Search source"> </span> <span class="src-actions"> <button type="button" data-src-toggle data-target="yaml" aria-label="View as YAML">YAML</button> <button type="button" data-src-toggle data-target="json" aria-label="View as JSON">JSON</button> <button type="button" data-src-download aria-label="Download source">Download</button> <a data-src-raw href="https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/openapi/sweep-backoffice-api-openapi.yml" target="_blank" rel="noopener">Raw ↑</a> <button type="button" data-src-copy>Copy</button> </span> </div> <pre class="line-numbers language-yaml"><code class="language-yaml" data-src-code>openapi: 3.2.0 info: title: Sweep Backoffice API description: This is a publicly available Sweep API. version: '0.1' contact: {} servers: - url: https://api.sweep.io description: Sweep production API — the host this document was harvested from (GET /api-json); /health responds here tags: - name: Backoffice paths: /backoffice/accounts: get: operationId: BackofficeController_getAllAccounts parameters: [] responses: '200': description: '' content: application/json: schema: type: array items: type: object tags: - Backoffice post: operationId: BackofficeController_updateAccountsMany parameters: [] responses: '201': description: '' tags: - Backoffice /backoffice/users: get: operationId: BackofficeController_getAllUsers parameters: [] responses: '200': description: '' content: application/json: schema: type: array items: type: object tags: - Backoffice /backoffice/accounts/installed-packages: get: operationId: BackofficeController_getInstalledPackagesForFreeAccounts parameters: [] responses: '200': description: '' content: application/json: schema: type: array items: type: object tags: - Backoffice /backoffice/accounts/{accountId}: post: operationId: BackofficeController_releaseAccount parameters: - name: accountId required: true in: path schema: type: string - name: completeOnboarding required: true in: query schema: type: boolean responses: '201': description: '' tags: - Backoffice /backoffice/crm_orgs/{crmOrgId}/sweep_transactions_log: get: operationId: BackofficeController_getSweepTransactionsLog parameters: - name: crmOrgId required: true in: path schema: type: string - name: startDate required: true in: query schema: type: number - name: endDate required: true in: query schema: type: number responses: '200': description: '' content: application/json: schema: type: array items: type: object tags: - Backoffice /backoffice/crm_orgs/{crmOrgId}/fetch: get: operationId: BackofficeController_fetch parameters: - name: crmOrgId required: true in: path schema: type: string - name: operation required: true in: query schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/crm_orgs/{orgId}/force-refresh-token: post: operationId: BackofficeController_forceRefreshToken parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/crm_orgs/{orgId}/force-refresh-user-token: post: operationId: BackofficeController_forceRefreshUserToken parameters: - name: orgId required: true in: path schema: type: string - name: userId required: true in: query schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/crm_orgs/all/get_soql: get: operationId: BackofficeController_getAnySoqlQueryAllOrgs parameters: - name: query required: true in: query schema: type: string - name: useToolingApi required: true in: query schema: type: boolean responses: '200': description: '' content: application/json: schema: type: object tags: - Backoffice /backoffice/ai_agents/{agentId}/trigger_scan: get: operationId: BackofficeController_triggerScan parameters: - name: agentId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/crm_orgs/{crmOrgId}/get_soql: get: operationId: BackofficeController_getAnySoqlQuery parameters: - name: crmOrgId required: true in: path schema: type: string - name: query required: true in: query schema: type: string - name: useToolingApi required: true in: query schema: type: boolean - name: maxFetch required: true in: query schema: type: number responses: '200': description: '' content: application/json: schema: type: array items: type: object tags: - Backoffice /backoffice/accounts/{accountId}/crm_orgs: get: operationId: BackofficeController_getAllCrmOrgs parameters: - name: accountId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/CrmOrg' tags: - Backoffice /backoffice/accounts/{accountId}/orgs: get: operationId: BackofficeController_getAllOrgs parameters: - name: accountId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/orgs/{orgId}/fetch: post: operationId: BackofficeController_fetchAnyOrg parameters: - name: orgId required: true in: path schema: type: string - name: factoryReset required: true in: query schema: type: boolean responses: '201': description: '' tags: - Backoffice /backoffice/orgs/{orgId}/metadata-search: get: operationId: BackofficeController_searchOrgMetadata parameters: - name: orgId required: true in: path schema: type: string - name: searchTerm required: true in: query schema: type: string - name: metadataTypes required: true in: query schema: type: array items: type: string responses: '200': description: '' content: application/json: schema: type: array items: type: object tags: - Backoffice /backoffice/orgs/{orgId}: get: operationId: BackofficeController_getOrgById parameters: - name: orgId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: object tags: - Backoffice /backoffice/snowflake-orgs/{orgId}/query: post: operationId: BackofficeController_runSnowflakeQuery parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/crm-orgs/{crmOrgId}: get: operationId: BackofficeController_getCrmOrgById parameters: - name: crmOrgId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: object tags: - Backoffice /backoffice/crm_orgs/{crmOrgId}/salesforce-event-monitoring-log-export: post: operationId: BackofficeController_exportSalesforceEventMonitoringLogs parameters: - name: crmOrgId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SalesforceEventMonitoringLogExportDto' responses: '201': description: '' tags: - Backoffice /backoffice/crm-orgs/{crmOrgId}/tier: put: operationId: BackofficeController_updateCrmOrgTier parameters: - name: crmOrgId required: true in: path schema: type: string - name: tier required: true in: query schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/parse-all: post: operationId: BackofficeController_parseAllOrgs parameters: [] responses: '201': description: '' tags: - Backoffice /backoffice/housekeeping/purge-salto-workspaces: post: operationId: BackofficeController_archiveAllSaltoWorkspaces parameters: [] responses: '201': description: '' tags: - Backoffice /backoffice/recovery/init-missing-bare-repos: post: operationId: BackofficeController_recoverMissingBareRepos parameters: [] responses: '201': description: '' content: application/json: schema: type: object tags: - Backoffice /backoffice/ai-projects/backfill-origin-template-ids: post: operationId: BackofficeController_backfillPlaybookOriginTemplateIds parameters: [] responses: '201': description: '' content: application/json: schema: type: object tags: - Backoffice /backoffice/accounts/{accountId}/invite: post: operationId: BackofficeController_inviteUserToAccount parameters: - name: accountId required: true in: path schema: type: string - name: email required: true in: query schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/accounts/{accountId}/users: get: operationId: BackofficeController_getUsersByAccount parameters: - name: accountId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/accounts/{accountId}/roles: get: operationId: BackofficeController_getRoleGroupsForAccount parameters: - name: accountId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/users/{userId}/role: put: operationId: BackofficeController_updateUserRole parameters: - name: userId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/users/{userId}: delete: operationId: BackofficeController_removeUser parameters: - name: userId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/accounts/{accountId}/move-user: post: operationId: BackofficeController_moveUserToAccount parameters: - name: accountId required: true in: path schema: type: string - name: email required: true in: query schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/crm-orgs/{crmOrgId}/automations: get: operationId: BackofficeController_getAutomationsMetadata parameters: - name: crmOrgId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: array items: type: object tags: - Backoffice /backoffice/accounts/{accountId}/trial: put: operationId: BackofficeController_setTrialEnd parameters: - name: accountId required: true in: path schema: type: string - name: daysCount required: true in: query schema: type: number responses: '200': description: '' tags: - Backoffice /backoffice/accounts/{orgId}/named-credential: post: operationId: BackofficeController_createNamedCredential parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice delete: operationId: BackofficeController_deleteNamedCredential parameters: - name: orgId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/mp-version: post: operationId: BackofficeController_updateMPVersionFile parameters: [] responses: '201': description: '' summary: Update a file in s3 folder tags: - Backoffice /backoffice/cache: get: operationId: BackofficeController_getValueFromCache parameters: - name: key required: true in: query schema: type: string responses: '200': description: '' content: application/json: schema: type: object tags: - Backoffice delete: operationId: BackofficeController_deleteValueFromCache parameters: - name: key required: true in: query schema: type: string responses: '200': description: '' content: application/json: schema: type: object tags: - Backoffice /backoffice/crm_orgs/{orgId}/analyse/{objectName}: get: operationId: BackofficeController_createOrgAnalysisJob parameters: - name: orgId required: true in: path schema: type: string - name: objectName required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/crm_orgs/{orgId}/unused-apex-classes: get: operationId: BackofficeController_analyzeUnusedApexClasses parameters: - name: orgId required: true in: path schema: type: string - name: includeNonDefaultNamespaces required: true in: query schema: type: boolean responses: '200': description: '' tags: - Backoffice /backoffice/job-execution/failed: get: operationId: BackofficeController_getFailedJobExecutions parameters: [] responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/JobExecution' tags: - Backoffice /backoffice/auto-fetch/org/{orgId}: get: operationId: BackofficeController_getAutoFetchByOrgId parameters: - name: orgId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice put: operationId: BackofficeController_updateAutoFetchByOrgId parameters: - name: orgId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/crm_orgs/{orgId}/opt-monitoring: post: operationId: BackofficeController_changeOrgOptMonitoring parameters: - name: orgId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: type: boolean responses: '201': description: '' tags: - Backoffice /backoffice/lock/{lockKey}: get: operationId: BackofficeController_isLocked parameters: - name: lockKey required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: boolean tags: - Backoffice /backoffice/lock/{lockKey}/{ownerId}: delete: operationId: BackofficeController_releaseLock parameters: - name: lockKey required: true in: path schema: type: string - name: ownerId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: boolean tags: - Backoffice get: operationId: BackofficeController_getLock parameters: - name: lockKey required: true in: path schema: type: string - name: ownerId required: true in: path schema: type: string - name: expiresInMs required: true in: query schema: type: number - name: timeoutMs required: true in: query schema: type: number responses: '200': description: '' content: application/json: schema: type: boolean tags: - Backoffice /backoffice/product-plan/available-product-policies: get: operationId: BackofficeController_getAvailablePlan parameters: [] responses: '200': description: '' tags: - Backoffice /backoffice/product-plan/available-features: get: operationId: BackofficeController_getAvailableFeatures parameters: [] responses: '200': description: '' tags: - Backoffice /backoffice/product-plan/{accountId}: get: operationId: BackofficeController_getPlan parameters: - name: accountId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice patch: operationId: BackofficeController_updatePolicy parameters: - name: accountId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePlanDto' responses: '200': description: '' tags: - Backoffice /backoffice/product-plan/{accountId}/features: put: operationId: BackofficeController_updateFeaturesForSelectedFeatureProductPolicy parameters: - name: accountId required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateFeaturePlanDto' responses: '200': description: '' tags: - Backoffice get: operationId: BackofficeController_getAllowedFeaturePlanForAccount parameters: - name: accountId required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/dump-automations/{folderName}: get: operationId: BackofficeController_dumpAutomations parameters: - name: folderName required: true in: path schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/restart-python-agent: post: operationId: BackofficeController_restartPythonAgent parameters: [] responses: '201': description: '' tags: - Backoffice /backoffice/crm_orgs/{orgId}/ai-process-mining: post: operationId: BackofficeController_createAiProcessMiningFunnels parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/opensearch/reset-index/{orgId}: post: operationId: BackofficeController_reindexOpenSearch parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/opensearch/migrate-index/{orgId}: post: operationId: BackofficeController_migrateOpenSearchIndex parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/opensearch/purge-inactive-index/{orgId}: post: operationId: BackofficeController_purgeInactiveOpenSearchIndex parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/opensearch/search-by-content/{orgId}: post: operationId: BackofficeController_searchByContent parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' content: application/json: schema: type: array items: type: object tags: - Backoffice /backoffice/opensearch/search-by-filename/{orgId}: post: operationId: BackofficeController_searchByFilename parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/opensearch/raw-search/{orgId}: post: operationId: BackofficeController_rawSearch parameters: - name: orgId required: true in: path schema: type: string responses: '201': description: '' content: application/json: schema: type: object tags: - Backoffice /backoffice/opensearch/scope/{orgId}: get: operationId: BackofficeController_getOpenSearchScope parameters: - name: orgId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/OpenSearchScope' tags: - Backoffice put: operationId: BackofficeController_updateOpenSearchScope parameters: - name: orgId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/OpenSearchScope' tags: - Backoffice /backoffice/agent-files/{fileId}/generate-summary: post: operationId: BackofficeController_generateAgentFileSummary parameters: - name: fileId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/agent-files/regenerate-all-summaries: post: operationId: BackofficeController_regenerateAllAgentFileSummaries parameters: [] responses: '201': description: '' tags: - Backoffice /backoffice/accounts/{accountId}/copy-prompt-group/{promptGroupId}: post: operationId: BackofficeController_copyPromptGroupToAccounts parameters: - name: accountId required: true in: path schema: type: string - name: promptGroupId required: true in: path schema: type: string responses: '201': description: '' tags: - Backoffice /backoffice/agent-summaries: get: operationId: BackofficeController_getAgentSummaries parameters: - name: accountId required: true in: query schema: type: string - name: userEmail required: true in: query schema: type: string - name: agentName required: true in: query schema: type: string - name: mode required: true in: query schema: type: string - name: scoreMin required: true in: query schema: type: number - name: scoreMax required: true in: query schema: type: number - name: dateFrom required: true in: query schema: type: string - name: dateTo required: true in: query schema: type: string - name: searchTerm required: true in: query schema: type: string - name: limit required: true in: query schema: type: number - name: offset required: true in: query schema: type: number - name: sortBy required: true in: query schema: type: string - name: sortOrder required: true in: query schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/agent-summaries/stats: get: operationId: BackofficeController_getAgentSummariesStats parameters: - name: accountId required: true in: query schema: type: string - name: userEmail required: true in: query schema: type: string - name: agentName required: true in: query schema: type: string - name: mode required: true in: query schema: type: string - name: scoreMin required: true in: query schema: type: number - name: scoreMax required: true in: query schema: type: number - name: dateFrom required: true in: query schema: type: string - name: dateTo required: true in: query schema: type: string - name: searchTerm required: true in: query schema: type: string responses: '200': description: '' content: application/json: schema: type: object tags: - Backoffice /backoffice/agent-summaries/accounts: get: operationId: BackofficeController_getAccountGroupedSummaries parameters: - name: accountId required: true in: query schema: type: string - name: userEmail required: true in: query schema: type: string - name: agentName required: true in: query schema: type: string - name: mode required: true in: query schema: type: string - name: scoreMin required: true in: query schema: type: number - name: scoreMax required: true in: query schema: type: number - name: dateFrom required: true in: query schema: type: string - name: dateTo required: true in: query schema: type: string - name: searchTerm required: true in: query schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/agent-summaries/users: get: operationId: BackofficeController_getUserGroupedSummaries parameters: - name: accountId required: true in: query schema: type: string - name: userEmail required: true in: query schema: type: string - name: agentName required: true in: query schema: type: string - name: mode required: true in: query schema: type: string - name: scoreMin required: true in: query schema: type: number - name: scoreMax required: true in: query schema: type: number - name: dateFrom required: true in: query schema: type: string - name: dateTo required: true in: query schema: type: string - name: searchTerm required: true in: query schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/agent-summaries/agents: get: operationId: BackofficeController_getAgentGroupedSummaries parameters: - name: accountId required: true in: query schema: type: string - name: userEmail required: true in: query schema: type: string - name: agentName required: true in: query schema: type: string - name: mode required: true in: query schema: type: string - name: scoreMin required: true in: query schema: type: number - name: scoreMax required: true in: query schema: type: number - name: dateFrom required: true in: query schema: type: string - name: dateTo required: true in: query schema: type: string - name: searchTerm required: true in: query schema: type: string responses: '200': description: '' tags: - Backoffice /backoffice/agent-summaries/modes: get: operationId: BackofficeController_getModeGroupedSummaries parameters: - name: accountId required: true in: query schema: type: string - name: userEmail required: true in: query schema: type: string - name: agentN # --- truncated at 32 KB (48 KB total) --- # Full source: https://raw.githubusercontent.com/api-evangelist/sweep/refs/heads/main/openapi/sweep-backoffice-api-openapi.yml </code></pre> </div> <script src="/assets/prism/prism-core.min.js" defer></script> <script src="/assets/prism/prism-yaml.min.js" defer></script> <script src="/assets/prism/prism-json.min.js" defer></script> <script src="/assets/prism/prism-line-numbers.min.js" defer></script> <script src="/assets/prism/js-yaml.min.js" defer></script> <script> (function () { if (window.__srcWidgetInit) return; window.__srcWidgetInit = true; function initWidget(widget) { var codeEl = widget.querySelector('[data-src-code]'); var preEl = widget.querySelector('pre'); var search = widget.querySelector('[data-src-search]'); var toggles = widget.querySelectorAll('[data-src-toggle]'); var downloadBtn = widget.querySelector('[data-src-download]'); var copyBtn = widget.querySelector('[data-src-copy]'); var fileLabel = widget.querySelector('[data-src-filename]'); var picker = widget.querySelector('[data-src-picker]'); var rawLink = widget.querySelector('[data-src-raw]'); var headingEl = widget.previousElementSibling && widget.previousElementSibling.tagName === 'H3' ? widget.previousElementSibling : null; var fetchedCache = {}; // Original raw text — we always re-render from this so toggles + searches don't compound. var originalLang = widget.dataset.originalLang; var originalText = codeEl.textContent; var originalFilename = widget.dataset.originalFilename; var currentLang = originalLang; var currentText = originalText; var searchHits = []; var activeHit = -1; function highlight() { if (window.Prism) window.Prism.highlightElement(codeEl); } function setActiveToggle() { toggles.forEach(function (b) { if (b.dataset.target === currentLang) b.classList.add('active'); else b.classList.remove('active'); }); } function updateFilenameForLang() { if (!fileLabel) return; var base = (currentSourceFilename || originalFilename).replace(/\.(ya?ml|json)$/i, ''); fileLabel.textContent = base + '.' + currentLang; } var currentSourceFilename = originalFilename; var currentSourceUrl = null; if (rawLink) currentSourceUrl = rawLink.getAttribute('href'); function setLangContent(lang, text) { currentLang = lang; currentText = text; codeEl.textContent = text; codeEl.className = 'language-' + lang; preEl.className = 'line-numbers language-' + lang; highlight(); setActiveToggle(); updateFilenameForLang(); runSearch(); } function tryConvert(targetLang) { if (targetLang === currentLang) return; if (!window.jsyaml) return; try { var parsed; if (currentLang === 'yaml') parsed = window.jsyaml.load(currentText); else parsed = JSON.parse(currentText); var out; if (targetLang === 'yaml') { out = window.jsyaml.dump(parsed, { indent: 2, lineWidth: 100, noRefs: true }); } else { out = JSON.stringify(parsed, null, 2); } setLangContent(targetLang, out); } catch (err) { alert('Cannot convert: source is not valid ' + currentLang.toUpperCase() + '.\n' + err.message); } } // ---- Search highlighting (DOM walker over text nodes inside <code>) ---- function clearSearch() { widget.querySelectorAll('mark.src-hit').forEach(function (m) { var parent = m.parentNode; while (m.firstChild) parent.insertBefore(m.firstChild, m); parent.removeChild(m); parent.normalize(); }); searchHits = []; activeHit = -1; } function runSearch() { clearSearch(); var q = (search.value || '').trim(); if (q.length < 2) return; var qLower = q.toLowerCase(); var walker = document.createTreeWalker(codeEl, NodeFilter.SHOW_TEXT, null); var nodes = []; var n; while ((n = walker.nextNode())) nodes.push(n); nodes.forEach(function (node) { var text = node.nodeValue; var lower = text.toLowerCase(); var idx = lower.indexOf(qLower); if (idx === -1) return; var frag = document.createDocumentFragment(); var cursor = 0; while (idx !== -1) { if (idx > cursor) frag.appendChild(document.createTextNode(text.slice(cursor, idx))); var mark = document.createElement('mark'); mark.className = 'src-hit'; mark.textContent = text.slice(idx, idx + q.length); frag.appendChild(mark); searchHits.push(mark); cursor = idx + q.length; idx = lower.indexOf(qLower, cursor); } if (cursor < text.length) frag.appendChild(document.createTextNode(text.slice(cursor))); node.parentNode.replaceChild(frag, node); }); if (searchHits.length) jumpToHit(0); } function jumpToHit(i) { if (!searchHits.length) return; if (activeHit >= 0 && searchHits[activeHit]) searchHits[activeHit].classList.remove('src-hit-active'); activeHit = ((i % searchHits.length) + searchHits.length) % searchHits.length; var el = searchHits[activeHit]; el.classList.add('src-hit-active'); el.scrollIntoView({ block: 'center', behavior: 'smooth' }); } // ---- Wire up ---- var debounce; search.addEventListener('input', function () { clearTimeout(debounce); debounce = setTimeout(runSearch, 100); }); search.addEventListener('keydown', function (ev) { if (ev.key === 'Enter' || ev.key === 'n') { ev.preventDefault(); jumpToHit(activeHit + 1); } else if (ev.key === 'N' || (ev.key === 'p')) { ev.preventDefault(); jumpToHit(activeHit - 1); } else if (ev.key === 'Escape') { search.value = ''; runSearch(); } }); toggles.forEach(function (b) { b.addEventListener('click', function () { tryConvert(b.dataset.target); }); }); downloadBtn.addEventListener('click', function () { var blob = new Blob([codeEl.textContent], { type: currentLang === 'json' ? 'application/json' : 'application/yaml' }); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = fileLabel.textContent; document.body.appendChild(a); a.click(); document.body.removeChild(a); setTimeout(function () { URL.revokeObjectURL(url); }, 0); }); copyBtn.addEventListener('click', function () { navigator.clipboard.writeText(codeEl.textContent).then(function () { var orig = copyBtn.textContent; copyBtn.textContent = 'Copied'; copyBtn.classList.add('src-copied'); setTimeout(function () { copyBtn.textContent = orig; copyBtn.classList.remove('src-copied'); }, 1500); }); }); // ---- Picker (provider pages with multiple specs) ---- function applySource(text, lang, filename, url, heading) { currentSourceFilename = filename || originalFilename; currentSourceUrl = url || null; if (rawLink) { if (url) { rawLink.setAttribute('href', url); rawLink.style.display = ''; } else { rawLink.style.display = 'none'; } } if (headingEl && heading) headingEl.textContent = heading; setLangContent(lang, text); } if (picker) { picker.addEventListener('change', function () { var opt = picker.options[picker.selectedIndex]; var url = opt.dataset.url; var fmt = opt.dataset.format || 'yaml'; var fname = opt.dataset.filename || ''; var heading = opt.dataset.heading || ''; if (!url) { // Original embedded source applySource(originalText, originalLang, originalFilename, picker.options[0].dataset.url || null, picker.options[0].dataset.heading || ''); return; } if (fetchedCache[url]) { applySource(fetchedCache[url], fmt, fname, url, heading); return; } codeEl.textContent = 'Loading ' + fname + '…'; codeEl.className = ''; preEl.className = ''; fetch(url).then(function (r) { if (!r.ok) throw new Error('HTTP ' + r.status); return r.text(); }).then(function (text) { fetchedCache[url] = text; applySource(text, fmt, fname, url, heading); }).catch(function (err) { codeEl.textContent = 'Could not load: ' + err.message; }); }); // Stash the default option's url so we can restore "Raw" link when reset. if (rawLink && picker.options[0]) { picker.options[0].dataset.url = rawLink.getAttribute('href') || ''; picker.options[0].dataset.heading = (headingEl ? headingEl.textContent : '') || ''; } } // Auto-fetch when initial source is empty but a remote URL is available. // This happens when the build found an external OpenAPI URL but didn't // inline the content — the widget fetches it on page load instead. if (!originalText.trim() && currentSourceUrl) { var remoteUrl = currentSourceUrl; codeEl.textContent = 'Loading…'; codeEl.className = ''; preEl.className = 'line-numbers language-' + originalLang; fetch(remoteUrl) .then(function (r) { if (!r.ok) throw new Error('HTTP ' + r.status); return r.text(); }) .then(function (text) { var ext = remoteUrl.replace(/\?.*/, '').split('.').pop().toLowerCase(); var fmt = ext === 'json' ? 'json' : 'yaml'; originalText = text; originalLang = fmt; currentLang = fmt; widget.dataset.originalLang = fmt; applySource(text, fmt, originalFilename, remoteUrl, headingEl ? headingEl.textContent : ''); }) .catch(function (err) { codeEl.textContent = 'Could not load spec: ' + err.message; }); } // Initial state setActiveToggle(); // Wait for Prism to load before highlighting / line-numbers wiring. var tries = 0; var waitPrism = setInterval(function () { if (window.Prism && window.Prism.plugins) { clearInterval(waitPrism); highlight(); } else if (++tries > 80) { clearInterval(waitPrism); } }, 50); } function initAll() { document.querySelectorAll('[data-src-widget]').forEach(initWidget); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initAll); } else { initAll(); } })(); </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://apis.io/" }, { "@type": "ListItem", "position": 2, "name": "Sweep", "item": "https://apis.io/providers/sweep/" }, { "@type": "ListItem", "position": 3, "name": "Sweep Backoffice API" } ] } </script> </main> <footer class="footer"> <div class="container"><div class="footer-grid"><div class="footer-col"> <h6 class="footer-col-title">Catalog</h6> <ul class="footer-col-list"><li><a href="https://apis.io/providers/">Providers</a></li><li><a href="https://apis.io/apis/">APIs</a></li><li><a href="https://apis.io/tags/">Tags</a></li><li><a href="https://apis.io/industries/">Industries</a></li><li><a href="https://apis.io/areas/">Areas</a></li><li><a href="https://apis.io/regions/">Regions</a></li><li><a href="https://apis.io/countries/">Countries</a></li><li><a href="https://apis.io/vcs/">Venture Capital</a></li><li><a href="https://apis.io/secondary-market/">Secondary Market</a></li><li><a href="https://apis.io/estates/">API Estates</a></li><li><a href="https://apis.io/capabilities/">Business Capabilities</a></li></ul> </div><div class="footer-col"> <h6 class="footer-col-title">Artifacts</h6> <ul class="footer-col-list"><li><a href="https://apis.io/capabilities/">Business Capabilities</a></li><li><a href="https://apis.io/extensions/">OpenAPI Extensions</a></li><li><a href="https://apis.io/headers/">HTTP Headers</a></li><li><a href="https://apis.io/schemas/">Schemas</a></li><li><a href="https://apis.io/examples/">Examples</a></li><li><a href="https://apis.io/json-structure/">JSON Structure</a></li><li><a href="https://apis.io/collections/">Collections</a></li><li><a href="https://apis.io/arazzos/">Arazzo Workflows</a></li><li><a href="https://apis.io/servers/">MCP Servers</a></li><li><a href="https://apis.io/a2a/">A2A Agent Cards</a></li><li><a href="https://apis.io/ard/">Agent Discovery</a></li><li><a href="https://apis.io/agent-skills/">Agent Skills</a></li></ul> </div><div class="footer-col"> <h6 class="footer-col-title">Signals</h6> <ul class="footer-col-list"><li><a href="https://apis.io/rating/">Kin Score</a></li><li><a href="https://apis.io/security/">Security Posture</a></li><li><a href="https://apis.io/scopes/">OAuth Scopes</a></li><li><a href="https://apis.io/agentic-access/">Agentic Access</a></li><li><a href="https://apis.io/plans/">Plans</a></li><li><a href="https://apis.io/rate-limits/">Rate Limits</a></li><li><a href="https://apis.io/finops/">FinOps</a></li></ul> </div><div class="footer-col"> <h6 class="footer-col-title">Platform</h6> <ul class="footer-col-list"><li><a href="https://apis.io/developer/">Developer Docs</a></li><li><a href="https://apis.io/onboarding/">Onboarding</a></li><li><a href="https://apis.io/unlock/">Data Access</a></li><li><a href="https://apis.io/insights/">Insights</a></li><li><a href="https://apis.io/analytics/">Analytics</a></li><li><a href="https://apis.io/search-terms/">Search Terms</a></li><li><a href="https://apis.io/changelog/">Changelog</a></li></ul> </div><div class="footer-col"> <h6 class="footer-col-title">APIs.io</h6> <ul class="footer-col-list"><li><a href="https://apis.io/about/">About</a></li><li><a href="https://apis.io/blog/">Blog</a></li><li><a href="https://usecommune.com/n/apisio">Newsletter</a></li><li><a href="https://apis.io/add/">Add Your API</a></li><li><a href="https://apis.io/support/">Support</a></li><li><a href="https://github.com/api-search">GitHub</a></li></ul> </div></div><div class="footer-bar"> <span class="footer-copy">© APIs.io</span> <div class="footer-legal"><a href="http://apisjson.org">APIs.json</a><a href="http://apicommons.org">API Commons</a><a href="https://apievangelist.com">API Evangelist</a><a href="https://apis.io/terms/">Terms</a><a href="https://apis.io/privacy/">Privacy</a></div> </div> </div> </footer> <script src="/assets/js/kin-glyph.js"></script> </body> </html>