joeybeninghove/json-api-wp-client

WordPress client library for consuming JSON APIs following the 1.0 spec at jsonapi.org

0.1.1 2017-02-07 22:10 UTC

This package is not auto-updated.

Last update: 2025-05-11 05:27:57 UTC


README

This library is an opinionated, resource-based JSON API client for WordPress that strives to adhere to the offical JSON API 1.0 spec.

Requirements

  • WordPress

Usage

Define a resource

  • base_url is specified as the root URL used when interacting with the API.
  • type is the JSON API type for the current resource
class Invoice extends Json_Api_Wp_Resource
{
    public function __construct()
    {
        parent::__construct(
            "https://api.site.com/v1/", // base URL
            "invoices" // type
        )
    }
}

Set up HTTP Authentication

The username is required, but the password is optional and defaults to blank.

Json_Api_Wp_Resource::auth( "jdoe", "secret" );

API Key example

If you're using a typical API key over HTTP Authentication, here is an example of using a base class to abstract that away.

class Base extends Json_Api_Wp_Resource
{
    public function __construct( $type )
    {
        parent::__construct( "http://api.site.come/v1/", $type );
    }

    public static function set_api_key( $api_key )
    {
        parent::auth( $apiKey );
    }
}

class Invoice extends Base
{
    public function __construct()
    {
        parent::__construct( "invoices" );
    }
}

Base::set_api_key( "some secret key" );
$invoices = Invoice::get_all();

Create a resource

$invoice = Invoice::create([
    "description" => "T-Shirt",
    "total" => 10.95
]);

Update a resource

This library does not yet support updating of resources because of the lack of PATCH support in the WordPress HTTP library.

Get a single resource

$invoice = Invoice::get_one( "invoice_123" );

Get all resources

$invoices = Invoice::get_all();

Delete a resource

This library does not yet support updating of resources because of the lack of DELETE support in the WordPress HTTP library.