providers/claude/plugin/skills/apideck-connector-coverage/SKILL.md
Check Apideck connector API coverage before building integrations. Use when determining which operations a connector supports, comparing connector capabilities, or diagnosing why an API call fails with a specific connector. Teaches agents to query the Connector API for real-time coverage data.
npx skillsauth add apideck-libraries/api-skills apideck-connector-coverageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Not all Apideck connectors support all operations. Before building an integration, always check connector coverage to avoid runtime errors. The Connector API provides real-time metadata about which operations each connector supports.
501 Not Implemented or UnsupportedOperationError, check coverage first.import { Apideck } from "@apideck/unify";
const apideck = new Apideck({
apiKey: process.env["APIDECK_API_KEY"] ?? "",
appId: "your-app-id",
consumerId: "your-consumer-id",
});
// List all connectors for an API
const { data } = await apideck.connector.connectorResources.get({
id: "crm",
resourceId: "contacts",
});
// Returns coverage per connector: which operations are supported
// Get specific connector details
const { data: connector } = await apideck.connector.connectors.get({
id: "salesforce",
});
// Returns: name, status, auth_type, supported_resources, supported_events
# List connectors for a unified API
curl 'https://unify.apideck.com/connector/connectors?filter[unified_api]=crm' \
-H 'Authorization: Bearer {API_KEY}' \
-H 'x-apideck-app-id: {APP_ID}'
# Get connector details including supported resources
curl 'https://unify.apideck.com/connector/connectors/salesforce' \
-H 'Authorization: Bearer {API_KEY}' \
-H 'x-apideck-app-id: {APP_ID}'
# Get API resource coverage (which connectors support what)
curl 'https://unify.apideck.com/connector/apis/crm/resources/contacts' \
-H 'Authorization: Bearer {API_KEY}' \
-H 'x-apideck-app-id: {APP_ID}'
Check which connections a consumer has and their state:
const { data } = await apideck.vault.connections.list({
api: "crm",
});
for (const conn of data) {
console.log(`${conn.serviceId}: ${conn.state} (enabled: ${conn.enabled})`);
// state: available | callable | added | authorized | invalid
}
Each operation on a connector has a coverage status:
| Status | Meaning |
|--------|---------|
| supported | Fully implemented and tested |
| beta | Implemented but may have edge cases |
| not_supported | Not available for this connector |
| Operation | QuickBooks | Xero | NetSuite | Sage Intacct | FreshBooks | |-----------|-----------|------|----------|--------------|------------| | Invoices CRUD | Full | Full | Full | Full | Full | | Bills CRUD | Full | Full | Full | Full | Partial | | Payments | Full | Full | Full | Full | Full | | Journal Entries | Full | Full | Full | Full | Limited | | Balance Sheet | Full | Full | Full | Full | No | | Tax Rates (read) | Full | Full | Full | Full | Full |
| Operation | Salesforce | HubSpot | Pipedrive | Zoho CRM | Close | |-----------|-----------|---------|-----------|----------|-------| | Contacts CRUD | Full | Full | Full | Full | Full | | Companies CRUD | Full | Full | Full | Full | Full | | Leads CRUD | Full | Full | Full | Full | Full | | Opportunities | Full | Full | Full | Full | Full | | Activities | Full | Full | Full | Full | Partial | | Pipelines (read) | Full | Full | Full | Full | Full |
| Operation | BambooHR | Workday | Personio | Gusto | Rippling | |-----------|---------|---------|----------|-------|----------| | Employees CRUD | Full | Full | Full | Full | Full | | Departments | Full | Full | Full | Full | Full | | Payrolls (read) | Full | Partial | Partial | Full | Full | | Time-Off | Full | Full | Full | Full | Full |
These tables are approximate. Always verify with the Connector API for real-time accuracy.
When an operation isn't supported for a connector:
Make direct calls to the downstream API through Apideck's proxy:
// Direct pass-through to the downstream API
const response = await fetch("https://unify.apideck.com/proxy", {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"x-apideck-app-id": appId,
"x-apideck-consumer-id": consumerId,
"x-apideck-service-id": "salesforce",
"x-apideck-downstream-url": "https://api.salesforce.com/services/data/v59.0/sobjects/CustomObject__c",
"x-apideck-downstream-method": "GET",
"Content-Type": "application/json",
},
});
Some connectors map the same data to different unified resources. For example, a "deal" in Pipedrive maps to "opportunities" in the unified CRM API.
If the user's chosen connector doesn't support an operation, suggest alternatives that do. Use the Connector API to find connectors that support the specific operation.
If a critical operation is missing, users can request it at https://github.com/apideck-libraries or through the Apideck dashboard.
| Auth Type | Description | Connectors |
|-----------|-------------|------------|
| oauth2 | OAuth 2.0 flow (managed by Vault) | Most cloud SaaS (Salesforce, HubSpot, QuickBooks Online, etc.) |
| apiKey | API key authentication | Some self-hosted or simpler services |
| basic | Username/password | Legacy systems, on-premise |
| custom | Connector-specific auth | Varies |
Vault handles all OAuth flows. Users authorize via the Vault modal — you never need to implement OAuth yourself.
When an API call fails:
UnsupportedOperationError or 501 means the operation isn't implementedvault.connections.list() to check the connection is authorizednullraw=true to see the downstream response for debuggingdevelopment
Jira Teams via Apideck's Proxy API + managed Vault auth — Apideck handles auth and proxies HTTP calls to Jira Teams's native API. Use when the user wants to call Jira Teams (no unified API resource mapping). Routes through Apideck with serviceId "jira-teams".
development
Jira Service Desk via Apideck's Proxy API + managed Vault auth — Apideck handles auth and proxies HTTP calls to Jira Service Desk's native API. Use when the user wants to call Jira Service Desk (no unified API resource mapping). Routes through Apideck with serviceId "jira-service-desk".
development
Jira Data Center via Apideck's Proxy API + managed Vault auth — Apideck handles auth and proxies HTTP calls to Jira Data Center's native API. Use when the user wants to call Jira Data Center (no unified API resource mapping). Routes through Apideck with serviceId "jira-data-center".
development
JetBrains YouTrack via Apideck's Proxy API + managed Vault auth — Apideck handles auth and proxies HTTP calls to JetBrains YouTrack's native API. Use when the user wants to call JetBrains YouTrack (no unified API resource mapping). Routes through Apideck with serviceId "jetbrains-youtrack".