Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
cbaa327
Initiated main repo
harithmaduranga Jan 6, 2025
bd6bd47
9 tests done
harithmaduranga Jan 7, 2025
e66284a
[Automated] Update the toml files
harithmaduranga Jan 8, 2025
bce31ff
Mock service created.
harithmaduranga Jan 8, 2025
8bf42b1
[Automated] Update the toml files
harithmaduranga Jan 9, 2025
44a04ed
All tests and mock tests passed and are built successfully.
harithmaduranga Jan 9, 2025
f666fe0
[Automated] Update the toml files
harithmaduranga Jan 9, 2025
9b0afa5
[Automated] Update the toml files
harithmaduranga Jan 10, 2025
fc4f54d
Example completed.
harithmaduranga Jan 10, 2025
8eb156b
README.md, Package.md, Module.md image paths changed.
harithmaduranga Jan 10, 2025
39543ba
Example docs done
harithmaduranga Jan 10, 2025
905765e
All reviews corrected.
harithmaduranga Jan 10, 2025
1205d1f
Docs image url editing
harithmaduranga Jan 10, 2025
e508596
Docs editing
harithmaduranga Jan 10, 2025
0ddce46
Docs issues resolved.
harithmaduranga Jan 10, 2025
af806e0
Docs modified
harithmaduranga Jan 16, 2025
cf6df44
Unnecessary file removed.
harithmaduranga Jan 16, 2025
e42932f
File modified
harithmaduranga Jan 16, 2025
ba8b807
[Automated] Update the toml files
harithmaduranga Jan 16, 2025
ad4cbdf
All tests passing
harithmaduranga Jan 17, 2025
21e0dbd
Example issues resolved.
harithmaduranga Jan 17, 2025
1517ba9
Review on mock_test resolved.
harithmaduranga Jan 17, 2025
194064d
Unnecessary notes removed from md docs.
harithmaduranga Jan 17, 2025
26305d9
Batch input variable names modified in tests
harithmaduranga Jan 17, 2025
499ded3
Unnecessary comments removed in mock_test.
harithmaduranga Jan 17, 2025
ea4a95c
Some reviews resolved.
harithmaduranga Jan 17, 2025
b9ac251
Empty lines problems solved in sales_analytics/main.bal.
harithmaduranga Jan 17, 2025
b3a3cc4
Empty lines problem resolved.
harithmaduranga Jan 17, 2025
f219c95
Docs corrected.
harithmaduranga Jan 17, 2025
3dd6470
Live tests disabled running.
harithmaduranga Jan 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,8 @@ build

# Ignore Docker env file
docker.env

#Examples
examples/sales_analytics/target
examples/sales_analytics/generated
examples/sales_analytics/Config.toml
188 changes: 183 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,199 @@

## Overview

[//]: # (TODO: Add overview mentioning the purpose of the module, supported REST API versions, and other high-level details.)
[HubSpot](https://www.hubspot.com) is an AI-powered customer relationship management (CRM) platform.

The `ballerinax/hubspot.crm.commerce.quotes` package offers APIs to connect and interact with [HubSpot API for CRM Quotes](https://developers.hubspot.com/docs/reference/api/crm/commerce/quotes) endpoints, specifically based on [HubSpot CRM Quotes REST API](https://developers.hubspot.com/docs/reference/api).


## Setup guide

[//]: # (TODO: Add detailed steps to obtain credentials and configure the module.)
To use the HubSpot CRM Quotes connector, you must have access to the HubSpot API through a HubSpot developer account and a HubSpot App under it. Therefore you need to register for a developer account at HubSpot if you don't have one already.

### Step 1: Create/Login to a HubSpot Developer Account

If you have an account already, go to the [HubSpot developer portal](https://app.hubspot.com/)

If you don't have a HubSpot Developer Account you can sign up to a free account [here](https://developers.hubspot.com/get-started)

### Step 2 (Optional): Create a [Developer Test Account](https://developers.hubspot.com/beta-docs/getting-started/account-types#developer-test-accounts) under your account

Within app developer accounts, you can create developer test accounts to test apps and integrations without affecting any real HubSpot data.

>**Note:** These accounts are only for development and testing purposes. In production you should not use Developer Test Accounts.

1. Go to Test Account section from the left sidebar.

![Hubspot developer testacc1](https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes/blob/main/docs/setup/resources/create_developer_account_1.png)

2. Click Create developer test account.

![Hubspot developer testacc2](https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes/blob/main/docs/setup/resources/create_developer_account_2.png)

3. In the dialogue box, give a name to your test account and click create.

![Hubspot developer testacc3](https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes/blob/main/docs/setup/resources/create_developer_account_3.png)

### Step 3: Create a HubSpot App under your account.

1. In your developer account, navigate to the "Apps" section. Click on "Create App"

![Create account](https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes/blob/main/docs/setup/resources/create_app.png)

2. Provide the necessary details, including the app name and description.

### Step 4: Configure the Authentication Flow.

1. Move to the Auth Tab.

![Authentication 1](https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes/blob/main/docs/setup/resources/authentication_1.png)

2. In the Scopes section, add the following scopes for your app using the "Add new scope" button.

`crm.lists.read`
`crm.lists.write`
`cms.membership.access_groups.write`

![Authentication 2](https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes/blob/main/docs/setup/resources/authentication_2.png)

4. Add your Redirect URI in the relevant section. You can also use localhost addresses for local development purposes. Click Create App.

![Authentication 3](https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes/blob/main/docs/setup/resources/authentication_3.png)

### Step 5: Get your Client ID and Client Secret

- Navigate to the Auth section of your app. Make sure to save the provided Client ID and Client Secret.

![Client Id_& Client Secret](https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes/blob/main/docs/setup/resources/clientId_clientSecret.png)

### Step 6: Setup Authentication Flow

Before proceeding with the Quickstart, ensure you have obtained the Access Token using the following steps:

1. Create an authorization URL using the following format.

2. Paste it in the browser and select your developer test account to intall the app when prompted.

![Setup auth flow](https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes/blob/main/docs/setup/resources/setup_auth_flow.png)

3. A code will be displayed in the browser. Copy the code.

4. Run the following curl command. Replace the `<YOUR_CLIENT_ID>`, `<YOUR_REDIRECT_URI`> and `<YOUR_CLIENT_SECRET>` with your specific value. Use the code you received in the above step 3 as the `<CODE>`.

- Linux/macOS

```bash
curl --request POST \
--url https://api.hubapi.com/oauth/v1/token \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'grant_type=authorization_code&code=<CODE>&redirect_uri=<YOUR_REDIRECT_URI>&client_id=<YOUR_CLIENT_ID>&client_secret=<YOUR_CLIENT_SECRET>'
```

- Windows

```bash
curl --request POST ^
--url https://api.hubapi.com/oauth/v1/token ^
--header 'content-type: application/x-www-form-urlencoded' ^
--data 'grant_type=authorization_code&code=<CODE>&redirect_uri=<YOUR_REDIRECT_URI>&client_id=<YOUR_CLIENT_ID>&client_secret=<YOUR_CLIENT_SECRET>'
```

This command will return the access token necessary for API calls.

```json
{
"token_type": "bearer",
"refresh_token": "<Refresh Token>",
"access_token": "<Access Token>",
"expires_in": 1800
}
```

5. Store the access token securely for use in your application.

## Quickstart

[//]: # (TODO: Add a quickstart guide to demonstrate a basic functionality of the module, including sample code snippets.)
To use the `HubSpot CRM Quotes` connector in your Ballerina application, update the `.bal` file as follows:

### Step 1: Import the module

Import the `hubspot.crm.commerce.quotes` module and `oauth2` module.

```ballerina
import ballerina/oauth2;
import ballerinax/hubspot.crm.commerce.quotes as crmquotes;
```

### Step 2: Instantiate a new connector

1. Create a `Config.toml` file and, configure the obtained credentials in the above steps as follows:

```toml
clientId = <Client Id>
clientSecret = <Client Secret>
refreshToken = <Refresh Token>
```

2. Instantiate a `OAuth2RefreshTokenGrantConfig` with the obtained credentials and initialize the connector with it.

```ballerina
configurable string clientId = ?;
configurable string clientSecret = ?;
configurable string refreshToken = ?;

OAuth2RefreshTokenGrantConfig auth = {
clientId,
clientSecret,
refreshToken,
credentialBearer: oauth2:POST_BODY_BEARER
};

final crmlists:Client crmListClient = check new (config = {auth});

```

### Step 3: Invoke the connector operation

Now, utilize the available connector operations. A sample usecase is shown below.

#### Create a CRM List

```ballerina

OAuth2RefreshTokenGrantConfig auth = {
clientId,
clientSecret,
refreshToken,
credentialBearer: oauth2:POST_BODY_BEARER
};

public function main() returns error? {
final Client hubspotClient = check new (config = {auth});

// Define the payload for creating a quote
json payload = {
"name": "Test Quote",
"hs_expiration_date": "2025-12-31",
"hs_status": "DRAFT",
"hs_owner_id": "<owner-id>",
"hs_currency": "USD",
"hs_total_amount": 1500,
"hs_associated_deal_id": "<deal-id>"
};

// Send the request to create a quote
http:Response response = check hubspotClient->/crm/v3/objects/quotes.post(payload);

// Print the response
io:println("Response: ", response.getJsonPayload());
}
```

## Examples

The `HubSpot CRM Commerce Quotes` connector provides practical examples illustrating usage in various scenarios. Explore these [examples](https://github.com/module-ballerinax-hubspot.crm.commerce.quotes/tree/main/examples/), covering the following use cases:
The `HubSpot CRM Commerce Quotes` connector provides practical examples illustrating usage in various scenarios. Explore these [examples](https://github.com/module-ballerinax-hubspot.crm.commerce.quotes/examples/), covering the following use cases:

[//]: # (TODO: Add examples)
1. Sales Analytics System

## Build from the source

Expand Down
6 changes: 3 additions & 3 deletions ballerina/Ballerina.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ name = "hubspot.crm.commerce.quotes"
version = "1.0.0"
license = ["Apache-2.0"]
authors = ["Ballerina"]
keywords = []
# icon = "icon.png" # TODO: update icon.png
keywords = ["hubspot", "commerce", "quotes"]
icon = "icon.png"
repository = "https://github.com/ballerina-platform/module-ballerinax-hubspot.crm.commerce.quotes"

[build-options]
observabilityIncluded = true

[platform.java21]
[platform.java17]
graalvmCompatible = true
Loading
Loading