API reference
Everything the console does goes through the CoSell HTTP API, and your own tools can call it too.
#Base URL and authentication
- Base URL:
https://api.cosell.habilelabs.io/api/v1
- Authentication:
Authorization: Bearer <ID token> from a CoSell user (Amazon Cognito). Calls run with that user's
role in the workspace.
- Bodies are JSON. Errors come back as
{ "error": "…", "details": [...] } with a meaningful status code:
- 400: the request was malformed
- 403: not allowed, or AWS refused the action
- 404: not found
- 409: a business rule was broken
- 422: validation failed
- Lists are paged with
limit and cursor. The response carries the next cursor when there is more.
All workspace paths below start with /tenants/{tenantId}.
#Workspace
| Method and path |
Purpose |
GET /me |
The caller and their workspaces |
GET /tenants/{tenantId} |
Workspace settings and plan |
PATCH /tenants/{tenantId}/settings |
Update preferences ({ "name", "settings": { … } }) |
GET /tenants/{tenantId}/dashboard |
Counts by status, invitations, errors, Zoho budget |
GET, POST /tenants/{tenantId}/members |
List or invite members ({ "email", "roles" }) |
DELETE /tenants/{tenantId}/members/{userId} |
Remove a member |
#Connections
| Method and path |
Purpose |
GET /tenants/{tenantId}/connections/zoho |
Zoho connection state, redirect and webhook URLs |
POST /tenants/{tenantId}/connections/zoho/authorize |
Start the Zoho consent flow |
POST /tenants/{tenantId}/connections/zoho/activate |
Re-run activation (fields, channel, currency) |
GET /tenants/{tenantId}/connections/zoho/fields |
Deal fields usable in filters and routing rules |
GET /tenants/{tenantId}/onboarding-template |
The CloudFormation template for your AWS account |
GET, POST /tenants/{tenantId}/aws-links |
List or link AWS accounts |
POST /tenants/{tenantId}/aws-links/{linkId}/verify |
Check the link again |
POST /tenants/{tenantId}/aws-links/{linkId}/default |
Make the link the default |
#Mapping
| Method and path |
Purpose |
GET, PUT /tenants/{tenantId}/mapping |
Read or save the mapping (a new version per save) |
GET /tenants/{tenantId}/mapping/check |
Is a deal at the gate ready to submit, and why not |
POST /tenants/{tenantId}/mapping/deal-filter/preview |
Try a deal filter on recent deals |
#Opportunities and referrals
| Method and path |
Purpose |
GET /tenants/{tenantId}/opportunities |
Tracked deals and their ACE opportunities |
GET /tenants/{tenantId}/opportunities/{crmRecordId} |
One deal with its sync history |
POST /tenants/{tenantId}/opportunities/{crmRecordId}/actions |
{ "action": "sync" | "submit" | "refresh" | "retry" } |
GET, POST /tenants/{tenantId}/opportunities/{crmRecordId}/assistant |
Ask Partner Central ({ "question" }) and read the answers |
GET /tenants/{tenantId}/aws-import/preview?scope=live |
Opportunities that can be imported into Zoho |
POST /tenants/{tenantId}/aws-import |
Import them ({ "opportunityIds", "awsLinkId" }) |
GET /tenants/{tenantId}/invitations?status=pending |
AWS referrals |
POST /tenants/{tenantId}/invitations/{invitationId}/decision |
{ "decision": "accept" | "reject", "reason", "awsLinkId" } |
POST /tenants/{tenantId}/invitations/{invitationId}/import |
Finish the import of an accepted referral now |
POST /tenants/{tenantId}/invitations/refresh |
Check AWS for invitations CoSell missed |
#Errors, notifications and audit
| Method and path |
Purpose |
GET /tenants/{tenantId}/errors?resolution=open |
Sync errors |
POST /tenants/{tenantId}/errors/actions |
{ "errorId", "action": "retry" | "resolve" } |
GET /tenants/{tenantId}/notifications |
Notifications |
GET /tenants/{tenantId}/audit |
The audit log |
#Endpoints without a user
| Method and path |
Purpose |
POST https://api.cosell.habilelabs.io/webhooks/zoho/{tenantId} |
Zoho workflow webhook; send the webhook token in x-cosell-token |
POST https://api.cosell.habilelabs.io/marketplace/register |
AWS Marketplace fulfillment URL |
GET https://api.cosell.habilelabs.io/health |
Service health |