This is meant to be a base for new REST APIs. You can use this to get started so you don't have to worry about the basics (i.e.: setting API keys, making the request).
You can install the bindings via Composer. Run the following command:
composer require lonnylot/crud-sugar
To use the bindings, use Composer's autoload:
require_once('vendor/autoload.php');
The library requires the GuzzleHTTP library.
There are three steps to getting endpoints working:
$client = \CrudSugar\Client::getInstance();
$client->setBaseUrl('https://api.telnyx.com/');
$client->setApiKey('secret-key');
NOTE See Creating Instances
$client->registerEndpointClass(NumberSearch::class);
NOTE See Endpoint Example Class All endpoints must use
\CrudSugar\Concerns\IsEndpoint
$response = $client->numberSearch->index();
All requests return a Response object.
NOTE: Response decorates the GuzzleHTTP Response. All methods available on the GuzzleHTTP Response are also available through the returned Response object.
Returns true
if the Content-Type
header contains \json
or +json
Returns true
if the status code is >= 200 < 300
If isJson
then returns an associative array. Otherwise returns a string.
Required. The base path to your endpoint. Should not begin or end in a /
. Should not include any resource specific IDs. Automatically re-builds resource paths.
The list of resources this endpoint has. Defaults to ['index', 'show', 'store', 'update', 'delete']
.
Set the path for a specific resource. Overrides the resource path generated by setPath
.
Set the method for a specific resource.
You can create and instance by calling \CrudSugar\Client::getInstance()
, but you can also create named instances by calling \CrudSugar\Client::getInstance('telnyx')
. If you name your instance then you can get that same instance anywhere in your app.
All endpoints must use the \CrudSugar\Concerns\IsEndpoint
trait.
This package uses the Laravel Validator.
NOTE The rules requiring a database (Exists, Unique, etc.) are not implemented.
To validate a resource you can make a validation function that returns the rules.
use CrudSugar\Concerns\IsEndpoint;
class NumberOrder {
use IsEndpoint;
public function boot() {
$this->setResources(['store']);
$this->setPath('number_orders');
}
public function validateIndexRules() {
return [
"phone_numbers" => ['required', 'array'],
"phone_numbers.*.phone_number" => ['required', 'string']
];
}
}