thegenielab / brightpearl
Brightpearl API PHP Guzzle Wrapper
Requires
- php: >=5.4
- guzzlehttp/guzzle: ~5.0
- guzzlehttp/guzzle-services: ~0.4
Requires (Dev)
- phpunit/phpunit: ~4.2
This package is not auto-updated.
Last update: 2017-06-19 08:39:40 UTC
README
This wrapper uses arrays for the same json requests as you would send to the Brightpearl API. Please refer to the Brightpearl API docs for extra/optional field info.
This library package is brought to you by TheGenieLab.
Installation
Composer
"require": { "thegenielab/brightpearl": "0.3.*" }
Laravel (optional)
Service Provider (config/app.php)
'Brightpearl\Laravel\ServiceProvider'
Facade (config/app.php)
'Brightpearl' => 'Brightpearl\Laravel\Facade'
Services (config/services.php) - global package settings (not required - can be overrided by you later, use this for defaults)
'brightpearl' => array( 'dev_reference' => 'sahara', 'dev_secret' => 'fcVGPrRapgRyT83CJb9kg8wBpgIV7tdKikdKA/7SmvY=', 'app_reference' => 'parcelforce', 'account_code' => '', 'account_token' => '', 'api_domain' => '', 'staff_token' => '', ),
Usage
Basic (any php app)
use \Brightpearl\Client; $client = new Client([ 'dev_reference' => 'sahara', 'dev_secret' => 'fcVGPrRapgRyT83CJb9kg8wBpgIV7tdKikdKA/7SmvY=', 'app_reference' => 'parcelforce', 'account_code' => 'topfurniture', 'account_token' => 'c72a9373-86f5-4138-a41f-c26cd9abfe4e', 'api_domain' => 'eu1', ]); // example call $response = $client->getOrder(['id' => '1']);
Laravel
$client = Brightpearl::settings([ 'account_code' => 'topfurniture', 'account_token' => 'c72a9373-86f5-4138-a41f-c26cd9abfe4e', 'api_domain' => 'eu1', ]); // example call $response = $client->getOrder(['id' => '1']); // or even just $response = Brightpearl::getOrder(['id' => '1']);
Services
These are the api method calls generated by the service config files using GuzzleHttp/Guzzle-Services. For
Accounting
getAccountingTaxCode()
- Retrieve accounting tax code(s)
// All tax codes on account $allTaxCodes = $client->getAccountingTaxCode(); // Tax code by id $taxCode = $client->getAccountingTaxCode(['id' => '1']); // Tax code by idset $taxCodes = $client->getAccountingTaxCode(['id' => '1-3,4,5']);
Contact
getContact()
- Retrieve contact info
// get a specific contact by id $contact = $client->getContact(['id' => '1']);
getContactAddress()
- Retrieve contact address
// get a specific contact address by id $contactAddress = $client->getContactAddress(['id' => '1']);
postContactAddress()
- Create new contact Address
/** * Required fields: * addressLine1, postalCode * * Required option field: * countryIsoCode or countryId * * Optional fields: * addressLine2, addressLine3, addressLine4 */ $address = [ "addressLine1" => "100 Something St", "postalCode" => "33000", "countryIsoCode" => "USA", ]; $addressId = $client->postContactAddress($address);
postContact()
- Create new contact (requires contact address)
/** * Required fields: * firstName, lastName, postAddressIds * * Optional fields: * salutation, communication, contactStatus * relationshipToAccount, organisation * marketingDetails, financialDetails * assignment */ $contact = [ "firstName" => "Jane", "lastName" => "Smith", "postAddressIds" => [ "DEF" => $addressId, "BIL" => $addressId, "DEL" => $addressId, ], ]; $contactId = $client->postContact($contact);
Integration
getWebhook()
- Retrieve accounting tax code(s)
// All web hooks $allWebhooks = $client->getWebhook(); // Web hook by id $webhook = $client->getWebhook(['id' => '1']); // Web hooks by idset $webhooks = $client->getWebhook(['id' => '1-3,4,5']);
postWebhook()
- Create new webhook (requires contact address)
/** * Required fields: * subscribeTo, httpMethod, uriTemplate * bodyTemplate, contentType, idSetAccepted */ $webhook = [ "subscribeTo" => "Product", "httpMethod" => "POST", "uriTemplate" => "http://www.example.com/callback", "bodyTemplate" => '{\n \"accountCode\": \"${account-code}\",\n \"resourceType\": \"${resource-type}\",\n \"id\": \"${resource-id}\",\n \"lifecycle-event\": \"${lifecycle-event}\"\n\n}', "contentType" => "application/json", "idSetAccepted" => false ]; $webhookId = $client->postWebhook($contact);
deleteWebhook()
- Delete an existing webhook
/* delete a specific webhook by id (empty json with status 200 is good) */ $response = $client->deleteWebhook(['id' => '1']);
Order
getOrder()
- Retrieve order(s)
// Tax code by id $order = $client->getOrder(['id' => '1']); // Tax code by idset $orders = $client->getOrder(['id' => '1-3,4,5']);
postOrder()
- Create new order
/** * Required fields: * orderTypeCode, parties * * Optional fields: * reference, priceListId, placedOn * orderStatus, delivery, invoices * currency, assignment, warehouseId */ $order = [ "orderTypeCode" => "SO", "parties" => [ "customer" => [ "contactId" => 204 ] ] ]; $orderId = $client->postOrder($order);
postOrderRow()
- Create new order row
/** * Required fields: * orderId, magnitude, taxCode, * rowNet, rowTax * * Required option field: * productId or productName * * Optional fields: * nominalCode */ $row = [ "orderId" => 45, "productId" => 123, // or productName for free text row "quantity" => [ "magnitude" => 3 ], "rowValue" => [ "taxCode" => "T20", "rowNet" => [ "value" => 12.21 ], "rowTax" => [ "value" => 2.44 ] ] ]; $rowId = $this->brightpearl()->postOrderRow($row);
Resources
This API wrapper uses resource definitions to map uris, parameters, headers and other API elements for these method calls. Coverage within the resources might not always be reflected in this documentation so please feel free to refer to them as an additional resource, they are located within src/resources
Contributing
Currently API coverage only represents a portion of the Brightpearl API. If you want to contribute send bug fixes, additional resource services and features in a pull request at the develop branch. Thanks!