hubspot

package module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 2, 2022 License: MIT Imports: 11 Imported by: 0

README

GitHub release MIT license GoDoc Go Report Card

HubSpot API client SDK for Go

Install

go get github.com/leonelquinteros/hubspot

Quickstart


package main

import "github.com/leonelquinteros/hubspot"

func main() {
    // Create client object with config from environment variables (HUBSPOT_API_HOST, HUBSPOT_API_KEY, HUBSPOT_OAUTH_TOKEN)
    c := hubspot.NewClient(hubspot.NewClientConfig())

    // Create new contact
    data := hubspot.ContactsRequest{
		hubspot.Properties: []hubspot.Property{
			hubspot.Property{
				Property: "email",
				Value:    "[email protected]",
			},
			hubspot.Property{
				Property: "firstname",
				Value:    "Contact",
			},
			hubspot.Property{
				Property: "lastname",
				Value:    "Example",
			},
		},
    }
    r, err := c.Contacts().Create(data)
	if err != nil {
		log.Fatal(err)
	}

    // Get contact by email
    contact, err = c.Contacts().GetByEmail("[email protected]")
    if err != nil {
        log.Fatal(err)
    }

    // Print contact object
    fmt.Printf("%+v", contact)
}

Full documentation

https://godoc.org/github.com/leonelquinteros/hubspot

Documentation

Overview

Package hubspot is a SDK client library for HubSpot's API

Example usage:

package main

import "github.com/leonelquinteros/hubspot"

func main() {
	// Create client object with config from environment variables (HUBSPOT_API_HOST, HUBSPOT_API_KEY, HUBSPOT_OAUTH_TOKEN)
	c := hubspot.NewClient(hubspot.NewClientConfig())

	// Create new contact
	data := hubspot.ContactsRequest{
		hubspot.Properties: []hubspot.Property{
			hubspot.Property{
				Property: "email",
				Value:    "[email protected]",
			},
			hubspot.Property{
				Property: "firstname",
				Value:    "Contact",
			},
			hubspot.Property{
				Property: "lastname",
				Value:    "Example",
			},
		},
	}
	r, err := c.Contacts().Create(data)
	if err != nil {
		log.Fatal(err)
	}

	// Get contact by email
	contact, err = c.Contacts().GetByEmail("[email protected]")
	if err != nil {
		log.Fatal(err)
	}

	// Print contact object
	fmt.Printf("%+v", contact)
}

Configuration

Package can be configured using environment variables for default initialization. When calling

hubspot.NewClientConfig()

the configuration object will be populated with information from environment variables as follow:

HUBSPOT_API_HOST

The HubSpot's API endpoint host (including schema and host), defaults to "https://api.hubapi.com" when omitted.

HUBSPOT_API_KEY

HubSpot's API secret key used to authenticate further requests. It will be preferred if both auth methods (API key and OAuth token) are present.

HUBSPOT_OAUTH_TOKEN

If HUBSPOT_API_KEY isn't present, further requests will be authenticated using this token.

Manual/eventual configuration can be set by creating a configuration object directly and pass it to the NewClient() method:

hubspot.NewClient(hubspot.ClientConfig{
	APIHost: "https://api.hubspot.local"
	APIKey: "vroho487hfo48hfo48y3bai38gi2"
})

Index

Constants

View Source
const (
	// CRMAssociationContactToCompany ...
	CRMAssociationContactToCompany = 1
	// CRMAssociationCompanyToContact ...
	CRMAssociationCompanyToContact = 2
	// CRMAssociationDealToContact ...
	CRMAssociationDealToContact = 3
	// CRMAssociationContactToDeal ...
	CRMAssociationContactToDeal = 4
	// CRMAssociationDealToCompany ...
	CRMAssociationDealToCompany = 5
	// CRMAssociationCompanyToDeal ...
	CRMAssociationCompanyToDeal = 6
	// CRMAssociationCompanyToEngagement ...
	CRMAssociationCompanyToEngagement = 7
	// CRMAssociationEngagementToCompany ...
	CRMAssociationEngagementToCompany = 8
	// CRMAssociationContactToEngagement ...
	CRMAssociationContactToEngagement = 9
	// CRMAssociationEngagementToContact ...
	CRMAssociationEngagementToContact = 10
	// CRMAssociationDealToEngagement ...
	CRMAssociationDealToEngagement = 11
	// CRMAssociationEngagementToDeal ...
	CRMAssociationEngagementToDeal = 12
	// CRMAssociationParentCompanyToChildCompany ...
	CRMAssociationParentCompanyToChildCompany = 13
	// CRMAssociationChildCompanyToParentCompany ...
	CRMAssociationChildCompanyToParentCompany = 14
	// CRMAssociationContactToTicket ...
	CRMAssociationContactToTicket = 15
	// CRMAssociationTicketToContact ...
	CRMAssociationTicketToContact = 16
	// CRMAssociationTicketToEngagement ...
	CRMAssociationTicketToEngagement = 17
	// CRMAssociationEngagementToTicket ...
	CRMAssociationEngagementToTicket = 18
	// CRMAssociationDealToLineItem ...
	CRMAssociationDealToLineItem = 19
	// CRMAssociationLineItemToDeal ...
	CRMAssociationLineItemToDeal = 20
	// CRMAssociationCompanyToTicket ...
	CRMAssociationCompanyToTicket = 25
	// CRMAssociationTicketToCompany ...
	CRMAssociationTicketToCompany = 26
	// CRMAssociationDealToTicket ...
	CRMAssociationDealToTicket = 27
	// CRMAssociationTicketToDeal ...
	CRMAssociationTicketToDeal = 28
	// CRMAssociationAdvisorToCompany ...
	CRMAssociationAdvisorToCompany = 33
	// CRMAssociationCompanyToAdvisor ...
	CRMAssociationCompanyToAdvisor = 34
	// CRMAssociationBoardMemberToCompany ...
	CRMAssociationBoardMemberToCompany = 35
	// CRMAssociationCompanyToBoardMember ...
	CRMAssociationCompanyToBoardMember = 36
	// CRMAssociationContractorToCompany ...
	CRMAssociationContractorToCompany = 37
	// CRMAssociationCompanyToContractor ...
	CRMAssociationCompanyToContractor = 38
	// CRMAssociationManagerToCompany ...
	CRMAssociationManagerToCompany = 39
	// CRMAssociationCompanyToManager ...
	CRMAssociationCompanyToManager = 40
	// CRMAssociationBusinessOwnerToCompany ...
	CRMAssociationBusinessOwnerToCompany = 41
	// CRMAssociationCompanyToBusinessOwner ...
	CRMAssociationCompanyToBusinessOwner = 42
	// CRMAssociationPartnerToCompany ...
	CRMAssociationPartnerToCompany = 43
	// CRMAssociationCompanyToPartner ...
	CRMAssociationCompanyToPartner = 44
	// CRMAssociationResellerToCompany ...
	CRMAssociationResellerToCompany = 45
	// CRMAssociationCompanyToReseller ...
	CRMAssociationCompanyToReseller = 46
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AssociatedCompany

type AssociatedCompany struct {
	CompanyID  int        `json:"company-id"`
	PortalID   int        `json:"portal-id"`
	Properties []Property `json:"properties"`
}

AssociatedCompany object

type Association

type Association struct {
	FromObjectID    int    `json:"fromObjectId"`
	AssociationType string `json:"associationType"`
	ToObjectID      int    `json:"toObjectId"`
	Timestamp       int64  `json:"timestamp"`
}

Association object

type AssociationCreateFailure

type AssociationCreateFailure struct {
	Association Association `json:"association"`
	FailReason  string      `json:"failReason"`
	Message     string      `json:"message"`
}

AssociationCreateFailure object

type Associations

type Associations struct {
	AssociatedCompanyIds []int `json:"associatedCompanyIds,omitempty"`
	AssociatedVids       []int `json:"associatedVids,omitempty"`
	AssociatedDealIds    []int `json:"associatedDealIds,omitempty"`
}

Associations object

type CRMAssociations

type CRMAssociations struct {
	Client
}

CRMAssociations API client

func (CRMAssociations) Create

Create new CRM Association

func (CRMAssociations) Delete

Delete CRM Association

type CRMAssociationsRequest

type CRMAssociationsRequest struct {
	FromObjectID int    `json:"fromObjectId"`
	ToObjectID   int    `json:"toObjectId"`
	Category     string `json:"category"`
	DefinitionID int    `json:"definitionId"`
}

CRMAssociationsRequest object

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client object

func NewClient

func NewClient(config ClientConfig) Client

NewClient constructor

func (Client) CRMAssociations

func (c Client) CRMAssociations() CRMAssociations

CRMAssociations constructor (from Client)

func (Client) Companies

func (c Client) Companies() Companies

Companies constructor (from Client)

func (Client) Contacts

func (c Client) Contacts() Contacts

Contacts constructor (from Client)

func (Client) Deals

func (c Client) Deals() Deals

Deals constructor (from Client)

func (Client) Request

func (c Client) Request(method, endpoint string, data, response interface{}) error

Request executes any HubSpot API method using the current client configuration

type ClientConfig

type ClientConfig struct {
	APIHost     string
	APIKey      string
	OAuthToken  string
	HTTPTimeout time.Duration
	DialTimeout time.Duration
	TLSTimeout  time.Duration
}

ClientConfig object used for client creation

func NewClientConfig

func NewClientConfig() ClientConfig

NewClientConfig constructs a ClientConfig object with the environment variables set as default

type Companies

type Companies struct {
	Client
}

Companies client

func (Companies) Create

Create new Company

func (Companies) Delete

func (c Companies) Delete(companyID int) error

Delete Deal

func (Companies) Get

func (c Companies) Get(companyID int) (CompaniesResponse, error)

Get Company

func (Companies) Update

func (c Companies) Update(companyID int, data CompaniesRequest) (CompaniesResponse, error)

Update Deal

type CompaniesRequest

type CompaniesRequest struct {
	Properties []Property `json:"properties"`
}

CompaniesRequest object

type CompaniesResponse

type CompaniesResponse struct {
	ErrorResponse
	CompanyID  int               `json:"companyId"`
	PortalID   int               `json:"portalId"`
	Properties CompanyProperties `json:"properties"`
	IsDeleted  bool              `json:"isDeleted"`
}

CompaniesResponse object

type CompanyProperties

type CompanyProperties struct {
	CreateDate  ResponseProperty `json:"createdate"`
	Name        ResponseProperty `json:"name"`
	Description ResponseProperty `json:"description"`
}

CompanyProperties response object

type ContactProperty

type ContactProperty struct {
	Value    string `json:"value"`
	Versions []struct {
		Value       string      `json:"value"`
		Timestamp   int64       `json:"timestamp"`
		SourceType  string      `json:"source-type"`
		SourceID    interface{} `json:"source-id"`
		SourceLabel interface{} `json:"source-label"`
		Selected    bool        `json:"selected"`
	} `json:"versions"`
}

ContactProperty response object

type Contacts

type Contacts struct {
	Client
}

Contacts client

func (Contacts) Create

func (c Contacts) Create(data ContactsRequest) (ContactsResponse, error)

Create new Contact

func (Contacts) CreateOrUpdate

func (c Contacts) CreateOrUpdate(email string, data ContactsRequest) (CreateOrUpdateContactResponse, error)

CreateOrUpdate a Contact

func (Contacts) Delete

func (c Contacts) Delete(contactID int) error

Delete Deal

func (Contacts) Get

func (c Contacts) Get(contactID int) (ContactsResponse, error)

Get Contact

func (Contacts) GetByEmail

func (c Contacts) GetByEmail(email string) (ContactsResponse, error)

GetByEmail a Contact

func (Contacts) Update

func (c Contacts) Update(contactID int, data ContactsRequest) error

Update Contact

func (Contacts) UpdateByEmail

func (c Contacts) UpdateByEmail(email string, data ContactsRequest) error

UpdateByEmail a Contact

type ContactsRequest

type ContactsRequest struct {
	Properties []Property `json:"properties"`
}

ContactsRequest object

type ContactsResponse

type ContactsResponse struct {
	ErrorResponse
	PortalID         int                        `json:"portal-id"`
	Vid              int                        `json:"vid"`
	CanonicalVid     int                        `json:"canonical-vid"`
	MergeVids        []int                      `json:"merge-vids"`
	IsContact        bool                       `json:"is-contact"`
	ProfileToken     string                     `json:"profile-token"`
	ProfileURL       string                     `json:"profile-url"`
	IdentityProfiles []IdentityProfile          `json:"identity-profiles"`
	Properties       map[string]ContactProperty `json:"properties"`
	FormSubmissions  []interface{}              `json:"form-submissions"`
}

ContactsResponse object

type CreateOrUpdateContactResponse

type CreateOrUpdateContactResponse struct {
	ErrorResponse
	Vid   int  `json:"vid"`
	IsNew bool `json:"isNew"`
}

CreateOrUpdateContactResponse object

type DealProperties

type DealProperties struct {
	Amount         ResponseProperty `json:"amount"`
	Dealstage      ResponseProperty `json:"dealstage"`
	Pipeline       ResponseProperty `json:"pipeline"`
	Closedate      ResponseProperty `json:"closedate"`
	Createdate     ResponseProperty `json:"createdate"`
	HubspotOwnerID ResponseProperty `json:"hubspot_owner_id"`
	HsCreatedate   ResponseProperty `json:"hs_createdate"`
	Dealtype       ResponseProperty `json:"dealtype"`
	Dealname       ResponseProperty `json:"dealname"`
}

DealProperties object

type Deals

type Deals struct {
	Client
}

Deals client

func (Deals) Create

func (d Deals) Create(data DealsRequest) (DealsResponse, error)

Create new Deal

func (Deals) Delete

func (d Deals) Delete(dealID int) error

Delete Deal

func (Deals) Get

func (d Deals) Get(dealID int) (DealsResponse, error)

Get Deal

func (Deals) Update

func (d Deals) Update(dealID int, data DealsRequest) (DealsResponse, error)

Update Deal

type DealsRequest

type DealsRequest struct {
	Associations Associations `json:"associations,omitempty"`
	Properties   []Property   `json:"properties"`
}

DealsRequest object

type DealsResponse

type DealsResponse struct {
	ErrorResponse
	PortalID                  int                        `json:"portalId"`
	DealID                    int                        `json:"dealId"`
	IsDeleted                 bool                       `json:"isDeleted"`
	Associations              Associations               `json:"associations"`
	AssociationCreateFailures []AssociationCreateFailure `json:"associationCreateFailures"`
	Properties                DealProperties             `json:"properties"`
}

DealsResponse object

type DeleteContactResponse

type DeleteContactResponse struct {
	ErrorResponse
	Vid     int    `json:"vid"`
	Deleted bool   `json:"deleted"`
	Reason  string `json:"reason"`
}

DeleteContactResponse object

type ErrorResponse

type ErrorResponse struct {
	Status  string `json:"status,omitempty"`
	Message string `json:"message,omitempty"`
}

ErrorResponse object

type IdentityProfile

type IdentityProfile struct {
	Identities []struct {
		Timestamp int64  `json:"timestamp"`
		Type      string `json:"type"`
		Value     string `json:"value"`
	} `json:"identities"`
	Vid int `json:"vid"`
}

IdentityProfile response object

type Property

type Property struct {
	Name     string      `json:"name,omitempty"`
	Property string      `json:"property,omitempty"`
	Value    interface{} `json:"value"`
}

Property object is a general property definition. To handle inconsistencies in the API, it will take Name or Property to indicate the Property Name and a Value.

type ResponseProperty

type ResponseProperty struct {
	Name      string             `json:"name"`
	Value     string             `json:"value"`
	Timestamp int64              `json:"timestamp"`
	Source    string             `json:"source"`
	SourceID  string             `json:"sourceId"`
	SourceVid []int              `json:"sourceVid"`
	Versions  []ResponseProperty `json:"versions"`
}

ResponseProperty object is the format on which response objects format their property information.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL