rebelcode / rcmod-eddbk-rest-api
A RebelCode module that provides the REST API used in EDD Bookings.
Installs: 1 027
Dependents: 2
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 4
Type:rc-module
pkg:composer/rebelcode/rcmod-eddbk-rest-api
Requires
- php: ^5.4 | ^7.0
 - dhii/cqrs-resource-model-interface: ^0.2-alpha1
 - dhii/data-object-abstract: ^0.1-alpha1
 - dhii/expression-interface: ^0.1 | ^0.2
 - dhii/iterator-base: ^0.1-alpha3
 - dhii/iterator-helper-base: ^0.1-alpha2
 - dhii/normalization-helper-base: ^0.1-alpha2
 - dhii/sql-interface: ^0.1-alpha1
 - dhii/validation-base: ^0.2-alpha1
 - rebelcode/booking-transitioner: ^0.2-alpha2
 - rebelcode/entity-manager-interface: ^0.1-alpha2
 - rebelcode/modular: ^0.1-alpha1
 - rebelcode/transformers: ^0.1-alpha1
 - rebelcode/wp-nonce: ^0.1
 
Requires (Dev)
- codeclimate/php-test-reporter: <=0.3.2
 - dhii/php-cs-fixer-config: ^0.1
 - johnpbloch/wordpress-core: ^4.0
 - phpunit/phpunit: ^4.8
 - ptrofimov/xpmock: ^1.1
 - rebelcode/rcmod-eddbk-cqrs: ^0.1-alpha2
 
This package is auto-updated.
Last update: 2021-05-10 10:21:15 UTC
README
A RebelCode module that provides the REST API used in EDD Bookings.
REST API Details
1. Bookings
Retrieving Booking Info
GET /bookings/<id>
Retrieves a booking by ID.
The response will contain an object with the following properties:
| Property | Type | Description | Values | 
|---|---|---|---|
id | 
integer | The ID of the booking | positive non-zero integer | 
start | 
integer | The start time of the booking in the format Y-M-D H:i:s | 
integer | 
end | 
integer | The end time of the booking in the format Y-M-D H:i:s | 
integer | 
status | 
string | The current status of the booking | "", "draft", "in_cart", "pending", "approved", "rejected", "scheduled", "cancelled", "completed" | 
service | 
service | The service for which the booking was made | Service object | 
resource | 
integer | The ID of the resource for which the booking was made | positive non-zero integer | 
client | 
client | The client for the booking | Client object or null | 
clientTzName | 
string | The client's timezone name | any timezone name or null | 
clientTzOffset | 
integer | The client's UTC timezone offset in seconds, at the start time of the booking | 
integer or null | 
payment | 
integer | The payment number | integer or null | 
notes | 
string | Admin booking notes | string | 
Query Bookings
GET /bookings?field=value&...
Multiple field and value pairs may be provided to narrow the query. The following table lists the available query fields and how a provided value is compared:
| Field | Description | Value Type | 
|---|---|---|
id | 
The booking with the given ID | integer | 
start | 
The bookings that start at or after the given UTC timestamp | integer | 
end | 
The bookings that end at or before the given UTC timestamp | integer | 
service | 
The bookings made for the service with the given ID | positive non-zero integer | 
resource | 
The bookings made for the resource with the given ID | positive non-zero integer | 
client | 
The bookings made for the client with the given ID | positive non-zero integer | 
payment | 
The bookings associated with the payment with the given ID | positive non-zero integer | 
status | 
The booking statuses to filter by | comma separated list (without spaces!) of status names | 
The following additional filters are also available:
| Filter | Description | Value Type | Default | 
|---|---|---|---|
numItems | 
The maximum number of items to receive per page | 
positive non-zero integer | 20 | 
page | 
The page number | positive non-zero integer | 1 | 
The response is an object with 3 keys: items, count and statuses. Example:
{
    items: [
        {
            "id": "21",
            "start": "2018-05-01 12:00:00",
            "end": "2018-05-01 13:30:00",
            "status": "draft",
            "service": {
                "id": 8,
                "name": "Test",
                "color": "#00ccff"
            },
            "resource": "0",
            "client": {
                "id": "6",
                "name": "Test User",
                "email": "test@eddbk.com"
            },
            "clientTzName": "Europe/Rome",
            "clientTzOffset": 1,
            "paymentNumber": 52,
            "notes": ""
        }
    ],
    "count": 1,
    "statuses": {
        "none": 0,
        "draft": 1,
        "in_cart": 0,
        "pending": 0,
        "approved": 0,
        "rejected": 0,
        "scheduled": 0,
        "completed": 0,
        "cancelled": 0
    }
}
The statuses counts are calculated independently from any query filters.
Creating Bookings
POST /bookings
Creates a new booking and responds with the booking object. The following table lists the available fields:
| Property | Type | Description | Required? | 
|---|---|---|---|
start | 
integer | The start time of the booking as a UTC timestamp | ✅ | 
end | 
integer | The end time of the booking as a UTC timestamp | ✅ | 
service | 
positive non-zero integer | The ID of the service for which the booking will be made | ✅ | 
resource | 
positive non-zero integer | The ID of the resource for which the booking will be made | ✅ | 
transition | 
"draft" or "cart" | 
The initial transition to apply to the booking | ✅ | 
client | 
positive non-zero integer | The ID of the client for which the booking will be made | |
clientTz | 
string | The name of the client's timezone | |
payment | 
integer or null | 
The payment number | |
notes | 
string | Admin booking notes | 
Updating Bookings
PATCH /bookings/<id>
Updates a booking. The following table lists the available fields for updating:
| Property | Type | Description | 
|---|---|---|
start | 
integer | The start time of the booking as a UTC timestamp | 
end | 
integer | The end time of the booking as a UTC timestamp | 
service | 
positive non-zero integer | The ID of the service for which the booking will be made | 
resource | 
positive non-zero integer | The ID of the resource for which the booking will be made | 
client | 
positive non-zero integer | The ID of the client for which the booking will be made | 
clientTz | 
string | The name of the client's timezone | 
payment | 
integer | The payment number | 
notes | 
string | Admin booking notes | 
Deleting Bookings
DELETE /bookings/<id>
Deletes the booking with the given ID.