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.
"require": {
"thegenielab/brightpearl": "0.3.*"
}
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' => '',
),
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']);
$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']);
These are the api method calls generated by the service config files using GuzzleHttp/Guzzle-Services. For
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']);
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);
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']);
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);
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
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!