Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/HubSpot/hubspot-api-python
HubSpot API Python Client Libraries for V3 version of the API
https://github.com/HubSpot/hubspot-api-python
Last synced: 12 days ago
JSON representation
HubSpot API Python Client Libraries for V3 version of the API
- Host: GitHub
- URL: https://github.com/HubSpot/hubspot-api-python
- Owner: HubSpot
- License: apache-2.0
- Created: 2020-03-20T22:41:24.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-25T05:50:04.000Z (13 days ago)
- Last Synced: 2024-10-25T08:49:20.128Z (13 days ago)
- Language: Python
- Size: 4.23 MB
- Stars: 334
- Watchers: 16
- Forks: 106
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# hubspot-api-python
Python [HubSpot API](https://developers.hubspot.com/docs/api/overview) v3 SDK(Client) files and sample apps
Sample Applications can be found in [Sample apps](https://github.com/HubSpot/sample-apps-list)
## Documentation
See the [API docs](https://developers.hubspot.com/docs/api/overview).
## Installation
If you just want to use the package, run:
```bash
pip install --upgrade hubspot-api-client
```### Requirements
Make sure you have [Python 3.5+](https://docs.python.org/3/) and [pip](https://pypi.org/project/pip/) installed.
## Quickstart
### Configuring HubSpot client
```python
from hubspot import HubSpotapi_client = HubSpot(access_token='your_access_token')
# or set your access token later
api_client = HubSpot()
api_client.access_token = 'your_access_token'
```You'll need to create a [private app](https://developers.hubspot.com/docs/api/private-apps) to get your access token or you can obtain OAuth2 access token.
#### Hapikey support:
Please, note that hapikey is no longer supported after v5.1.0. You can get more info about hapikey sunset [here](https://developers.hubspot.com/changelog/upcoming-api-key-sunset). Also, plese, visit a [migration guide](https://developers.hubspot.com/docs/api/migrate-an-api-key-integration-to-a-private-app) if you need help with a migration process.
### OAuth API
#### Obtain OAuth2 access token:
```python
from hubspot.auth.oauth import ApiExceptiontry:
tokens = api_client.auth.oauth.tokens_api.create(
grant_type="authorization_code",
redirect_uri='http://localhost',
client_id='client_id',
client_secret='client_secret',
code='code'
)
except ApiException as e:
print("Exception when calling create_token method: %s\n" % e)
```### CRM API
#### Create contact:
```python
from hubspot.crm.contacts import SimplePublicObjectInputForCreate
from hubspot.crm.contacts.exceptions import ApiExceptiontry:
simple_public_object_input_for_create = SimplePublicObjectInputForCreate(
properties={"email": "[email protected]"}
)
api_response = api_client.crm.contacts.basic_api.create(
simple_public_object_input_for_create=simple_public_object_input_for_create
)
except ApiException as e:
print("Exception when creating contact: %s\n" % e)
```#### Get contact by id:
```python
from hubspot.crm.contacts import ApiExceptiontry:
contact_fetched = api_client.crm.contacts.basic_api.get_by_id('contact_id')
except ApiException as e:
print("Exception when requesting contact by id: %s\n" % e)
```#### Get custom objects page:
```python
from hubspot.crm.objects import ApiExceptiontry:
my_custom_objects_page = api_client.crm.objects.basic_api.get_page(object_type="my_custom_object_type")
except ApiException as e:
print("Exception when requesting custom objects: %s\n" % e)
```#### Get all:
`get_all` method is available for all objects (Companies, Contacts, Deals and etc).
```python
all_contacts = api_client.crm.contacts.get_all()
```Please note that pagination is used under the hood to get all results.
## Search:
`do_search` method is available for all objects (Companies, Contacts, Deals and etc).
### Example Search by date:
```python
import hubspotfrom dateutil import parser
from pprint import pprint
from hubspot.crm.contacts import PublicObjectSearchRequest, ApiExceptionapi_client = hubspot.Client.create(access_token="YOUR_ACCESS_TOKEN")
# timestamp in milliseconds
date = str(int(parser.isoparse("XXXX-XX-XXTXX:XX:XX.XXXZ").timestamp() * 1000))
public_object_search_request = PublicObjectSearchRequest(
filter_groups=[
{
"filters": [
{
"value": date,
"propertyName": "lastmodifieddate",
"operator": "EQ"
}
]
}
], limit=10
)
try:
api_response = api_client.crm.contacts.search_api.do_search(public_object_search_request=public_object_search_request)
pprint(api_response)
except ApiException as e:
print("Exception when calling search_api->do_search: %s\n" % e)```
### CMS API
#### Get audit logs:
```python
from hubspot.cms.audit_logs import ApiExceptiontry:
audit_logs_page = api_client.cms.audit_logs.default_api.get_page()
except ApiException as e:
print("Exception when calling cards_api->create: %s\n" % e)
```### Using utils
#### Get OAuth url:
```python
from hubspot.utils.oauth import get_auth_urlauth_url = get_auth_url(
scope=('contacts',),
client_id='client_id',
redirect_uri='http://localhost'
)
```#### Validate HubSpot request signature
[Example](./sample-apps/webhooks-app/src/routes/webhooks.py) of usage from [Webhooks Sample App](./sample-apps/webhooks-app):
```python
import osfrom datetime import datetime
from flask import request
from hubspot.utils.signature import SignatureSignature.is_valid(
signature=request.headers["X-HubSpot-Signature"],
client_secret=os.getenv("HUBSPOT_CLIENT_SECRET"),
request_body=request.data.decode("utf-8"),
http_uri=request.base_url,
signature_version=request.headers["X-HubSpot-Signature-Version"],
timestamp=datetime.now().timestamp()
)
```### Retry middleware
You can pass an instance of [urllib3.util.retry.Retry](https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html) class to configure http client retries.
With internal error retry middleware:```python
from hubspot import HubSpot
from urllib3.util.retry import Retryretry = Retry(
total=3,
backoff_factor=0.3,
status_forcelist=(500, 502, 504),
)
api_client = HubSpot(retry=retry)
```
Or with rate limit retry middleware:```python
from hubspot import HubSpot
from urllib3.util.retry import Retryretry = Retry(
total=5,
status_forcelist=(429,),
)
api_client = HubSpot(retry=retry)
```### Convert response object to dict
`to_dict` method is available for most response objects
```python
contacts = api_client.crm.contacts.basic_api.get_page()
for contact in contacts:
print(contact.to_dict())
```## Sample Apps
Please, take a look at our [Sample apps](https://github.com/HubSpot/sample-apps-list)
## Contributing
Install the package locally:
```
pip install -e .
```Set up the development virtualenv:
```
make
```Run tests:
```
make test
```Run [Black](https://github.com/psf/black) for code formatting:
```
make fmt
```