Creating content with binary attachments via REST API¶
This page shows how to create content via the REST API on the example of uploading an image file.
Creating a draft¶
A draft is created with a POST request to /api/ezp/v2/content/objects
.
Its body should contain all of the required data in the structured format (see Creating content: data property).
As for the response, it's possible to use either JSON or XML in input.
The following examples use JSON (and assume HTTP Basic Auth is enabled).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | // URL to eZ Platform installation $base_url = "http://127.0.0.1"; // User credentials $username = "admin"; $password = "publish"; if ($argc < 2) { // Print script usage echo "Usage: php $argv[0] <FILE_PATH>\n"; exit(1); } // Request payload $data = [ 'ContentCreate' => [ 'ContentType' => [ // "Image" content type '_href' => "/api/ezp/v2/content/types/5", ], 'mainLanguageCode' => 'eng-GB', 'LocationCreate' => [ 'ParentLocation' => [ // Destination location ("Media" root location in this case) '_href' => "/api/ezp/v2/content/locations/1/43", ], 'sortField' => 'PATH', 'sortOrder' => 'ASC', ], 'Section' => [ // "Media" section '_href' => "/api/ezp/v2/content/sections/3", ], 'fields' => [ 'field' => [ [ 'fieldDefinitionIdentifier' => 'name', 'fieldValue' => 'File uploaded via REST API', ], [ 'fieldDefinitionIdentifier' => 'image', 'fieldValue' => [ // Original file name 'fileName' => pathinfo($argv[1], PATHINFO_BASENAME), // File size in bytes 'fileSize' => filesize($argv[1]), // File content must be encoded as BASE64 'data' => base64_encode(file_get_contents($argv[1])), ], ], ], ], ], ]; $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "$base_url/api/ezp/v2/content/objects", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => json_encode($data), CURLOPT_USERPWD => "$username:$password", CURLOPT_HTTPHEADER => [ "accept: application/json", "cache-control: no-cache", "content-type: application/vnd.ez.api.ContentCreate+json", ], ]); $response = curl_exec($curl); if (($err = curl_error($curl))) { echo "cURL Error #:" . $err; } else { echo $response; } curl_close($curl); |
Publishing the image¶
To publish the image use the following code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | // URL to eZ Platform installation $base_url = "http://127.0.0.1"; // User credentials $username = "admin"; $password = "publish"; if ($argc < 2) { // Print script usage echo "Usage: php $argv[0] <ID>\n"; exit(1); } $id = $argv[1]; // Publish the draft $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "$base_url/api/ezp/v2/content/objects/$id/versions/1", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_USERPWD => "$username:$password", CURLOPT_HTTPHEADER => [] "accept: application/json", "cache-control: no-cache", "x-http-method-override: PUBLISH" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } |