The system is inspired by OAuth2.0, but technically it is not. This connection method should be used by every technical partner who wants to publish to our integration store.
Informally Wauth is needed not to force the user to copy and paste API keys, but to connect the integration, as they call it, “on the button”.
Target case from a CRM user who wants to connect Wazzup CRM X:
- The user finds CRM X inside the Wazzup integration store;
- User clicks “Connect CRM X”;
- User is redirected to CRM X;
- The user logs in to CRM X and confirms the intent to create the integration;
>>> integration between Wazzup and CRM X is connected
Preparatory steps
Technical partner developers:
- Register with Wazzup.
- Go to the “integrations” section.
- Create integration with API type
- Get API KEY -> can start debugging basic integration scenarios (all except WAuth)
- When it’s time to work on WAuth, call POST v3/marketplace to pass field values:
- crmCode — a string of Latin letters, numbers (you can use hyphens and underscores). Serves for internal CRM identification. Unique within Wazzup.
- authRedirectUri — the address of the page to which the client who set up the integration will be redirected to confirm authorization
- secret — the key (token), which is used to confirm the installation of integration. Participates only in the “server – server” requests, is never sent to the client
>>> You can start working with Wauth
Description of the WAuth process
- The user in the Wazzup LC clicks the “add” integration button.
At this moment:
- state is generated, in which crmCode and accountId are encoded (which the tech partner passed withPOST v3/marketplace)
- in the query string authRedirectUri, add the state and transfer the user to this link. (authRedirectUri tech.partner also passed via POST v3/marketplace)
- The client clicks on the link, performs the authorization process on the CRM side.
- If authorization is successful, CRM makes a POST v3/connect request (more about the request). To debug this point, you need to use POST /v3/wauth, which simulates the installation of customer integration.
- Upon receiving the request, Wazzup saves the crmKey, generates an apiKey and gives it in the body of the response if all is successful
- CRM loads information about users, deals, contacts, funnels with stages and sets URLs for webhooks
>>>> integration is successfully connected
Publishing in the Wazzup Integration Marketplace
In order to publish, you must:
- Implement integration scenarios
- Set up authorization with Wauth
- Set the CRM name and logo with PATCH v3/marketplace
- Write to Wazzup support asking them to publish the integration module. Wazzup technical support will forward the ticket to a reviewer who will verify that the integration works and meets requirements. If everything is OK, the integration will be published, otherwise the module will be returned to the developer for revision and he will receive a notification about it in the chat in which the request for publication was sent.
Connecting the integration hosted in the Marketplace via WAuth
If the user clicked “connect integration”, was successfully navigated to the given link and logged into the CRM, the CRM should make a request for
POST https://api.wazzup24.com/v3/connect/
The request body must contain JSON with the values of the following parameters:
Parameter | Type | Description |
state | String | generated and signed on the Wazzup side of the key, received by the integrator in the first stage of connecting CRM |
secret | String | the secret entered by the administrator of the marketplace CRM |
сrmKey | String | generated by the tech partner, which will come in the header { Authorization: “Bearer {wazzupKey}” } when you send webhooks |
name | String | name of integration |
curl --location --request POST 'https://api.wazzup24.com/v3/connect' \ --header 'Content-Type: application/json' \ --data-raw ' { "state": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2Vy....", "secret": "61e5a375-1760-452f-ad73-5318844ffc4f", "crmKey": "e0629e11-0f67-4567-92a9-2237e91ec1b9", "name": "Any integration name" } '
Response
200 ok
data — the key to use * in the Authorization: Bearer {apiKey} header when making requests to Wazzup
Loading Wauth parameters
To update crmCode, authRedirectUri, secret you need to call
POST https://api.wazzup24.com/v3/marketplace
The request body should contain JSON with the values of the following parameters:
Parameter | Type | Description |
crmCode | String | A string of Latin letters, numbers (you can use hyphens and underscores). Used for internal CRM identification. Unique within Wazzup. No more than 50 characters. |
authRedirectUri | String | The address of the page to which the user who sets up the integration will be redirected to confirm authorization. |
secret | String | The key (token) that is used to confirm the installation of the integration. Participates only in server-to-server queries. |
Request example
curl --location --request POST 'https://api.wazzup24.com/v3/marketplace' \ --header 'Authorization: Bearer 4a0с541451244aa9a281fba4716da40d' \ --header 'Content-Type: application/json' \ --data-raw '{ "crmCode": "BestCrmInTheWorld", "secret": "our-secret", "authRedirectUri": "http://redirect.uri" }'
Simulation of client integration installation (Wauth test)
To simulate the installation of the integration by the client, you need to call:
POST https://api.wazzup24.com/v3/wauth
The request body should contain JSON with the values of the following parameters:
Parameter | Type | Description |
type | String | crmCode specified by the integrator at the moment of POST /v3/marketplace call |
Uploading the integration name and logo
To change the logo and the public name of the integration module, you need to call:
PATCH https://api.wazzup24.com/v3/marketplace
The request body should contain JSON with the values of the following parameters:
Parameter | Type | Description |
crmName | String | The public name of CRM in English, which will be displayed in the Wazzup Personal Area |
logo | Object | Объект с данными логотипа:
— Transparent or white background — SVG format — No internal indentation in the logo — Company name on the logo in English |
logo.name | String | Logo file name |
logo.content | String | base64-encoded file with the logo |
Request example
curl --location --request PATCH 'https://api.wazzup24.com/v3/marketplace' \ --header 'Authorization: Bearer 4a0b541a61244aa9a281fba4816da48d' \ --header 'Content-Type: application/json' \ --data-raw '{ "crmName": "The Cool CRM", "logo": { "name": "the-cool-crm.svg", "content": "YmFzZTY0LWVuY29kZWQtbG9nby1maWxlLWNvbnRlbnQK" } }'