2017 © Pedro Peláez
 

library forrest

Salesforce / Force.com REST API Client for Laravel 5

image

michakpl/forrest

Salesforce / Force.com REST API Client for Laravel 5

  • Thursday, July 19, 2018
  • by michak
  • Repository
  • 1 Watchers
  • 0 Stars
  • 12 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 48 Forks
  • 0 Open issues
  • 57 Versions
  • 50 % Grown

The README.md

Salesforce REST API Client for Laravel 5

Laravel Latest Stable Version Total Downloads License Build Status, (*1)

Salesforce/Force.com REST API client for Laravel. While it acts as more of a wrapper of the API methods, it should provide you with all the flexibility you will need to interact with the REST service., (*2)

While this package is built for Laravel, it has been decoupled so that it can be extended into any framework or vanilla PHP application. Currently the only support is for Larevel 4, 5 and Lumen., (*3)

Installation

If you are upgrading to Version 2.0, be sure to re-publish your config file., (*4)

Forrest can be installed through composer. Open your composer.json file and add the following to the require key:, (*5)

"omniphx/forrest": "2.*"

Next run composer update from the command line to install the package., (*6)

Laravel Installation

Add the service provider and alias to your config/app.php file:, (*7)

Omniphx\Forrest\Providers\Laravel\ForrestServiceProvider::class
'Forrest' => Omniphx\Forrest\Providers\Laravel\Facades\Forrest::class

For Laravel 4, add Omniphx\Forrest\Providers\Laravel4\ForrestServiceProvider in app/config/app.php. Alias will remain the same., (*8)

Lumen Installation

class_alias('Omniphx\Forrest\Providers\Laravel\Facades\Forrest', 'Forrest');
$app->register(Omniphx\Forrest\Providers\Lumen\ForrestServiceProvider::class);
$app->configure('forrest');
$app->withFacades();

Then you'll utilize the Lumen service provider by registering it in the bootstrap/app.php file., (*9)

Configuration

You will need a configuration file to add your credentials. Publish a config file using the artisan command:, (*10)

php artisan vendor:publish

You can find the config file in: config/forrest.php, (*11)

For Lumen, you should copy the config file from src/config/config.php and add it to a forrest.php configuration file under a config directory in the root of your application., (*12)

For Laravel 4, run php artisan config:publish omniphx/forrest. It will be found in app/config/omniphx/forrest/config.php, (*13)

Getting Started

Setting up a Connected App

  1. Log into to your Salesforce org
  2. Click on Setup in the upper right-hand menu
  3. Under Build click Create > Apps
  4. Scroll to the bottom and click New under Connected Apps.
  5. Enter the following details for the remote application:
    • Connected App Name
    • API Name
    • Contact Email
    • Enable OAuth Settings under the API dropdown
    • Callback URL
    • Select access scope (If you need a refresh token, specify it here)
  6. Click Save

After saving, you will now be given a Consumer Key and Consumer Secret. Update your config file with values for consumerKey, consumerSecret, loginURL and callbackURI., (*14)

Setup

Creating authentication routes, (*15)

Web Server authentication flow
Route::get('/authenticate', function()
{
    return Forrest::authenticate();
});

Route::get('/callback', function()
{
    Forrest::callback();

    return Redirect::to('/');
});
Username-Password authentication flow

With the Username Password flow, you can directly authenticate with the Forrest::authenticate() method., (*16)

To use this authentication you must add your username, and password to the config file. Security token might need to be ammended to your password unless your IP address is whitelisted., (*17)

Route::get('/authenticate', function()
{
    Forrest::authenticate();
    return Redirect::to('/');
});

Custom login urls

Sometimes users will need to connect to a sandbox or custom url. To do this, simply pass the url as an argument for the authenticatation method:, (*18)

Route::get('/authenticate', function()
{
    $loginURL = 'https://test.salesforce.com';

    return Forrest::authenticate($loginURL);
});

Note: You can specify a default login URL in your config file., (*19)

Basic usage

After authentication, your app will store an encrypted authentication token which can be used to make API requests., (*20)

Query a record

Forrest::query('SELECT Id FROM Account');

Result:, (*21)

{
    "totalSize": 2,
    "done": true,
    "records": [
        {
            "attributes": {
                "type": "Account",
                "url": "\/services\/data\/v30.0\/sobjects\/Account\/001i000000xxx"
            },
            "Id": "001i000000xxx"
        },
        {
            "attributes": {
                "type": "Account",
                "url": "\/services\/data\/v30.0\/sobjects\/Account\/001i000000xxx"
            },
            "Id": "001i000000xxx"
        }
    ]
}

If you are querying more than 2000 records, you response will include:, (*22)

"nextRecordsUrl" : "/services/data/v20.0/query/01gD0000002HU6KIAW-2000"

Simply, call Forrest::next($nextRecordsUrl) to return the next 2000 records., (*23)

Create a new record

Records can be created using the following format., (*24)

$body = ['Name' => 'New Account'];
Forrest::sobjects('Account',[
    'method' => 'post',
    'body'   => $body]);

Update a record

Update a record with the PUT method., (*25)

$body = [
    'Name'  => 'Acme'
    'Phone' => '555-555-5555'];

Forrest::sobjects('Account/001i000000xxx',[
    'method' => 'put',
    'body'   => $body]);

Upsert a record

Update a record with the PATCH method and if the external Id doesn't exist, it will insert a new record., (*26)

$body = [
    'Phone' => '555-555-5555',
    'External_Id__c' => 'XYZ1234'];

Forrest::sobjects('Account',[
    'method' => 'patch',
    'body'   => $body]);

Delete a record

Delete a record with the DELETE method., (*27)

Forrest::sobjects('Account/001i000000xxx', ['method' => 'delete']);

XML format

Change the request/response format to XML with the format key or make it default in your config file., (*28)

Forrest::sobjects('Account',['format'=>'xml']);

API Requests

With the exception of the search and query resources, all resources are requested dynamically using method overloading., (*29)

First, determine which resources you have access to by calling:, (*30)

Forrest::resources();

Result:, (*31)

Array
(
    [sobjects] => /services/data/v30.0/sobjects
    [connect] => /services/data/v30.0/connect
    [query] => /services/data/v30.0/query
    [theme] => /services/data/v30.0/theme
    [queryAll] => /services/data/v30.0/queryAll
    [tooling] => /services/data/v30.0/tooling
    [chatter] => /services/data/v30.0/chatter
    [analytics] => /services/data/v30.0/analytics
    [recent] => /services/data/v30.0/recent
    [process] => /services/data/v30.0/process
    [identity] => https://login.salesforce.com/id/00Di0000000XXXXXX/005i0000000aaaaAAA
    [flexiPage] => /services/data/v30.0/flexiPage
    [search] => /services/data/v30.0/search
    [quickActions] => /services/data/v30.0/quickActions
    [appMenu] => /services/data/v30.0/appMenu
)

Next, call resources by referring to the specified key. For instance:, (*32)

Forrest::theme();

or, (*33)

Forrest::appMenu();

Resource urls can be extended by passing additional parameters into the first argument:, (*34)

Forrest::sobjects('Account/describe/approvalLayouts/');

You can also add optional parameters to requests:, (*35)

Forrest::theme(['format'=>'xml']);

Additional API Requests

Refresh

If a refresh token is set, the server can refresh the access token on the user's behalf. Refresh tokens are only for the Web Server flow., (*36)

Forrest::refresh();

If you need a refresh token, be sure to specify this under access scope in your Connected App. You can also specify this in your configuration file by adding 'scope' => 'full refresh_token'. Setting scope access in the config file is optional, the default scope access is determined by your Salesforce org., (*37)

Revoke

This will revoke the authorization token. The session will continue to store a token, but it will become invalid., (*38)

Forrest::revoke();

Versions

Returns all currently supported versions. Includes the verison, label and link to each version's root:, (*39)

Forrest::versions();

Resources

Returns list of available resources based on the logged in user's permission and API version., (*40)

Forrest::resources();

Identity

Returns information about the logged-in user., (*41)

Forrest::identity();

For a complete listing of API resources, refer to the Force.com REST API Developer's Guide, (*42)

Custom Apex endpoints

If you create a custom API using Apex, you can use the custom() method for consuming them., (*43)

Forrest::custom('/myEndpoint');

Additional options and parameters can be passed in like this:, (*44)

Forrest::custom('/myEndpoint', [
    'method' => 'post',
    'body' => ['foo' => 'bar'],
    'parameters' => ['flim' => 'flam']]);

Read Creating REST APIs using Apex REST for more information., (*45)

Raw Requests

If needed, you can make raw requests to an endpoint of your choice., (*46)

Forrest::get('/services/data/v20.0/endpoint');
Forrest::head('/services/data/v20.0/endpoint');
Forrest::post('/services/data/v20.0/endpoint', ['my'=>'param']);
Forrest::put('/services/data/v20.0/endpoint', ['my'=>'param']);
Forrest::patch('/services/data/v20.0/endpoint', ['my'=>'param']);
Forrest::delete('/services/data/v20.0/endpoint');

Raw response output

By default, this package will return the body of a response as either a deserialized JSON object or a SimpleXMLElement object., (*47)

There might be times, when you would rather handle this differently. To do this, simply use any format other than 'json' or 'xml' and the code will return a Guzzle response object., (*48)

$response = Forrest::sobjects($resource, ['format'=> 'none']);
$content = (string) $response->getBody(); // Guzzle response

Event Listener

This package makes use of Guzzle's event listers, (*49)

Event::listen('forrest.response', function($request, $response) {
    dd((string) $response);
});

For more information about Guzzle responses and event listeners, refer to their documentation., (*50)

The Versions

19/07 2018

dev-master

9999999-dev

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

19/07 2018

2.4.7

2.4.7.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

27/02 2018

2.4.6

2.4.6.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

21/01 2018

v2.4.5

2.4.5.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

20/01 2018

v2.4.4

2.4.4.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

24/11 2017

v2.4.3

2.4.3.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

17/11 2017

v2.4.2

2.4.2.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

12/11 2017

v2.4.1

2.4.1.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

12/11 2017

v2.4.0

2.4.0.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

12/11 2017

dev-release/2.4

dev-release/2.4

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

15/03 2017

v2.3.6

2.3.6.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

07/03 2017

v2.3.5

2.3.5.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

28/02 2017

dev-cwhittl-master

dev-cwhittl-master

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

26/02 2017

v2.3.4

2.3.4.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

26/02 2017

dev-blocher-master

dev-blocher-master

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

06/02 2017

v2.3.3

2.3.3.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

06/02 2017

v2.3.2

2.3.2.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

06/02 2017

v2.3.1

2.3.1.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

30/01 2017

dev-bugfix/fix-524-session-dependency

dev-bugfix/fix-524-session-dependency

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

27/01 2017

v2.3.0

2.3.0.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

25/07 2016

v2.2.0

2.2.0.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

25/07 2016

dev-InfusionWeb-master

dev-InfusionWeb-master

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

15/07 2016

v2.1.5

2.1.5.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

14/07 2016

v2.1.4

2.1.4.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

13/04 2016

v2.1.3

2.1.3.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

11/04 2016

v2.1.2

2.1.2.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

11/04 2016

dev-feature/add-invalid-creditials-exception

dev-feature/add-invalid-creditials-exception

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

11/04 2016

dev-bugfix/90

dev-bugfix/90

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

04/03 2016

dev-feature/guzzle6

dev-feature/guzzle6

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

01/03 2016

dev-bugfix/persist-login-url-across-oath-redirect

dev-bugfix/persist-login-url-across-oath-redirect

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

20/02 2016

v2.1.1

2.1.1.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

20/02 2016

dev-bugfix/81

dev-bugfix/81

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

20/02 2016

dev-analysis-8wjpVo

dev-analysis-8wjpVo

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

17/02 2016

v2.1.0

2.1.0.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

28/12 2015

v2.0.5

2.0.5.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

21/11 2015

v2.0.4

2.0.4.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

14/10 2015

v2.0.3

2.0.3.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

25/07 2015

dev-code-enhancements

dev-code-enhancements

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

24/07 2015

v2.0.2

2.0.2.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

24/07 2015

v2.0.1

2.0.1.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

06/05 2015

v2.0.0

2.0.0.0

Salesforce / Force.com REST API Client for Laravel 5

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

19/02 2015

v1.4.0

1.4.0.0

Salesforce / Force.com REST API Client for Laravel

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce force.com force

28/01 2015

v1.3.0

1.3.0.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce

15/01 2015

v1.2.0

1.2.0.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce

08/01 2015

v1.1.0

1.1.0.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel rest salesforce

27/11 2014

v1.0.3

1.0.3.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel salesforce

25/11 2014

v1.0.2

1.0.2.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel salesforce

07/11 2014

v1.0.1

1.0.1.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel salesforce

28/10 2014

v1.0.0

1.0.0.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel salesforce

04/09 2014

v1.0.0-beta.3

1.0.0.0-beta3

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel salesforce

31/08 2014

v1.0.0-beta.2

1.0.0.0-beta2

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel salesforce

31/08 2014

v1.0.0-beta

1.0.0.0-beta

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel salesforce

26/08 2014

v0.3.1

0.3.1.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel salesforce

25/08 2014

v0.3.0

0.3.0.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel salesforce

05/08 2014

v0.2.1

0.2.1.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel api rest salesforce force.com salesforce rest salesforce rest api salesforce api force rest

24/07 2014

v0.2.0

0.2.0.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel api rest salesforce force.com

31/05 2014

v0.1.0

0.1.0.0

A Laravel 4 client for Salesforce REST API

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel api rest salesforce force.com