1. Go to this page and download the library: Download arkitechdev/openapi library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
arkitechdev / openapi example snippets
return [
/**
* The default path to the file containing the docs.
*/
'docs_path' => base_path('docs.php'),
/**
* The path to the file where the generated documentation will be stored.
* The generator supports both .json and .yaml files.
*/
'output_path' => base_path('docs.json'),
];
use Arkitechdev\OpenApi\Facades\OpenApi;
OpenApi::title('Sample API');
OpenApi::description('This is just an example of a docs file');
OpenApi::version('1.0.0');
OpenApi::addServer('/', 'localhost');
OpenApi::schemas([
Schemas\Post::class,
Schemas\User::class,
Schemas\Image::class,
]);
OpenApi::get('/posts', \App\Docs\Requests\PostIndex::class);
OpenApi::post('/posts', \App\Docs\Requests\PostStore::class);
OpenApi::get('/posts/{id}', \App\Docs\Requests\PostShow::class);
OpenApi::patch('/posts/{id}', \App\Docs\Requests\PostUpdate::class);
OpenApi::delete('/posts/{id}', \App\Docs\Requests\PostDestroy::class);
OpenApi::get('/users', \App\Docs\Requests\UserIndex::class);
OpenApi::post('/users', \App\Docs\Requests\UserStore::class);
OpenApi::get('/users/{id}', \App\Docs\Requests\UserShow::class);
OpenApi::patch('/users/{id}', \App\Docs\Requests\UserUpdate::class);
OpenApi::delete('/users/{id}', \App\Docs\Requests\UserDestroy::class);
Request::method('get')->addParameter('page', null, function (Parameter $parameter) {
$parameter->in(Parameter::IN_QUERY)->type(Parameter::TYPE_INTEGER)->
OpenApi::title('API example')
->version('1.0.0')
->addPath('patch', '/posts/{id}', null, function (Request $request) {
$request->tags([
'Posts'
])
->addParameter('id', null, function (Parameter $parameter) {
$parameter->in(Parameter::IN_PATH)
->type(Parameter::TYPE_INTEGER)
->roperty('subject', null, function (Property $property) {
$property->type(Property::TYPE_STRING)
->format(Property::FORMAT_DATETIME);
})
->addProperty('content', null, function (Property $property) {
$property->type(Property::TYPE_STRING);
});
})
->addResponse(200, function (Response $response) {
$response->addContentType(Response::TYPE_JSON, null, function (Schema $schema) {
$schema->type(Schema::TYPE_OBJECT)
->addProperty('title', null, function (Property $property) {
$property->type(Property::TYPE_STRING);
})
->addProperty('subject', null, function (Property $property) {
$property->type(Property::TYPE_STRING)
->format(Property::FORMAT_DATETIME);
})
->addProperty('content', null, function (Property $property) {
$property->type(Property::TYPE_STRING);
});
});
});
});
$request->addParameter('title', Parameter::TYPE_STRING);
$request->addParameter('page', Parameter::TYPE_INTEGER);
// or if you hate constants for some reason:
$request->addParameter('title', 'string');
$request->addParameter('page', 'integer');
namespace App\Requests;
use App\Schemas\PaginationLinks as PaginationLinksSchema;
use App\Schemas\PaginationMeta as PaginationMetaSchema;
use App\Schemas\Project as ProjectSchema;
use Arkitechdev\OpenApi\Parameter;
use Arkitechdev\OpenApi\Property;
use Arkitechdev\OpenApi\Request;
use Arkitechdev\OpenApi\Response;
use Arkitechdev\OpenApi\Schema;
class ProjectIndex extends Request
{
protected string $method = 'get';
protected string $description = 'The description goes here';
protected string $summary = 'The summary goes here';
protected array $tags = [
'Projects'
];
public function __construct()
{
$this->addParameter('searchQuery', null, function (Parameter $parameter) {
$parameter->in(Parameter::IN_QUERY)->hema::class);
})->addProperty('links', null, function (Property $property) {
$property->ref(PaginationLinksSchema::class);
})->addProperty('meta', null, function (Property $property) {
$property->ref(PaginationMetaSchema::class);
});
});
});
}
}
namespace App\Schemas;
use Arkitechdev\OpenApi\Property;
use Arkitechdev\OpenApi\Schema;
class Project extends Schema
{
protected string $type = 'object';
public function __construct()
{
$this->addProperty('id', Property::TYPE_INTEGER, function (Property $property) {
$property->example(1)-> $this->addProperty('created', null, function (Property $property) {
$property->format(Property::FORMAT_DATETIME);
});
}
}
OpenApi::schemas([
Project::class,
]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.