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:
Set up the development virtualenv:
Run tests:
Run Black for code formatting: