92 lines
2.0 KiB
PHP
92 lines
2.0 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
/**
|
|
* @license Apache 2.0
|
|
*/
|
|
|
|
namespace OpenApi\Annotations;
|
|
|
|
use OpenApi\Generator;
|
|
|
|
/**
|
|
* Configuration details for a supported OAuth Flow
|
|
* [OAuth Flow Object](https://swagger.io/specification/#oauthFlowObject).
|
|
*
|
|
* @Annotation
|
|
*/
|
|
class Flow extends AbstractAnnotation
|
|
{
|
|
/**
|
|
* The authorization url to be used for this flow.
|
|
* This must be in the form of a url.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $authorizationUrl = Generator::UNDEFINED;
|
|
|
|
/**
|
|
* The token URL to be used for this flow.
|
|
* This must be in the form of a url.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $tokenUrl = Generator::UNDEFINED;
|
|
|
|
/**
|
|
* The URL to be used for obtaining refresh tokens.
|
|
* This must be in the form of a url.
|
|
*
|
|
* @var string
|
|
*/
|
|
public $refreshUrl = Generator::UNDEFINED;
|
|
|
|
/**
|
|
* Flow name. One of ['implicit', 'password', 'authorizationCode', 'clientCredentials'].
|
|
*
|
|
* @var string
|
|
*/
|
|
public $flow = Generator::UNDEFINED;
|
|
|
|
/**
|
|
* The available scopes for the OAuth2 security scheme. A map between the scope name and a short description for it.
|
|
*/
|
|
public $scopes = Generator::UNDEFINED;
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public static $_required = ['scopes', 'flow'];
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public static $_blacklist = ['_context', '_unmerged'];
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public static $_types = [
|
|
'flow' => ['implicit', 'password', 'authorizationCode', 'clientCredentials'],
|
|
'refreshUrl' => 'string',
|
|
'authorizationUrl' => 'string',
|
|
'tokenUrl' => 'string',
|
|
];
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public static $_parents = [
|
|
SecurityScheme::class,
|
|
];
|
|
|
|
/** @inheritdoc */
|
|
public function jsonSerialize()
|
|
{
|
|
if (is_array($this->scopes) && empty($this->scopes)) {
|
|
$this->scopes = new \stdClass();
|
|
}
|
|
|
|
return parent::jsonSerialize();
|
|
}
|
|
}
|