HubSpot API client
Project description
hubspot-api-python
Python HubSpot API v3 SDK(Client) files and sample apps
Sample Applications can be found in sample-apps folder
Documentation
See the API docs.
Installation
If you just want to use the package, run:
pip install --upgrade hubspot-api-client
Requirements
Make sure you have Python 3.5+ and pip installed.
Quickstart
Configuring HubSpot client
from hubspot import HubSpot
api_client = HubSpot()
# or with api_key
api_client = HubSpot(api_key='your_api_key')
# or with access_token
api_client = HubSpot()
api_client.access_token = 'your_access_token'
OAuth API
Obtain OAuth2 access token:
from hubspot.auth.oauth import ApiException
try:
tokens = api_client.auth.oauth.default_api.create_token(
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:
from hubspot.crm.contacts import SimplePublicObjectInput
from hubspot.crm.contacts.exceptions import ApiException
try:
simple_public_object_input = SimplePublicObjectInput(
properties={"email": "email@example.com"}
)
api_response = api_client.crm.contacts.basic_api.create(
simple_public_object_input=simple_public_object_input
)
except ApiException as e:
print("Exception when creating contact: %s\n" % e)
Get contact by id:
from hubspot.crm.contacts import ApiException
try:
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:
from hubspot.crm.objects import ApiException
try:
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 major objects and works like
all_contacts = api_client.crm.contacts.get_all()
Please note that pagination is used under the hood to get all results.
CMS API
Get audit logs:
from hubspot.cms.audit_logs import ApiException
try:
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:
from hubspot.utils.oauth import get_auth_url
auth_url = get_auth_url(
scopes=('contacts',),
client_id='client_id',
redirect_uri='http://localhost'
)
Validate HubSpot request signature
Example of usage from Webhooks Sample App:
import os
from flask import request
from hubspot.utils.webhooks import validate_signature
from hubspot.exceptions import InvalidSignatureError
try:
validate_signature(
signature=request.headers["X-HubSpot-Signature"],
signature_version=request.headers["X-HubSpot-Signature-Version"],
http_uri=request.base_url,
request_body=request.data.decode("utf-8"),
client_secret=os.getenv("HUBSPOT_CLIENT_SECRET"),
)
except InvalidSignatureError:
print("Request signature is not valid")
Retry middleware
You can pass an instance of urllib3.util.retry.Retry class to configure http client retries. With internal error retry middleware:
from hubspot import HubSpot
from urllib3.util.retry import Retry
retry = Retry(
total=3,
backoff_factor=0.3,
status_forcelist=(500, 502, 504),
)
api_client = HubSpot(retry=retry)
Or with rate limit retry middleware:
from hubspot import HubSpot
from urllib3.util.retry import Retry
retry = Retry(
total=5,
status_forcelist=(429,),
)
api_client = HubSpot(retry=retry)
Contributing
Install the package locally:
pip install -e .
Set up the development virtualenv:
make
Run tests:
make test
Run Black for code formatting:
make fmt
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for hubspot_api_client-3.7.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 654de9c3ac90d6ecdd997a442d6c9b71b8d383b18fcb01595edeb16579c52ca8 |
|
MD5 | 3ef940ff6497f8dcfb81494aede88e7e |
|
BLAKE2b-256 | 779d1f6afb5724a652698cc231a42f79c04f9d39e6591ff8fe12c4c3f21cee19 |