We love pull requests from everyone. By participating in this project, you agree to not be a jerk.
- Fork, then clone the repo:
git clone [email protected]:your-username/hubspot-php.git
- Set up your machine:
composer install
- Make your change. Add test for your changes. Make the tests pass, e.g.:
vendor/bin/phpunit tests/integration/Endpoints/TimelineTest
or you can run tests with docker:
- Copy
.env.template
to.env
- Specify data in
.env
(for most tests it is enough to specifyHUBSPOT_TEST_API_KEY
) docker-compose up --build
- Push to your fork and submit a pull request.
At this point you're waiting on us. We like to at least comment on pull requests within three business days (and, typically, one business day). We may suggest some changes or improvements or alternatives.
Some things that will increase the chance that your pull request is accepted:
- Write tests.
- Follow PSR-2 style guide.
- Write a good commit message.
This is actually pretty easy.
- Create a new Class in
src/Endpoints
that extendsEndpoint
. - Check existing classes for examples, it is pretty simple.
- Add a method for each endpoint with a name that matches the endpoint url.
- Make required parameters separate method arguments and optional parameters part of a
$params
array
Examples of a good endpoint method:
/**
* Create a contact property.
*
* Create a property on every contact object to store a specific piece of data. In the example below,
* we want to store an invoice number on a separate field on deals.
*
* @see http://developers.hubspot.com/docs/methods/contacts/v2/create_contacts_property
*
* @param array $property
* @return \SevenShores\Hubspot\Http\Response
*/
function create($property)
{
$endpoint = "https://api.hubapi.com/contacts/v2/properties";
$options['json'] = $property;
return $this->client->request('post', $endpoint, $options);
}
/**
* For a given portal, return all contacts that have been created in the portal.
*
* A paginated list of contacts will be returned to you, with a maximum of 100 contacts per page.
*
* Please Note: There are 2 fields here to pay close attention to: the "has-more" field that will let you know
* whether there are more contacts that you can pull from this portal, and the "vid-offset" field which will let
* you know where you are in the list of contacts. You can then use the "vid-offset" field in the "vidOffset"
* parameter described below.
*
* @see http://developers.hubspot.com/docs/methods/contacts/get_contacts
*
* @param array $params Array of optional parameters ['count', 'property', 'vidOffset']
* @return \SevenShores\Hubspot\Http\Response
*/
function all($params = [])
{
$endpoint = "https://api.hubapi.com/contacts/v1/lists/all/contacts/all";
$queryString = build_query_string($params);
return $this->client->request('get', $endpoint, [], $queryString);
}