Developer tools for programmatic access, webhook configuration, and third-party integration management
contractorApiTokens {
contractorId: v.id("contractorUsers"),
name: v.string(),
tokenHash: v.string(),
tokenPrefix: v.string(),
permissions: v.array(v.string()),
expiresAt: v.optional(v.number()),
ipWhitelist: v.optional(v.array(v.string())),
lastUsedAt: v.optional(v.number()),
isRevoked: v.boolean(),
createdAt: v.number()
}
contractorWebhooks {
contractorId: v.id("contractorUsers"),
endpointUrl: v.string(),
signingSecret: v.string(),
events: v.array(v.string()),
isActive: v.boolean(),
createdAt: v.number()
}
webhookDeliveryLog {
webhookId: v.id("contractorWebhooks"),
event: v.string(),
statusCode: v.number(),
responseTimeMs: v.number(),
deliveredAt: v.number()
}
contractorIntegrations {
contractorId: v.id("contractorUsers"),
provider: v.string(),
status: v.string(),
accessToken: v.string(),
refreshToken: v.optional(v.string()),
config: v.optional(v.any()),
lastSyncAt: v.optional(v.number()),
syncFrequencyMs: v.optional(v.number()),
connectedAt: v.number()
}
// Integration Hub
useConnectedIntegrations()
api.integrations.contractorIntegrations
.getConnectedIntegrations
useIntegrationDetail(id)
api.integrations.contractorIntegrations
.getIntegrationById
syncIntegration()
api.integrations.contractorIntegrations
.triggerSync
disconnectIntegration()
api.integrations.contractorIntegrations
.disconnect
// API Tokens
useApiTokens()
api.developer.tokens.list
createToken(args)
api.developer.tokens.create
Returns: { token, id, prefix }
revokeToken(tokenId)
api.developer.tokens.revoke
// Webhooks
useWebhookConfig()
api.developer.webhooks.getConfig
updateWebhook(args)
api.developer.webhooks.update
testWebhook(webhookId)
api.developer.webhooks.test
useWebhookDeliveries(webhookId)
api.developer.webhooks.deliveries
// API Usage
useApiUsageSummary(period)
api.developer.usage.getSummary
useApiTimeSeries(period)
api.developer.usage.getTimeSeries
useTopEndpoints(period)
api.developer.usage.topEndpoints