apility / workiva-laravel
Workiva Platform API client for Laravel
v1.0.0
2025-02-20 09:02 UTC
Requires
- php: ^8.1
- illuminate/http: ^10|^11
Requires (Dev)
- guzzlehttp/guzzle: ^7.0
- illuminate/config: ^10||^11
- illuminate/container: ^10|^11
- illuminate/support: ^10|^11
- phpunit/phpunit: ^12.0
This package is auto-updated.
Last update: 2025-02-20 09:08:48 UTC
README
Install
composer require apility/workiva-laravel
Publish the config
php artisan vendor:publish --provider="Apility\Workiva\WorkivaServiceProvider" --tag="config"
Usage
Listing documents
<?php use Apility\Workiva\Types\Document; $documents = Document::list();
Listing sections in a document
$sections = $documents->first()->sections;
Exporting a document
Document export happens asynchronous. This example uses polling to wait for the document to get exported.
In a production system, it's highly recommended that you instead dispatches a job to handle this, as it could take several minutes for the export to be completed.
use Apility\Workiva\Facades\Workiva; use Apility\Workiva\Enums\OperationStatus; use Exception; $request = [ 'format' => 'xhtml', 'sections' => [ $sections->first()->id, // Example, just pass in the ID's of the sections you want to export ], 'xhtmlOptions' => [ 'editableXhtml' => true, ], ]; $response = Workiva::withoutRedirecting()->post(sprintf('documents/%s/export', $document->id), $request); $location = $response->header('Location'); $retryAfter = $response->header('Retry-After') ?? 0; sleep($retryAfter); $export = null; while ($export === null) { $response = Workiva::get($location); if ($response->json()['status'] === OperationStatus::Completed->value) { $documentUrl = $response->json()['resourceUrl']; try { $exportResponse = Workiva::dontThrow() ->http() ->get($documentUrl); $export = $exportResponse->body(); } catch (Exception $e) { throw new Exception('Failed to export document:' . $e->getMessage()); } } sleep($response->header('Retry-After') ?? 0); } Storage::put($document->name . '.html', $export);
Copyright Apility AS © 2025