GarchiCMS PHP SDK

The GarchiCMS PHP SDK is a PHP package for interacting with the Garchi CMS API. It provides a simple, modular, and intuitive interface for managing categories, data items, reviews, reactions, spaces, and headless CMS features.

πŸ“– API Documentation: Garchi CMS API Docs


πŸ“– Table of Contents


Features

  • βœ… Manage Data Items: Create, update, delete, and fetch data items.
  • βœ… Handle Categories: Create, update, delete, and list categories.
  • βœ… Manage Spaces: Create, update, and fetch spaces.
  • βœ… Handle Reviews: Create, update, delete, and fetch reviews.
  • βœ… Manage Reactions: Add or remove reactions for items or reviews.
  • βœ… Perform Compound Queries: Execute complex queries across items, categories, and reviews.
  • βœ… Work with Headless CMS: Manage assets, pages, and section templates.

Installation

Using Composer

composer require garchicms/garchi-php-sdk

Usage

This SDK is a wrapper around the Garchi CMS API, providing easy-to-use modular functions that map directly to API endpoints.

Initializing the SDK

Once installed, you can use the SDK without manually requiring files, thanks to Composer's autoloading.

use GarchiCMS\GarchiCMS;

$garchi = new GarchiCMS("YOUR_API_KEY");

Module Mapping

Each module corresponds to a specific API group:

Each module’s return values correspond to the return value of the respective API endpoint. The only difference is that for non-paginated API endpoints, each module’s return value can be accessed without the .data attribute.

Example Usages

Here are some example usages

Data Item API

Create a Data Item

$newItem = $garchi->dataItem->create([
    'space_uid' => 'your_space_uid',
    'name' => 'New Item',
    'categories' => [1, 2, 3],
]);

Get All Items

$items = $garchi->dataItem->getAll(['size' => 10]);

Category API

Create a Category

$newCategory = $garchi->category->create([
    'category' => 'New Category',
    'space_uid' => 'your_space_uid'
]);

Get All Categories

$categories = $garchi->category->getAll();

Review API

Create a Review

$review = $garchi->review->create([
    'item_id' => 1,
    'rating' => 5,
    'review_body' => 'Excellent product!',
    'user_email' => 'user@example.com',
    'user_name' => 'John Doe'
]);

Reaction API

Add or Update Reaction

$reaction = $garchi->reaction->manage([
    'reaction' => 'like',
    'user_identifier' => 'user@example.com',
    'review_id' => 1,
    'item_id' => 1,
    'reaction_for' => 'review'
]);

Space API

Create a Space

$newSpace = $garchi->space->create([
    'name' => 'New Space',
    'logo' => $yourLogoFile
]);

Compound Query API

Perform a Compound Query

$queryResult = $garchi->compoundQuery->query([
    'dataset' => 'items',
    'fields' => ['name', 'price'],
    'conditions' => ['like', 'gte'],
    'values' => ['%item%', '10'],
    'logic' => ['and']
], ['order_key' => 'name', 'order_by' => 'asc']);

Headless CMS API

Get a Page

$page = $garchi->headless->getPage([
    'space_uid' => 'your_space_uid',
    'slug' => '/',
    'lang' => 'en-US',
    'mode' => 'live'
]);

Error Handling

All API calls throw exceptions if the API call fails.

try {
    $item = $garchi->dataItem->get(['item' => 1]);
    print_r($item);
} catch (\Exception $error) {
    echo 'Error: ' . $error->getMessage();
}

Types and Interfaces

The SDK provides structured PHP classes for better type hinting and autocompletion.

use GarchiCMS\Contracts\GarchiItem;
use GarchiCMS\Contracts\GarchiCategory;
use GarchiCMS\Contracts\GarchiReview;

Contributing

Feel free to submit issues and pull requests to improve the SDK.

License

This project is licensed under the MIT License.