diff --git a/composer.json b/composer.json index 37ee8786..f1f02557 100644 --- a/composer.json +++ b/composer.json @@ -23,6 +23,7 @@ "ext-json": "*", "contributte/psr7-http-message": "^0.9.0 || ^0.10.0", "contributte/middlewares": "^0.11.0", + "contributte/openapi": "^0.1.0", "doctrine/annotations": "^1.14.3", "koriym/attributes": "^1.0.5", "nette/utils": "^4.0.0" diff --git a/phpstan.neon b/phpstan.neon index 472cd17b..74521eb4 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -45,8 +45,6 @@ parameters: - message: '#.+(int|string|string\>)\|false.+#' path: %currentWorkingDirectory%/src/OpenApi/SchemaDefinition/Entity/EntityAdapter.php - - '#Property Apitte\\OpenApi\\Schema\\(\w+)::\$(\w+) is never read, only written.#' - # This should not happen because null is returned on error - '#Method Apitte\\Core\\Utils\\Helpers::slashless\(\) should return string but returns string\|null\.#' diff --git a/src/OpenApi/DI/OpenApiPlugin.php b/src/OpenApi/DI/OpenApiPlugin.php index a212e3ea..35fad101 100644 --- a/src/OpenApi/DI/OpenApiPlugin.php +++ b/src/OpenApi/DI/OpenApiPlugin.php @@ -12,8 +12,8 @@ use Apitte\OpenApi\SchemaDefinition\JsonDefinition; use Apitte\OpenApi\SchemaDefinition\NeonDefinition; use Apitte\OpenApi\SchemaDefinition\YamlDefinition; -use Apitte\OpenApi\Tracy\SwaggerUIPanel; use Contributte\DI\Helper\ExtensionDefinitionsHelper; +use Contributte\OpenApi\Tracy\SwaggerPanel; use Nette\DI\Definitions\Definition; use Nette\DI\Definitions\Statement; use Nette\PhpGenerator\ClassType; @@ -93,8 +93,9 @@ public function loadPluginConfiguration(): void } $builder->addDefinition($this->prefix('swaggerUi.panel')) - ->setFactory(SwaggerUIPanel::class) + ->setFactory(SwaggerPanel::class) ->addSetup('setUrl', [$config->swaggerUi->url]) + ->addSetup('?->setSpecCallback(fn() => ?)', ['@self', new Statement('@' . $this->prefix('schemaBuilder') . '::build')]) ->addSetup('setExpansion', [$config->swaggerUi->expansion]) ->addSetup('setFilter', [$config->swaggerUi->filter]) ->addSetup('setTitle', [$config->swaggerUi->title]) @@ -129,7 +130,7 @@ protected function getConfigSchema(): Schema 'files' => Expect::arrayOf('string'), 'swaggerUi' => Expect::structure([ 'url' => Expect::string()->nullable(), - 'expansion' => Expect::anyOf(...SwaggerUIPanel::EXPANSIONS)->default(SwaggerUIPanel::EXPANSION_LIST), + 'expansion' => Expect::anyOf(...SwaggerPanel::EXPANSIONS)->default(SwaggerPanel::EXPANSION_LIST), 'filter' => Expect::bool(true), 'title' => Expect::string('OpenAPI'), 'panel' => Expect::bool(false), diff --git a/src/OpenApi/ISchemaBuilder.php b/src/OpenApi/ISchemaBuilder.php index cc608045..dd2cf680 100644 --- a/src/OpenApi/ISchemaBuilder.php +++ b/src/OpenApi/ISchemaBuilder.php @@ -2,7 +2,7 @@ namespace Apitte\OpenApi; -use Apitte\OpenApi\Schema\OpenApi; +use Contributte\OpenApi\Schema\OpenApi; interface ISchemaBuilder { diff --git a/src/OpenApi/Schema/Callback.php b/src/OpenApi/Schema/Callback.php deleted file mode 100644 index f8fd940c..00000000 --- a/src/OpenApi/Schema/Callback.php +++ /dev/null @@ -1,35 +0,0 @@ -data = $data; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): Callback - { - return new Callback($data); - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - return $this->data; - } - -} diff --git a/src/OpenApi/Schema/Components.php b/src/OpenApi/Schema/Components.php deleted file mode 100644 index ef14b77f..00000000 --- a/src/OpenApi/Schema/Components.php +++ /dev/null @@ -1,165 +0,0 @@ - $schemaData) { - $components->setSchema($schemaKey, Schema::fromArray($schemaData)); - } - } - - if (isset($data['responses'])) { - foreach ($data['responses'] as $responseKey => $responseData) { - $components->setResponse((string) $responseKey, Response::fromArray($responseData)); - } - } - - if (isset($data['parameters'])) { - foreach ($data['parameters'] as $parameterKey => $parameterData) { - $components->setParameter($parameterKey, Parameter::fromArray($parameterData)); - } - } - - if (isset($data['examples'])) { - foreach ($data['examples'] as $exampleKey => $exampleData) { - $components->setExample($exampleKey, Example::fromArray($exampleData)); - } - } - - foreach ($data['requestBodies'] ?? [] as $requestBodyKey => $requestBodyData) { - $components->setRequestBody($requestBodyKey, RequestBody::fromArray($requestBodyData)); - } - - foreach ($data['headers'] ?? [] as $headerKey => $headerData) { - $components->setHeader($headerKey, Header::fromArray($headerData)); - } - - foreach ($data['securitySchemes'] ?? [] as $securitySchemeKey => $securitySchemeData) { - $components->setSecurityScheme($securitySchemeKey, SecurityScheme::fromArray($securitySchemeData)); - } - - foreach ($data['links'] ?? [] as $linkKey => $linkData) { - $components->setLink($linkKey, Link::fromArray($linkData)); - } - - return $components; - } - - public function setSchema(string $name, Schema|Reference $schema): void - { - $this->schemas[$name] = $schema; - } - - public function setResponse(string $name, Response|Reference $response): void - { - $this->responses[$name] = $response; - } - - public function setParameter(string $name, Parameter|Reference $parameter): void - { - $this->parameters[$name] = $parameter; - } - - public function setExample(string $name, Example|Reference $example): void - { - $this->examples[$name] = $example; - } - - public function setRequestBody(string $name, RequestBody|Reference $requestBody): void - { - $this->requestBodies[$name] = $requestBody; - } - - public function setHeader(string $name, Header|Reference $header): void - { - $this->headers[$name] = $header; - } - - public function setSecurityScheme(string $name, SecurityScheme|Reference $securityScheme): void - { - $this->securitySchemes[$name] = $securityScheme; - } - - public function setLink(string $name, Link|Reference $link): void - { - $this->links[$name] = $link; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - foreach ($this->schemas as $schemaKey => $schema) { - $data['schemas'][$schemaKey] = $schema->toArray(); - } - - foreach ($this->responses as $responseKey => $response) { - $data['responses'][$responseKey] = $response->toArray(); - } - - foreach ($this->parameters as $parameterKey => $parameter) { - $data['parameters'][$parameterKey] = $parameter->toArray(); - } - - foreach ($this->examples as $exampleKey => $example) { - $data['examples'][$exampleKey] = $example->toArray(); - } - - foreach ($this->requestBodies as $requestBodyKey => $requestBody) { - $data['requestBodies'][$requestBodyKey] = $requestBody->toArray(); - } - - foreach ($this->headers as $headerKey => $header) { - $data['headers'][$headerKey] = $header->toArray(); - } - - foreach ($this->securitySchemes as $securitySchemeKey => $securityScheme) { - $data['securitySchemes'][$securitySchemeKey] = $securityScheme->toArray(); - } - - foreach ($this->links as $linkKey => $link) { - $data['links'][$linkKey] = $link->toArray(); - } - - return $data; - } - -} diff --git a/src/OpenApi/Schema/Contact.php b/src/OpenApi/Schema/Contact.php deleted file mode 100644 index 63fea9e3..00000000 --- a/src/OpenApi/Schema/Contact.php +++ /dev/null @@ -1,78 +0,0 @@ -setName($data['name'] ?? null); - $contact->setUrl($data['url'] ?? null); - $contact->setEmail($data['email'] ?? null); - - return $contact; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - if ($this->name !== null) { - $data['name'] = $this->name; - } - - if ($this->url !== null) { - $data['url'] = $this->url; - } - - if ($this->email !== null) { - $data['email'] = $this->email; - } - - return $data; - } - - public function setName(?string $name): void - { - $this->name = $name; - } - - public function setUrl(?string $url): void - { - $this->url = $url; - } - - public function setEmail(?string $email): void - { - $this->email = $email; - } - - public function getName(): ?string - { - return $this->name; - } - - public function getUrl(): ?string - { - return $this->url; - } - - public function getEmail(): ?string - { - return $this->email; - } - -} diff --git a/src/OpenApi/Schema/Example.php b/src/OpenApi/Schema/Example.php deleted file mode 100644 index 0797b659..00000000 --- a/src/OpenApi/Schema/Example.php +++ /dev/null @@ -1,95 +0,0 @@ -summary = $data['summary'] ?? null; - $example->description = $data['description'] ?? null; - $example->value = $data['value'] ?? null; - $example->externalValue = $data['externalValue'] ?? null; - - return $example; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - if ($this->summary !== null) { - $data['summary'] = $this->summary; - } - - if ($this->description !== null) { - $data['description'] = $this->description; - } - - if ($this->value !== null) { - $data['value'] = $this->value; - } - - if ($this->externalValue !== null) { - $data['externalValue'] = $this->externalValue; - } - - return $data; - } - - public function getSummary(): ?string - { - return $this->summary; - } - - public function setSummary(?string $summary): void - { - $this->summary = $summary; - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function getValue(): mixed - { - return $this->value; - } - - public function setValue(mixed $value): void - { - $this->value = $value; - } - - public function getExternalValue(): ?string - { - return $this->externalValue; - } - - public function setExternalValue(?string $externalValue): void - { - $this->externalValue = $externalValue; - } - -} diff --git a/src/OpenApi/Schema/Extended/ComponentReference.php b/src/OpenApi/Schema/Extended/ComponentReference.php deleted file mode 100644 index 5918e6b4..00000000 --- a/src/OpenApi/Schema/Extended/ComponentReference.php +++ /dev/null @@ -1,25 +0,0 @@ -url = $url; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): ExternalDocumentation - { - $externalDocumentation = new ExternalDocumentation($data['url']); - $externalDocumentation->setDescription($data['description'] ?? null); - - return $externalDocumentation; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - $data['url'] = $this->url; - - // Optional - if ($this->description !== null) { - $data['description'] = $this->description; - } - - return $data; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function getUrl(): string - { - return $this->url; - } - -} diff --git a/src/OpenApi/Schema/Header.php b/src/OpenApi/Schema/Header.php deleted file mode 100644 index e9fc06e6..00000000 --- a/src/OpenApi/Schema/Header.php +++ /dev/null @@ -1,122 +0,0 @@ -setDescription($data['description'] ?? null); - $header->setRequired($data['required'] ?? null); - $header->setDeprecated($data['deprecated'] ?? null); - $header->setAllowEmptyValue($data['allowEmptyValue'] ?? null); - if (isset($data['schema'])) { - if (isset($data['schema']['$ref'])) { - $header->setSchema(Reference::fromArray($data['schema'])); - } else { - $header->setSchema(Schema::fromArray($data['schema'])); - } - } - - $header->setExample($data['example'] ?? null); - $header->setExamples($data['examples'] ?? []); - - return $header; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - if ($this->description !== null) { - $data['description'] = $this->description; - } - - if ($this->required !== null) { - $data['required'] = $this->required; - } - - if ($this->deprecated !== null) { - $data['deprecated'] = $this->deprecated; - } - - if ($this->allowEmptyValue !== null) { - $data['allowEmptyValue'] = $this->allowEmptyValue; - } - - if ($this->schema !== null) { - $data['schema'] = $this->schema->toArray(); - } - - if ($this->example !== null) { - $data['example'] = $this->example; - } - - if ($this->examples !== []) { - $data['examples'] = $this->examples; - } - - return $data; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function setRequired(?bool $required): void - { - $this->required = $required; - } - - public function setDeprecated(?bool $deprecated): void - { - $this->deprecated = $deprecated; - } - - public function setAllowEmptyValue(?bool $allowEmptyValue): void - { - $this->allowEmptyValue = $allowEmptyValue; - } - - public function setSchema(Schema|Reference|null $schema): void - { - $this->schema = $schema; - } - - public function setExample(mixed $example): void - { - $this->example = $example; - } - - /** - * @param mixed[] $examples - */ - public function setExamples(array $examples): void - { - $this->examples = $examples; - } - -} diff --git a/src/OpenApi/Schema/Info.php b/src/OpenApi/Schema/Info.php deleted file mode 100644 index 1a8849bf..00000000 --- a/src/OpenApi/Schema/Info.php +++ /dev/null @@ -1,119 +0,0 @@ -title = $title; - $this->version = $version; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): Info - { - $info = new Info($data['title'], $data['version']); - $info->setDescription($data['description'] ?? null); - $info->setTermsOfService($data['termsOfService'] ?? null); - $info->setLicense(isset($data['license']) ? License::fromArray($data['license']) : null); - $info->setContact(isset($data['contact']) ? Contact::fromArray($data['contact']) : null); - - return $info; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - $data['title'] = $this->title; - - if ($this->description !== null) { - $data['description'] = $this->description; - } - - if ($this->termsOfService !== null) { - $data['termsOfService'] = $this->termsOfService; - } - - if ($this->contact !== null) { - $data['contact'] = $this->contact->toArray(); - } - - if ($this->license !== null) { - $data['license'] = $this->license->toArray(); - } - - $data['version'] = $this->version; - - return $data; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function setTermsOfService(?string $termsOfService): void - { - $this->termsOfService = $termsOfService; - } - - public function setContact(?Contact $contact): void - { - $this->contact = $contact; - } - - public function setLicense(?License $license): void - { - $this->license = $license; - } - - public function getTitle(): string - { - return $this->title; - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function getTermsOfService(): ?string - { - return $this->termsOfService; - } - - public function getContact(): ?Contact - { - return $this->contact; - } - - public function getLicense(): ?License - { - return $this->license; - } - - public function getVersion(): string - { - return $this->version; - } - -} diff --git a/src/OpenApi/Schema/License.php b/src/OpenApi/Schema/License.php deleted file mode 100644 index 84ce650b..00000000 --- a/src/OpenApi/Schema/License.php +++ /dev/null @@ -1,77 +0,0 @@ -name = $name; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): License - { - $license = new License($data['name']); - $license->setIdentifier($data['identifier'] ?? null); - $license->setUrl($data['url'] ?? null); - - return $license; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - $data['name'] = $this->name; - - // Optional SPDX identifier - if ($this->identifier !== null) { - $data['identifier'] = $this->identifier; - } - - // Optional url - if ($this->url !== null) { - $data['url'] = $this->url; - } - - return $data; - } - - public function setIdentifier(?string $identifier): void - { - $this->identifier = $identifier; - } - - public function setUrl(?string $url): void - { - $this->url = $url; - } - - public function getName(): string - { - return $this->name; - } - - public function getIdentifier(): ?string - { - return $this->identifier; - } - - public function getUrl(): ?string - { - return $this->url; - } - -} diff --git a/src/OpenApi/Schema/Link.php b/src/OpenApi/Schema/Link.php deleted file mode 100644 index e712920a..00000000 --- a/src/OpenApi/Schema/Link.php +++ /dev/null @@ -1,103 +0,0 @@ -setOperationRef($data['operationRef'] ?? null); - $link->setOperationId($data['operationId'] ?? null); - $link->setParameters($data['parameters'] ?? []); - $link->setRequestBody($data['requestBody'] ?? null); - $link->setDescription($data['description'] ?? null); - $link->setServer(isset($data['server']) ? Server::fromArray($data['server']) : null); - - return $link; - } - - public function setOperationRef(?string $operationRef): void - { - $this->operationRef = $operationRef; - } - - public function setOperationId(?string $operationId): void - { - $this->operationId = $operationId; - } - - /** - * @param mixed[] $parameters - */ - public function setParameters(array $parameters): void - { - $this->parameters = $parameters; - } - - public function setRequestBody(mixed $requestBody): void - { - $this->requestBody = $requestBody; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function setServer(?Server $server): void - { - $this->server = $server; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - if ($this->operationRef !== null) { - $data['operationRef'] = $this->operationRef; - } - - if ($this->operationId !== null) { - $data['operationId'] = $this->operationId; - } - - if ($this->parameters !== []) { - $data['parameters'] = $this->parameters; - } - - if ($this->requestBody !== null) { - $data['requestBody'] = $this->requestBody; - } - - if ($this->description !== null) { - $data['description'] = $this->description; - } - - if ($this->server !== null) { - $data['server'] = $this->server->toArray(); - } - - return $data; - } - -} diff --git a/src/OpenApi/Schema/MediaType.php b/src/OpenApi/Schema/MediaType.php deleted file mode 100644 index 58362231..00000000 --- a/src/OpenApi/Schema/MediaType.php +++ /dev/null @@ -1,89 +0,0 @@ -setSchema(Reference::fromArray($data['schema'])); - } else { - $mediaType->setSchema(Schema::fromArray($data['schema'])); - } - } - - $mediaType->setExample($data['example'] ?? null); - if (isset($data['examples'])) { - foreach ($data['examples'] as $name => $example) { - if (isset($example['$ref'])) { - $mediaType->addExample($name, Reference::fromArray($example)); - } else { - $mediaType->addExample($name, Example::fromArray($example)); - } - } - } - - return $mediaType; - } - - public function getSchema(): Schema|Reference|null - { - return $this->schema; - } - - public function setSchema(Schema|Reference|null $schema): void - { - $this->schema = $schema; - } - - public function getExample(): mixed - { - return $this->example; - } - - public function setExample(mixed $example): void - { - $this->example = $example; - } - - public function addExample(string $name, Example|Reference|string $example): void - { - $this->examples[$name] = $example; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - if ($this->schema !== null) { - $data['schema'] = $this->schema->toArray(); - } - - if ($this->example !== null) { - $data['example'] = $this->example; - } - - if ($this->examples !== []) { - $data['examples'] = array_map(static fn ($example) => is_string($example) ? $example : $example->toArray(), $this->examples); - } - - return $data; - } - -} diff --git a/src/OpenApi/Schema/OAuthFlow.php b/src/OpenApi/Schema/OAuthFlow.php deleted file mode 100644 index 3687c3fc..00000000 --- a/src/OpenApi/Schema/OAuthFlow.php +++ /dev/null @@ -1,100 +0,0 @@ - */ - private array $scopes = []; - - /** - * @param array $scopes - */ - public function __construct(string $authorizationUrl, string $tokenUrl, string $refreshUrl, array $scopes) - { - $this->authorizationUrl = $authorizationUrl; - $this->tokenUrl = $tokenUrl; - $this->refreshUrl = $refreshUrl; - $this->scopes = $scopes; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): self - { - return new self( - $data['authorizationUrl'], - $data['tokenUrl'], - $data['refreshUrl'], - $data['scopes'], - ); - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - return [ - 'authorizationUrl' => $this->authorizationUrl, - 'tokenUrl' => $this->tokenUrl, - 'refreshUrl' => $this->refreshUrl, - 'scopes' => $this->scopes, - ]; - } - - public function getAuthorizationUrl(): string - { - return $this->authorizationUrl; - } - - public function setAuthorizationUrl(string $authorizationUrl): void - { - $this->authorizationUrl = $authorizationUrl; - } - - public function getTokenUrl(): string - { - return $this->tokenUrl; - } - - public function setTokenUrl(string $tokenUrl): void - { - $this->tokenUrl = $tokenUrl; - } - - public function getRefreshUrl(): string - { - return $this->refreshUrl; - } - - public function setRefreshUrl(string $refreshUrl): void - { - $this->refreshUrl = $refreshUrl; - } - - /** - * @return array - */ - public function getScopes(): array - { - return $this->scopes; - } - - /** - * @param array $scopes - */ - public function setScopes(array $scopes): void - { - $this->scopes = $scopes; - } - -} diff --git a/src/OpenApi/Schema/OpenApi.php b/src/OpenApi/Schema/OpenApi.php deleted file mode 100644 index e9788d08..00000000 --- a/src/OpenApi/Schema/OpenApi.php +++ /dev/null @@ -1,126 +0,0 @@ -openapi = $openapi; - $this->info = $info; - $this->paths = $paths; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): OpenApi - { - $openApi = new OpenApi( - $data['openapi'], - Info::fromArray($data['info']), - Paths::fromArray($data['paths']) - ); - foreach ($data['servers'] ?? [] as $serverData) { - $openApi->addServer(Server::fromArray($serverData)); - } - - if (isset($data['components'])) { - $openApi->setComponents(Components::fromArray($data['components'])); - } - - foreach ($data['tags'] ?? [] as $tagData) { - $openApi->addTag(Tag::fromArray($tagData)); - } - - if (isset($data['externalDocs'])) { - $openApi->externalDocs = ExternalDocumentation::fromArray($data['externalDocs']); - } - - foreach ($data['security'] ?? [] as $security) { - $openApi->addSecurityRequirement(SecurityRequirement::fromArray($security)); - } - - return $openApi; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - $data['openapi'] = $this->openapi; - $data['info'] = $this->info->toArray(); - - foreach ($this->servers as $server) { - $data['servers'][] = $server->toArray(); - } - - $data['paths'] = $this->paths->toArray(); - - if ($this->components !== null) { - $data['components'] = $this->components->toArray(); - } - - foreach ($this->security as $requirement) { - $data['security'][] = $requirement->toArray(); - } - - foreach ($this->tags as $tag) { - $data['tags'][] = $tag->toArray(); - } - - if ($this->externalDocs !== null) { - $data['externalDocs'] = $this->externalDocs->toArray(); - } - - return $data; - } - - public function addTag(Tag $tag): void - { - $this->tags[] = $tag; - } - - public function addServer(Server $server): void - { - $this->servers[] = $server; - } - - public function setComponents(?Components $components): void - { - $this->components = $components; - } - - public function setExternalDocs(?ExternalDocumentation $externalDocs): void - { - $this->externalDocs = $externalDocs; - } - - public function addSecurityRequirement(SecurityRequirement $security): void - { - $this->security[] = $security; - } - -} diff --git a/src/OpenApi/Schema/Operation.php b/src/OpenApi/Schema/Operation.php deleted file mode 100644 index 41a3b0e3..00000000 --- a/src/OpenApi/Schema/Operation.php +++ /dev/null @@ -1,318 +0,0 @@ -responses = $responses; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): Operation - { - $responses = Responses::fromArray($data['responses']); - $operation = new Operation($responses); - if (isset($data['deprecated'])) { - $operation->setDeprecated($data['deprecated']); - } - - $operation->setOperationId($data['operationId'] ?? null); - $operation->setTags($data['tags'] ?? []); - $operation->setSummary($data['summary'] ?? null); - $operation->setDescription($data['description'] ?? null); - if (isset($data['externalDocs'])) { - $operation->setExternalDocs(ExternalDocumentation::fromArray($data['externalDocs'])); - } - - foreach ($data['parameters'] ?? [] as $parameterData) { - if (isset($parameterData['$ref'])) { - $operation->addParameter(Reference::fromArray($parameterData)); - - continue; - } - - $parameter = Parameter::fromArray($parameterData); - if ($operation->hasParameter($parameter)) { - $operation->mergeParameter($parameter); - } else { - $operation->addParameter(Parameter::fromArray($parameterData)); - } - } - - if (isset($data['requestBody'])) { - if (isset($data['requestBody']['$ref'])) { - $operation->setRequestBody(Reference::fromArray($data['requestBody'])); - } else { - $operation->setRequestBody(RequestBody::fromArray($data['requestBody'])); - } - } - - foreach ($data['security'] ?? [] as $securityRequirementData) { - $operation->addSecurityRequirement(SecurityRequirement::fromArray($securityRequirementData)); - } - - foreach ($data['servers'] ?? [] as $server) { - $operation->addServer(Server::fromArray($server)); - } - - foreach ($data['callbacks'] ?? [] as $callback) { - if (isset($callback['$ref'])) { - $operation->addCallback(Reference::fromArray($callback)); - } else { - $operation->addCallback(Callback::fromArray($callback)); - } - } - - return $operation; - } - - public function setOperationId(?string $operationId): void - { - $this->operationId = $operationId; - } - - /** - * @param string[] $tags - */ - public function setTags(array $tags): void - { - $this->tags = $tags; - } - - public function setSummary(?string $summary): void - { - $this->summary = $summary; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function setExternalDocs(?ExternalDocumentation $externalDocs): void - { - $this->externalDocs = $externalDocs; - } - - public function addParameter(Parameter|Reference $parameter): void - { - if ($parameter instanceof Parameter) { - $this->parameters[$this->getParameterKey($parameter)] = $parameter; - - return; - } - - $this->parameters[] = $parameter; - } - - public function hasParameter(Parameter $parameter): bool - { - return array_key_exists($this->getParameterKey($parameter), $this->parameters); - } - - public function mergeParameter(Parameter $parameter): void - { - $originalParameter = $this->parameters[$this->getParameterKey($parameter)]; - - $merged = Helpers::merge($parameter->toArray(), $originalParameter->toArray()); - $parameter = Parameter::fromArray($merged); - - $this->parameters[$this->getParameterKey($parameter)] = $parameter; - } - - public function setRequestBody(RequestBody|Reference|null $requestBody): void - { - $this->requestBody = $requestBody; - } - - public function addCallback(Callback|Reference $callback): void - { - $this->callbacks[] = $callback; - } - - public function setDeprecated(bool $deprecated): void - { - $this->deprecated = $deprecated; - } - - public function addSecurityRequirement(SecurityRequirement $securityRequirement): void - { - $this->security[] = $securityRequirement; - } - - public function addServer(Server $server): void - { - $this->servers[] = $server; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - if ($this->deprecated) { - $data['deprecated'] = $this->deprecated; - } - - if ($this->tags !== []) { - $data['tags'] = $this->tags; - } - - if ($this->summary !== null) { - $data['summary'] = $this->summary; - } - - if ($this->description !== null) { - $data['description'] = $this->description; - } - - if ($this->externalDocs !== null) { - $data['externalDocs'] = $this->externalDocs->toArray(); - } - - if ($this->operationId !== null) { - $data['operationId'] = $this->operationId; - } - - foreach ($this->parameters as $parameter) { - $data['parameters'][] = $parameter->toArray(); - } - - if ($this->requestBody !== null) { - $data['requestBody'] = $this->requestBody->toArray(); - } - - foreach ($this->security as $securityRequirement) { - $data['security'][] = $securityRequirement->toArray(); - } - - $data['responses'] = $this->responses->toArray(); - foreach ($this->servers as $server) { - $data['servers'][] = $server->toArray(); - } - - foreach ($this->callbacks as $callback) { - $data['callbacks'][] = $callback->toArray(); - } - - return $data; - } - - /** - * @return string[] - */ - public function getTags(): array - { - return $this->tags; - } - - public function getSummary(): ?string - { - return $this->summary; - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function getExternalDocs(): ?ExternalDocumentation - { - return $this->externalDocs; - } - - public function getOperationId(): ?string - { - return $this->operationId; - } - - /** - * @return Parameter[]|Reference[] - */ - public function getParameters(): array - { - return $this->parameters; - } - - public function getRequestBody(): RequestBody|Reference|null - { - return $this->requestBody; - } - - public function getResponses(): Responses - { - return $this->responses; - } - - /** - * @return Reference[]|Callback[] - */ - public function getCallbacks(): array - { - return $this->callbacks; - } - - public function isDeprecated(): bool - { - return $this->deprecated; - } - - /** - * @return SecurityRequirement[] - */ - public function getSecurity(): array - { - return $this->security; - } - - /** - * @return Server[] - */ - public function getServers(): array - { - return $this->servers; - } - - private function getParameterKey(Parameter $parameter): string - { - return $parameter->getIn() . '-' . $parameter->getName(); - } - -} diff --git a/src/OpenApi/Schema/Parameter.php b/src/OpenApi/Schema/Parameter.php deleted file mode 100644 index 5f1e39b5..00000000 --- a/src/OpenApi/Schema/Parameter.php +++ /dev/null @@ -1,213 +0,0 @@ -name = $name; - $this->in = $in; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): Parameter - { - $parameter = new Parameter($data['name'], $data['in']); - $parameter->setDescription($data['description'] ?? null); - $parameter->setRequired($data['required'] ?? null); - $parameter->setDeprecated($data['deprecated'] ?? null); - $parameter->setAllowEmptyValue($data['allowEmptyValue'] ?? null); - if (isset($data['schema'])) { - if (isset($data['schema']['$ref'])) { - $parameter->setSchema(Reference::fromArray($data['schema'])); - } else { - $parameter->setSchema(Schema::fromArray($data['schema'])); - } - } - - $parameter->setExample($data['example'] ?? null); - $parameter->setExamples($data['examples'] ?? []); - $parameter->setStyle($data['style'] ?? null); - - return $parameter; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function setRequired(?bool $required): void - { - $this->required = $required; - } - - public function setDeprecated(?bool $deprecated): void - { - $this->deprecated = $deprecated; - } - - public function setAllowEmptyValue(?bool $allowEmptyValue): void - { - $this->allowEmptyValue = $allowEmptyValue; - } - - public function setSchema(Schema|Reference|null $schema): void - { - $this->schema = $schema; - } - - public function setExample(mixed $example): void - { - $this->example = $example; - } - - /** - * @param mixed[] $examples - */ - public function setExamples(array $examples): void - { - $this->examples = $examples; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - $data['name'] = $this->name; - $data['in'] = $this->in; - if ($this->description !== null) { - $data['description'] = $this->description; - } - - if ($this->required !== null) { - $data['required'] = $this->required; - } - - if ($this->deprecated !== null) { - $data['deprecated'] = $this->deprecated; - } - - if ($this->allowEmptyValue !== null) { - $data['allowEmptyValue'] = $this->allowEmptyValue; - } - - if ($this->schema !== null) { - $data['schema'] = $this->schema->toArray(); - } - - if ($this->example !== null) { - $data['example'] = $this->example; - } - - if ($this->examples !== []) { - $data['examples'] = $this->examples; - } - - if ($this->style !== null) { - $data['style'] = $this->style; - } - - return $data; - } - - public function getName(): string - { - return $this->name; - } - - public function getIn(): string - { - return $this->in; - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function isRequired(): ?bool - { - return $this->required; - } - - public function isDeprecated(): ?bool - { - return $this->deprecated; - } - - public function isAllowEmptyValue(): ?bool - { - return $this->allowEmptyValue; - } - - public function getSchema(): Reference|Schema|null - { - return $this->schema; - } - - public function getExample(): mixed - { - return $this->example; - } - - public function getStyle(): ?string - { - return $this->style; - } - - public function setStyle(?string $style): void - { - $this->style = $style; - } - -} diff --git a/src/OpenApi/Schema/PathItem.php b/src/OpenApi/Schema/PathItem.php deleted file mode 100644 index 94963d2e..00000000 --- a/src/OpenApi/Schema/PathItem.php +++ /dev/null @@ -1,159 +0,0 @@ -setOperation($allowedOperation, Operation::fromArray($pathItemData[$allowedOperation])); - } - - $pathItem->setSummary($pathItemData['summary'] ?? null); - $pathItem->setDescription($pathItemData['description'] ?? null); - - foreach ($pathItemData['servers'] ?? [] as $server) { - $pathItem->addServer(Server::fromArray($server)); - } - - foreach ($pathItemData['parameters'] ?? [] as $parameter) { - if (isset($parameter['$ref'])) { - $pathItem->addParameter(Reference::fromArray($parameter)); - } else { - $pathItem->addParameter(Parameter::fromArray($parameter)); - } - } - - return $pathItem; - } - - public function addParameter(Parameter|Reference $parameter): void - { - $this->params[] = $parameter; - } - - public function addServer(Server $server): void - { - $this->servers[] = $server; - } - - public function setSummary(?string $summary): void - { - $this->summary = $summary; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function setOperation(string $key, Operation $operation): void - { - if (!in_array($key, self::$allowedOperations, true)) { - return; - } - - $this->operations[$key] = $operation; - } - - public function getSummary(): ?string - { - return $this->summary; - } - - public function getDescription(): ?string - { - return $this->description; - } - - /** - * @return Parameter[]|Reference[] - */ - public function getParameters(): array - { - return $this->params; - } - - /** - * @return Server[] - */ - public function getServers(): array - { - return $this->servers; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - foreach ($this->operations as $key => $operation) { - $data[$key] = $operation->toArray(); - } - - if ($this->summary !== null) { - $data['summary'] = $this->summary; - } - - if ($this->description !== null) { - $data['description'] = $this->description; - } - - if ($this->servers !== []) { - $data['servers'] = array_map(static fn (Server $server): array => $server->toArray(), $this->servers); - } - - if ($this->params !== []) { - $data['parameters'] = array_map(static fn (Parameter|Reference $parameter): array => $parameter->toArray(), $this->params); - } - - return $data; - } - -} diff --git a/src/OpenApi/Schema/Paths.php b/src/OpenApi/Schema/Paths.php deleted file mode 100644 index ebac5349..00000000 --- a/src/OpenApi/Schema/Paths.php +++ /dev/null @@ -1,53 +0,0 @@ - $pathItemData) { - if (isset($pathItemData['$ref'])) { - $paths->setPathItem($path, Reference::fromArray($pathItemData)); - - continue; - } - - $paths->setPathItem($path, PathItem::fromArray($pathItemData)); - } - - return $paths; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - foreach ($this->paths as $key => $pathItem) { - $data[$key] = $pathItem->toArray(); - } - - return $data; - } - - public function setPathItem(string $path, PathItem|Reference $pathItem): void - { - $this->paths[$path] = $pathItem; - } - - public function getPath(string $path): PathItem|Reference|null - { - return $this->paths[$path] ?? null; - } - -} diff --git a/src/OpenApi/Schema/Reference.php b/src/OpenApi/Schema/Reference.php deleted file mode 100644 index cd939e7c..00000000 --- a/src/OpenApi/Schema/Reference.php +++ /dev/null @@ -1,76 +0,0 @@ -ref = $ref; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): Reference - { - $reference = new Reference($data['$ref']); - $reference->setSummary($data['summary'] ?? null); - $reference->setDescription($data['description'] ?? null); - - return $reference; - } - - public function setSummary(?string $summary): void - { - $this->summary = $summary; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function getRef(): string - { - return $this->ref; - } - - public function getSummary(): ?string - { - return $this->summary; - } - - public function getDescription(): ?string - { - return $this->description; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = [ - '$ref' => $this->ref, - ]; - - if ($this->summary !== null) { - $data['summary'] = $this->summary; - } - - if ($this->description !== null) { - $data['description'] = $this->description; - } - - return $data; - } - -} diff --git a/src/OpenApi/Schema/RequestBody.php b/src/OpenApi/Schema/RequestBody.php deleted file mode 100644 index ebbf7dfd..00000000 --- a/src/OpenApi/Schema/RequestBody.php +++ /dev/null @@ -1,85 +0,0 @@ -setRequired($data['required'] ?? false); - $requestBody->setDescription($data['description'] ?? null); - foreach ($data['content'] ?? [] as $key => $mediaType) { - $requestBody->addMediaType($key, MediaType::fromArray($mediaType)); - } - - return $requestBody; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - if ($this->description !== null) { - $data['description'] = $this->description; - } - - $data['content'] = []; - foreach ($this->content as $key => $mediaType) { - $data['content'][$key] = $mediaType->toArray(); - } - - if ($this->required) { - $data['required'] = true; - } - - return $data; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function setRequired(bool $required): void - { - $this->required = $required; - } - - public function addMediaType(string $key, MediaType $mediaType): void - { - $this->content[$key] = $mediaType; - } - - public function getDescription(): ?string - { - return $this->description; - } - - /** - * @return MediaType[] - */ - public function getContent(): array - { - return $this->content; - } - - public function isRequired(): bool - { - return $this->required; - } - -} diff --git a/src/OpenApi/Schema/Response.php b/src/OpenApi/Schema/Response.php deleted file mode 100644 index 1bbdb883..00000000 --- a/src/OpenApi/Schema/Response.php +++ /dev/null @@ -1,90 +0,0 @@ -description = $description; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): Response - { - $response = new Response($data['description']); - foreach ($data['headers'] ?? [] as $key => $headerData) { - if (isset($headerData['$ref'])) { - $response->setHeader($key, Reference::fromArray($headerData)); - } else { - $response->setHeader($key, Header::fromArray($headerData)); - } - } - - foreach ($data['content'] ?? [] as $key => $contentData) { - $response->setContent($key, MediaType::fromArray($contentData)); - } - - foreach ($data['links'] ?? [] as $key => $linkData) { - if (isset($linkData['$ref'])) { - $response->setLink($key, Reference::fromArray($linkData)); - } else { - $response->setLink($key, Link::fromArray($linkData)); - } - } - - return $response; - } - - public function setContent(string $type, MediaType $mediaType): void - { - $this->content[$type] = $mediaType; - } - - public function setHeader(string $key, Header|Reference $header): void - { - $this->headers[$key] = $header; - } - - public function setLink(string $key, Link|Reference $link): void - { - $this->links[$key] = $link; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - $data['description'] = $this->description; - foreach ($this->headers as $key => $header) { - $data['headers'][$key] = $header->toArray(); - } - - foreach ($this->content as $key => $mediaType) { - $data['content'][$key] = $mediaType->toArray(); - } - - foreach ($this->links as $key => $link) { - $data['links'][$key] = $link->toArray(); - } - - return $data; - } - -} diff --git a/src/OpenApi/Schema/Responses.php b/src/OpenApi/Schema/Responses.php deleted file mode 100644 index cf122d3f..00000000 --- a/src/OpenApi/Schema/Responses.php +++ /dev/null @@ -1,55 +0,0 @@ - $responseData) { - if (isset($responseData['$ref'])) { - $responses->setResponse((string) $key, Reference::fromArray($responseData)); - } else { - $responses->setResponse((string) $key, Response::fromArray($responseData)); - } - } - - return $responses; - } - - public function setResponse(string $key, Response|Reference $response): void - { - $this->responses[$key] = $response; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - foreach ($this->responses as $key => $response) { - if ($key === 'default') { - continue; - } - - $data[$key] = $response->toArray(); - } - - // Default response last - if (isset($this->responses['default'])) { - $data['default'] = $this->responses['default']->toArray(); - } - - return $data; - } - -} diff --git a/src/OpenApi/Schema/Schema.php b/src/OpenApi/Schema/Schema.php deleted file mode 100644 index 222b7711..00000000 --- a/src/OpenApi/Schema/Schema.php +++ /dev/null @@ -1,35 +0,0 @@ -data = $data; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): Schema - { - return new Schema($data); - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - return $this->data; - } - -} diff --git a/src/OpenApi/Schema/SecurityRequirement.php b/src/OpenApi/Schema/SecurityRequirement.php deleted file mode 100644 index d6635259..00000000 --- a/src/OpenApi/Schema/SecurityRequirement.php +++ /dev/null @@ -1,35 +0,0 @@ -data = $data; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): SecurityRequirement - { - return new SecurityRequirement($data); - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - return $this->data; - } - -} diff --git a/src/OpenApi/Schema/SecurityScheme.php b/src/OpenApi/Schema/SecurityScheme.php deleted file mode 100644 index 8e723b9b..00000000 --- a/src/OpenApi/Schema/SecurityScheme.php +++ /dev/null @@ -1,256 +0,0 @@ - */ - private array $flows = []; - - private ?string $openIdConnectUrl = null; - - public function __construct(string $type) - { - $this->setType($type); - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): SecurityScheme - { - $type = $data['type']; - $securityScheme = new SecurityScheme($type); - $securityScheme->setName($data['name'] ?? null); - $securityScheme->setDescription($data['description'] ?? null); - $securityScheme->setIn($data['in'] ?? null); - $securityScheme->setScheme($data['scheme'] ?? null); - $securityScheme->setBearerFormat($data['bearerFormat'] ?? null); - $securityScheme->setFlows(array_map(static fn (array $flow): OAuthFlow => OAuthFlow::fromArray($flow), $data['flows'] ?? [])); - $securityScheme->setOpenIdConnectUrl($data['openIdConnectUrl'] ?? null); - - return $securityScheme; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - $data['type'] = $this->type; - if ($this->name !== null) { - $data['name'] = $this->name; - } - - if ($this->description !== null) { - $data['description'] = $this->description; - } - - if ($this->in !== null) { - $data['in'] = $this->in; - } - - if ($this->scheme !== null) { - $data['scheme'] = $this->scheme; - } - - if ($this->bearerFormat !== null) { - $data['bearerFormat'] = $this->bearerFormat; - } - - if ($this->flows !== []) { - $data['flows'] = array_map(static fn (OAuthFlow $flow): array => $flow->toArray(), $this->flows); - } - - if ($this->openIdConnectUrl !== null) { - $data['openIdConnectUrl'] = $this->openIdConnectUrl; - } - - return $data; - } - - public function getType(): string - { - return $this->type; - } - - public function setType(string $type): void - { - if (!in_array($type, self::TYPES, true)) { - throw new InvalidArgumentException(sprintf( - 'Invalid value "%s" for attribute "type" given. It must be one of "%s".', - $type, - implode(', ', self::TYPES) - )); - } - - $this->type = $type; - } - - public function getName(): ?string - { - return $this->name; - } - - public function setName(?string $name): void - { - if ($this->type === self::TYPE_API_KEY && $name === null) { - throw new InvalidArgumentException('Attribute "name" is required for type "apiKey".'); - } - - $this->name = $name; - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function getIn(): ?string - { - return $this->in; - } - - public function setIn(?string $in): void - { - if ($this->type === self::TYPE_API_KEY && $in === null) { - throw new InvalidArgumentException('Attribute "in" is required for type "apiKey".'); - } - - if ($in === null || in_array($in, self::INS, true)) { - $this->in = $in; - - return; - } - - throw new InvalidArgumentException(sprintf( - 'Invalid value "%s" for attribute "in" given. It must be one of "%s".', - $in, - implode(', ', self::INS) - )); - } - - public function getScheme(): ?string - { - return $this->scheme; - } - - public function setScheme(?string $scheme): void - { - if ($this->type === self::TYPE_HTTP && $scheme === null) { - throw new InvalidArgumentException('Attribute "scheme" is required for type "http".'); - } - - $this->scheme = $scheme; - } - - public function getBearerFormat(): ?string - { - return $this->bearerFormat; - } - - public function setBearerFormat(?string $bearerFormat): void - { - if ($this->type === self::TYPE_HTTP && $this->scheme === 'bearer' && $bearerFormat === null) { - throw new InvalidArgumentException('Attribute "bearerFormat" is required for type "http" and scheme "bearer".'); - } - - $this->bearerFormat = $bearerFormat; - } - - /** - * @return array - */ - public function getFlows(): array - { - return $this->flows; - } - - /** - * @param array $flows - */ - public function setFlows(array $flows): void - { - if ($this->type === self::TYPE_OAUTH2 && $flows === []) { - throw new InvalidArgumentException('Attribute "flows" is required for type "oauth2".'); - } - - if ($this->type === self::TYPE_OAUTH2) { - foreach (self::FLOWS as $flow) { - if (!array_key_exists($flow, $flows)) { - throw new InvalidArgumentException(sprintf( - 'Attribute "flows" is missing required key "%s".', - $flow - )); - } - } - } - - $this->flows = $flows; - } - - public function getOpenIdConnectUrl(): ?string - { - return $this->openIdConnectUrl; - } - - public function setOpenIdConnectUrl(?string $openIdConnectUrl): void - { - if ($this->type === self::TYPE_OPEN_ID_CONNECT && $openIdConnectUrl === null) { - throw new InvalidArgumentException('Attribute "openIdConnectUrl" is required for type "openIdConnect".'); - } - - $this->openIdConnectUrl = $openIdConnectUrl; - } - -} diff --git a/src/OpenApi/Schema/Server.php b/src/OpenApi/Schema/Server.php deleted file mode 100644 index 416048cb..00000000 --- a/src/OpenApi/Schema/Server.php +++ /dev/null @@ -1,81 +0,0 @@ -url = $url; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): Server - { - $server = new Server($data['url']); - $server->setDescription($data['description'] ?? null); - foreach ($data['variables'] ?? [] as $key => $variable) { - $server->addVariable($key, ServerVariable::fromArray($variable)); - } - - return $server; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - $data['url'] = $this->url; - - if ($this->description !== null) { - $data['description'] = $this->description; - } - - foreach ($this->variables as $variableKey => $variable) { - $data['variables'][$variableKey] = $variable->toArray(); - } - - return $data; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function addVariable(string $key, ServerVariable $variable): void - { - $this->variables[$key] = $variable; - } - - public function getUrl(): string - { - return $this->url; - } - - public function getDescription(): ?string - { - return $this->description; - } - - /** - * @return ServerVariable[] - */ - public function getVariables(): array - { - return $this->variables; - } - -} diff --git a/src/OpenApi/Schema/ServerVariable.php b/src/OpenApi/Schema/ServerVariable.php deleted file mode 100644 index d219a0e0..00000000 --- a/src/OpenApi/Schema/ServerVariable.php +++ /dev/null @@ -1,83 +0,0 @@ -default = $default; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): ServerVariable - { - $variable = new ServerVariable($data['default']); - $variable->setDescription($data['description'] ?? null); - $variable->setEnum($data['enum'] ?? []); - - return $variable; - } - - /** - * @param string[] $enum - */ - public function setEnum(array $enum): void - { - $this->enum = $enum; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - /** - * @return string[] - */ - public function getEnum(): array - { - return $this->enum; - } - - public function getDefault(): string - { - return $this->default; - } - - public function getDescription(): ?string - { - return $this->description; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - - if ($this->enum !== []) { - $data['enum'] = $this->enum; - } - - $data['default'] = $this->default; - - if ($this->description !== null) { - $data['description'] = $this->description; - } - - return $data; - } - -} diff --git a/src/OpenApi/Schema/Tag.php b/src/OpenApi/Schema/Tag.php deleted file mode 100644 index a85fa9d0..00000000 --- a/src/OpenApi/Schema/Tag.php +++ /dev/null @@ -1,76 +0,0 @@ -name = $name; - } - - /** - * @param mixed[] $data - */ - public static function fromArray(array $data): Tag - { - $tag = new Tag($data['name']); - $tag->setDescription($data['description'] ?? null); - $tag->setExternalDocs(isset($data['externalDocs']) ? ExternalDocumentation::fromArray($data['externalDocs']) : null); - - return $tag; - } - - /** - * @return mixed[] - */ - public function toArray(): array - { - $data = []; - $data['name'] = $this->name; - - // Optional - if ($this->description !== null) { - $data['description'] = $this->description; - } - - if ($this->externalDocs !== null) { - $data['externalDocs'] = $this->externalDocs->toArray(); - } - - return $data; - } - - public function setDescription(?string $description): void - { - $this->description = $description; - } - - public function setExternalDocs(?ExternalDocumentation $externalDocs): void - { - $this->externalDocs = $externalDocs; - } - - public function getName(): string - { - return $this->name; - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function getExternalDocs(): ?ExternalDocumentation - { - return $this->externalDocs; - } - -} diff --git a/src/OpenApi/SchemaBuilder.php b/src/OpenApi/SchemaBuilder.php index ac5d3271..d9a8b41a 100644 --- a/src/OpenApi/SchemaBuilder.php +++ b/src/OpenApi/SchemaBuilder.php @@ -2,9 +2,9 @@ namespace Apitte\OpenApi; -use Apitte\OpenApi\Schema\OpenApi; use Apitte\OpenApi\SchemaDefinition\IDefinition; -use Apitte\OpenApi\Utils\Helpers; +use Contributte\OpenApi\Schema\OpenApi; +use Contributte\OpenApi\Utils\Helpers; class SchemaBuilder implements ISchemaBuilder { diff --git a/src/OpenApi/SchemaDefinition/CoreDefinition.php b/src/OpenApi/SchemaDefinition/CoreDefinition.php index a52af903..e541407f 100644 --- a/src/OpenApi/SchemaDefinition/CoreDefinition.php +++ b/src/OpenApi/SchemaDefinition/CoreDefinition.php @@ -8,7 +8,7 @@ use Apitte\Core\Schema\EndpointResponse; use Apitte\Core\Schema\Schema as ApiSchema; use Apitte\OpenApi\SchemaDefinition\Entity\IEntityAdapter; -use Apitte\OpenApi\Utils\Helpers; +use Contributte\OpenApi\Utils\Helpers; class CoreDefinition implements IDefinition { diff --git a/src/OpenApi/SchemaType/BaseSchemaType.php b/src/OpenApi/SchemaType/BaseSchemaType.php index 3c17f7f0..c55f5efe 100644 --- a/src/OpenApi/SchemaType/BaseSchemaType.php +++ b/src/OpenApi/SchemaType/BaseSchemaType.php @@ -3,7 +3,7 @@ namespace Apitte\OpenApi\SchemaType; use Apitte\Core\Schema\EndpointParameter; -use Apitte\OpenApi\Schema\Schema; +use Contributte\OpenApi\Schema\Schema; class BaseSchemaType implements ISchemaType { diff --git a/src/OpenApi/SchemaType/ISchemaType.php b/src/OpenApi/SchemaType/ISchemaType.php index 93d593de..33c2bbc4 100644 --- a/src/OpenApi/SchemaType/ISchemaType.php +++ b/src/OpenApi/SchemaType/ISchemaType.php @@ -3,7 +3,7 @@ namespace Apitte\OpenApi\SchemaType; use Apitte\Core\Schema\EndpointParameter; -use Apitte\OpenApi\Schema\Schema; +use Contributte\OpenApi\Schema\Schema; interface ISchemaType { diff --git a/src/OpenApi/Tracy/SwaggerUIPanel.php b/src/OpenApi/Tracy/SwaggerUIPanel.php deleted file mode 100644 index 2903d90c..00000000 --- a/src/OpenApi/Tracy/SwaggerUIPanel.php +++ /dev/null @@ -1,81 +0,0 @@ -schemaBuilder = $schemaBuilder; - } - - public function setUrl(?string $url): void - { - $this->url = $url; - } - - public function setExpansion(string $expansion): void - { - $this->expansion = $expansion; - } - - public function setFilter(string|bool $filter): void - { - $this->filter = $filter; - } - - public function setTitle(string $title): void - { - $this->title = $title; - } - - /** - * Renders HTML code for custom tab. - */ - public function getTab(): string - { - return ' ' . $this->title . ' '; - } - - /** - * Renders HTML code for custom panel. - */ - public function getPanel(): string - { - ob_start(); - // @codingStandardsIgnoreStart - $spec = $this->schemaBuilder->build()->toArray(); - $url = $this->url; - $expansion = $this->expansion; - $filter = $this->filter; - // @codingStandardsIgnoreEnd - require __DIR__ . '/templates/panel.phtml'; - - return (string) ob_get_clean(); - } - -} diff --git a/src/OpenApi/Tracy/templates/assets/swagger-ui-bundle.js b/src/OpenApi/Tracy/templates/assets/swagger-ui-bundle.js deleted file mode 100644 index 00f15c53..00000000 --- a/src/OpenApi/Tracy/templates/assets/swagger-ui-bundle.js +++ /dev/null @@ -1,134 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(function(){try{return require("esprima")}catch(e){}}()):"function"==typeof define&&define.amd?define(["esprima"],t):"object"==typeof exports?exports.SwaggerUIBundle=t(function(){try{return require("esprima")}catch(e){}}()):e.SwaggerUIBundle=t(e.esprima)}(window,function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=488)}([function(e,t,n){"use strict";e.exports=n(104)},function(e,t,n){e.exports=function(){"use strict";var e=Array.prototype.slice;function t(e,t){t&&(e.prototype=Object.create(t.prototype)),e.prototype.constructor=e}function n(e){return a(e)?e:J(e)}function r(e){return s(e)?e:K(e)}function o(e){return u(e)?e:Y(e)}function i(e){return a(e)&&!c(e)?e:$(e)}function a(e){return!(!e||!e[p])}function s(e){return!(!e||!e[f])}function u(e){return!(!e||!e[h])}function c(e){return s(e)||u(e)}function l(e){return!(!e||!e[d])}t(r,n),t(o,n),t(i,n),n.isIterable=a,n.isKeyed=s,n.isIndexed=u,n.isAssociative=c,n.isOrdered=l,n.Keyed=r,n.Indexed=o,n.Set=i;var p="@@__IMMUTABLE_ITERABLE__@@",f="@@__IMMUTABLE_KEYED__@@",h="@@__IMMUTABLE_INDEXED__@@",d="@@__IMMUTABLE_ORDERED__@@",m=5,v=1<>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?C(e)+t:t}function O(){return!0}function A(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function T(e,t){return P(e,t,0)}function j(e,t){return P(e,t,t)}function P(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:Math.min(t,e)}var I=0,M=1,N=2,R="function"==typeof Symbol&&Symbol.iterator,D="@@iterator",L=R||D;function U(e){this.next=e}function q(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function F(){return{value:void 0,done:!0}}function B(e){return!!H(e)}function z(e){return e&&"function"==typeof e.next}function V(e){var t=H(e);return t&&t.call(e)}function H(e){var t=e&&(R&&e[R]||e[D]);if("function"==typeof t)return t}function W(e){return e&&"number"==typeof e.length}function J(e){return null==e?ie():a(e)?e.toSeq():function(e){var t=ue(e)||"object"==typeof e&&new te(e);if(!t)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+e);return t}(e)}function K(e){return null==e?ie().toKeyedSeq():a(e)?s(e)?e.toSeq():e.fromEntrySeq():ae(e)}function Y(e){return null==e?ie():a(e)?s(e)?e.entrySeq():e.toIndexedSeq():se(e)}function $(e){return(null==e?ie():a(e)?s(e)?e.entrySeq():e:se(e)).toSetSeq()}U.prototype.toString=function(){return"[Iterator]"},U.KEYS=I,U.VALUES=M,U.ENTRIES=N,U.prototype.inspect=U.prototype.toSource=function(){return this.toString()},U.prototype[L]=function(){return this},t(J,n),J.of=function(){return J(arguments)},J.prototype.toSeq=function(){return this},J.prototype.toString=function(){return this.__toString("Seq {","}")},J.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},J.prototype.__iterate=function(e,t){return ce(this,e,t,!0)},J.prototype.__iterator=function(e,t){return le(this,e,t,!0)},t(K,J),K.prototype.toKeyedSeq=function(){return this},t(Y,J),Y.of=function(){return Y(arguments)},Y.prototype.toIndexedSeq=function(){return this},Y.prototype.toString=function(){return this.__toString("Seq [","]")},Y.prototype.__iterate=function(e,t){return ce(this,e,t,!1)},Y.prototype.__iterator=function(e,t){return le(this,e,t,!1)},t($,J),$.of=function(){return $(arguments)},$.prototype.toSetSeq=function(){return this},J.isSeq=oe,J.Keyed=K,J.Set=$,J.Indexed=Y;var G,Z,X,Q="@@__IMMUTABLE_SEQ__@@";function ee(e){this._array=e,this.size=e.length}function te(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}function ne(e){this._iterable=e,this.size=e.length||e.size}function re(e){this._iterator=e,this._iteratorCache=[]}function oe(e){return!(!e||!e[Q])}function ie(){return G||(G=new ee([]))}function ae(e){var t=Array.isArray(e)?new ee(e).fromEntrySeq():z(e)?new re(e).fromEntrySeq():B(e)?new ne(e).fromEntrySeq():"object"==typeof e?new te(e):void 0;if(!t)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+e);return t}function se(e){var t=ue(e);if(!t)throw new TypeError("Expected Array or iterable object of values: "+e);return t}function ue(e){return W(e)?new ee(e):z(e)?new re(e):B(e)?new ne(e):void 0}function ce(e,t,n,r){var o=e._cache;if(o){for(var i=o.length-1,a=0;a<=i;a++){var s=o[n?i-a:a];if(!1===t(s[1],r?s[0]:a,e))return a+1}return a}return e.__iterateUncached(t,n)}function le(e,t,n,r){var o=e._cache;if(o){var i=o.length-1,a=0;return new U(function(){var e=o[n?i-a:a];return a++>i?{value:void 0,done:!0}:q(t,r?e[0]:a-1,e[1])})}return e.__iteratorUncached(t,n)}function pe(e,t){return t?function e(t,n,r,o){return Array.isArray(n)?t.call(o,r,Y(n).map(function(r,o){return e(t,r,o,n)})):he(n)?t.call(o,r,K(n).map(function(r,o){return e(t,r,o,n)})):n}(t,e,"",{"":e}):fe(e)}function fe(e){return Array.isArray(e)?Y(e).map(fe).toList():he(e)?K(e).map(fe).toMap():e}function he(e){return e&&(e.constructor===Object||void 0===e.constructor)}function de(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if((e=e.valueOf())===(t=t.valueOf())||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!("function"!=typeof e.equals||"function"!=typeof t.equals||!e.equals(t))}function me(e,t){if(e===t)return!0;if(!a(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||s(e)!==s(t)||u(e)!==u(t)||l(e)!==l(t))return!1;if(0===e.size&&0===t.size)return!0;var n=!c(e);if(l(e)){var r=e.entries();return t.every(function(e,t){var o=r.next().value;return o&&de(o[1],e)&&(n||de(o[0],t))})&&r.next().done}var o=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{o=!0;var i=e;e=t,t=i}var p=!0,f=t.__iterate(function(t,r){if(n?!e.has(t):o?!de(t,e.get(r,y)):!de(e.get(r,y),t))return p=!1,!1});return p&&e.size===f}function ve(e,t){if(!(this instanceof ve))return new ve(e,t);if(this._value=e,this.size=void 0===t?1/0:Math.max(0,t),0===this.size){if(Z)return Z;Z=this}}function ge(e,t){if(!e)throw new Error(t)}function ye(e,t,n){if(!(this instanceof ye))return new ye(e,t,n);if(ge(0!==n,"Cannot step a Range by 0"),e=e||0,void 0===t&&(t=1/0),n=void 0===n?1:Math.abs(n),tr?{value:void 0,done:!0}:q(e,o,n[t?r-o++:o++])})},t(te,K),te.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},te.prototype.has=function(e){return this._object.hasOwnProperty(e)},te.prototype.__iterate=function(e,t){for(var n=this._object,r=this._keys,o=r.length-1,i=0;i<=o;i++){var a=r[t?o-i:i];if(!1===e(n[a],a,this))return i+1}return i},te.prototype.__iterator=function(e,t){var n=this._object,r=this._keys,o=r.length-1,i=0;return new U(function(){var a=r[t?o-i:i];return i++>o?{value:void 0,done:!0}:q(e,a,n[a])})},te.prototype[d]=!0,t(ne,Y),ne.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var n=V(this._iterable),r=0;if(z(n))for(var o;!(o=n.next()).done&&!1!==e(o.value,r++,this););return r},ne.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=V(this._iterable);if(!z(n))return new U(F);var r=0;return new U(function(){var t=n.next();return t.done?t:q(e,r++,t.value)})},t(re,Y),re.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);for(var n,r=this._iterator,o=this._iteratorCache,i=0;i=r.length){var t=n.next();if(t.done)return t;r[o]=t.value}return q(e,o,r[o++])})},t(ve,Y),ve.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},ve.prototype.get=function(e,t){return this.has(e)?this._value:t},ve.prototype.includes=function(e){return de(this._value,e)},ve.prototype.slice=function(e,t){var n=this.size;return A(e,t,n)?this:new ve(this._value,j(t,n)-T(e,n))},ve.prototype.reverse=function(){return this},ve.prototype.indexOf=function(e){return de(this._value,e)?0:-1},ve.prototype.lastIndexOf=function(e){return de(this._value,e)?this.size:-1},ve.prototype.__iterate=function(e,t){for(var n=0;n=0&&t=0&&nn?{value:void 0,done:!0}:q(e,i++,a)})},ye.prototype.equals=function(e){return e instanceof ye?this._start===e._start&&this._end===e._end&&this._step===e._step:me(this,e)},t(be,n),t(_e,be),t(we,be),t(xe,be),be.Keyed=_e,be.Indexed=we,be.Set=xe;var Ee="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var n=65535&(e|=0),r=65535&(t|=0);return n*r+((e>>>16)*r+n*(t>>>16)<<16>>>0)|0};function Se(e){return e>>>1&1073741824|3221225471&e}function Ce(e){if(!1===e||null==e)return 0;if("function"==typeof e.valueOf&&(!1===(e=e.valueOf())||null==e))return 0;if(!0===e)return 1;var t=typeof e;if("number"===t){if(e!=e||e===1/0)return 0;var n=0|e;for(n!==e&&(n^=4294967295*e);e>4294967295;)n^=e/=4294967295;return Se(n)}if("string"===t)return e.length>Me?function(e){var t=De[e];return void 0===t&&(t=ke(e),Re===Ne&&(Re=0,De={}),Re++,De[e]=t),t}(e):ke(e);if("function"==typeof e.hashCode)return e.hashCode();if("object"===t)return function(e){var t;if(je&&void 0!==(t=Oe.get(e)))return t;if(void 0!==(t=e[Ie]))return t;if(!Te){if(void 0!==(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[Ie]))return t;if(void 0!==(t=function(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}(e)))return t}if(t=++Pe,1073741824&Pe&&(Pe=0),je)Oe.set(e,t);else{if(void 0!==Ae&&!1===Ae(e))throw new Error("Non-extensible objects are not allowed as keys.");if(Te)Object.defineProperty(e,Ie,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(void 0!==e.propertyIsEnumerable&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[Ie]=t;else{if(void 0===e.nodeType)throw new Error("Unable to set a non-enumerable property on object.");e[Ie]=t}}return t}(e);if("function"==typeof e.toString)return ke(e.toString());throw new Error("Value type "+t+" cannot be hashed.")}function ke(e){for(var t=0,n=0;n=t.length)throw new Error("Missing value for key: "+t[n]);e.set(t[n],t[n+1])}})},Ue.prototype.toString=function(){return this.__toString("Map {","}")},Ue.prototype.get=function(e,t){return this._root?this._root.get(0,void 0,e,t):t},Ue.prototype.set=function(e,t){return Qe(this,e,t)},Ue.prototype.setIn=function(e,t){return this.updateIn(e,y,function(){return t})},Ue.prototype.remove=function(e){return Qe(this,e,y)},Ue.prototype.deleteIn=function(e){return this.updateIn(e,function(){return y})},Ue.prototype.update=function(e,t,n){return 1===arguments.length?e(this):this.updateIn([e],t,n)},Ue.prototype.updateIn=function(e,t,n){n||(n=t,t=void 0);var r=function e(t,n,r,o){var i=t===y,a=n.next();if(a.done){var s=i?r:t,u=o(s);return u===s?t:u}ge(i||t&&t.set,"invalid keyPath");var c=a.value,l=i?y:t.get(c,y),p=e(l,n,r,o);return p===l?t:p===y?t.remove(c):(i?Xe():t).set(c,p)}(this,rn(e),t,n);return r===y?void 0:r},Ue.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Xe()},Ue.prototype.merge=function(){return rt(this,void 0,arguments)},Ue.prototype.mergeWith=function(t){var n=e.call(arguments,1);return rt(this,t,n)},Ue.prototype.mergeIn=function(t){var n=e.call(arguments,1);return this.updateIn(t,Xe(),function(e){return"function"==typeof e.merge?e.merge.apply(e,n):n[n.length-1]})},Ue.prototype.mergeDeep=function(){return rt(this,ot,arguments)},Ue.prototype.mergeDeepWith=function(t){var n=e.call(arguments,1);return rt(this,it(t),n)},Ue.prototype.mergeDeepIn=function(t){var n=e.call(arguments,1);return this.updateIn(t,Xe(),function(e){return"function"==typeof e.mergeDeep?e.mergeDeep.apply(e,n):n[n.length-1]})},Ue.prototype.sort=function(e){return Tt(Jt(this,e))},Ue.prototype.sortBy=function(e,t){return Tt(Jt(this,t,e))},Ue.prototype.withMutations=function(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this},Ue.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new E)},Ue.prototype.asImmutable=function(){return this.__ensureOwner()},Ue.prototype.wasAltered=function(){return this.__altered},Ue.prototype.__iterator=function(e,t){return new Ye(this,e,t)},Ue.prototype.__iterate=function(e,t){var n=this,r=0;return this._root&&this._root.iterate(function(t){return r++,e(t[1],t[0],n)},t),r},Ue.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Ze(this.size,this._root,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},Ue.isMap=qe;var Fe,Be="@@__IMMUTABLE_MAP__@@",ze=Ue.prototype;function Ve(e,t){this.ownerID=e,this.entries=t}function He(e,t,n){this.ownerID=e,this.bitmap=t,this.nodes=n}function We(e,t,n){this.ownerID=e,this.count=t,this.nodes=n}function Je(e,t,n){this.ownerID=e,this.keyHash=t,this.entries=n}function Ke(e,t,n){this.ownerID=e,this.keyHash=t,this.entry=n}function Ye(e,t,n){this._type=t,this._reverse=n,this._stack=e._root&&Ge(e._root)}function $e(e,t){return q(e,t[0],t[1])}function Ge(e,t){return{node:e,index:0,__prev:t}}function Ze(e,t,n,r){var o=Object.create(ze);return o.size=e,o._root=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Xe(){return Fe||(Fe=Ze(0))}function Qe(e,t,n){var r,o;if(e._root){var i=w(b),a=w(_);if(r=et(e._root,e.__ownerID,0,void 0,t,n,i,a),!a.value)return e;o=e.size+(i.value?n===y?-1:1:0)}else{if(n===y)return e;o=1,r=new Ve(e.__ownerID,[[t,n]])}return e.__ownerID?(e.size=o,e._root=r,e.__hash=void 0,e.__altered=!0,e):r?Ze(o,r):Xe()}function et(e,t,n,r,o,i,a,s){return e?e.update(t,n,r,o,i,a,s):i===y?e:(x(s),x(a),new Ke(t,r,[o,i]))}function tt(e){return e.constructor===Ke||e.constructor===Je}function nt(e,t,n,r,o){if(e.keyHash===r)return new Je(t,r,[e.entry,o]);var i,a=(0===n?e.keyHash:e.keyHash>>>n)&g,s=(0===n?r:r>>>n)&g;return new He(t,1<>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)}function ut(e,t,n,r){var o=r?e:S(e);return o[t]=n,o}ze[Be]=!0,ze.delete=ze.remove,ze.removeIn=ze.deleteIn,Ve.prototype.get=function(e,t,n,r){for(var o=this.entries,i=0,a=o.length;i=ct)return function(e,t,n,r){e||(e=new E);for(var o=new Ke(e,Ce(n),[n,r]),i=0;i>>e)&g),i=this.bitmap;return 0==(i&o)?r:this.nodes[st(i&o-1)].get(e+m,t,n,r)},He.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=Ce(r));var s=(0===t?n:n>>>t)&g,u=1<=lt)return function(e,t,n,r,o){for(var i=0,a=new Array(v),s=0;0!==n;s++,n>>>=1)a[s]=1&n?t[i++]:void 0;return a[r]=o,new We(e,i+1,a)}(e,f,c,s,d);if(l&&!d&&2===f.length&&tt(f[1^p]))return f[1^p];if(l&&d&&1===f.length&&tt(d))return d;var b=e&&e===this.ownerID,_=l?d?c:c^u:c|u,w=l?d?ut(f,p,d,b):function(e,t,n){var r=e.length-1;if(n&&t===r)return e.pop(),e;for(var o=new Array(r),i=0,a=0;a>>e)&g,i=this.nodes[o];return i?i.get(e+m,t,n,r):r},We.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=Ce(r));var s=(0===t?n:n>>>t)&g,u=o===y,c=this.nodes,l=c[s];if(u&&!l)return this;var p=et(l,e,t+m,n,r,o,i,a);if(p===l)return this;var f=this.count;if(l){if(!p&&--f0&&r=0&&e=e.size||t<0)return e.withMutations(function(e){t<0?kt(e,t).set(0,n):kt(e,0,t+1).set(t,n)});t+=e._origin;var r=e._tail,o=e._root,i=w(_);return t>=At(e._capacity)?r=Et(r,e.__ownerID,0,t,n,i):o=Et(o,e.__ownerID,e._level,t,n,i),i.value?e.__ownerID?(e._root=o,e._tail=r,e.__hash=void 0,e.__altered=!0,e):wt(e._origin,e._capacity,e._level,o,r):e}(this,e,t)},ft.prototype.remove=function(e){return this.has(e)?0===e?this.shift():e===this.size-1?this.pop():this.splice(e,1):this},ft.prototype.insert=function(e,t){return this.splice(e,0,t)},ft.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=m,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):xt()},ft.prototype.push=function(){var e=arguments,t=this.size;return this.withMutations(function(n){kt(n,0,t+e.length);for(var r=0;r>>t&g;if(r>=this.array.length)return new vt([],e);var o,i=0===r;if(t>0){var a=this.array[r];if((o=a&&a.removeBefore(e,t-m,n))===a&&i)return this}if(i&&!o)return this;var s=St(this,e);if(!i)for(var u=0;u>>t&g;if(o>=this.array.length)return this;if(t>0){var i=this.array[o];if((r=i&&i.removeAfter(e,t-m,n))===i&&o===this.array.length-1)return this}var a=St(this,e);return a.array.splice(o+1),r&&(a.array[o]=r),a};var gt,yt,bt={};function _t(e,t){var n=e._origin,r=e._capacity,o=At(r),i=e._tail;return a(e._root,e._level,0);function a(e,s,u){return 0===s?function(e,a){var s=a===o?i&&i.array:e&&e.array,u=a>n?0:n-a,c=r-a;return c>v&&(c=v),function(){if(u===c)return bt;var e=t?--c:u++;return s&&s[e]}}(e,u):function(e,o,i){var s,u=e&&e.array,c=i>n?0:n-i>>o,l=1+(r-i>>o);return l>v&&(l=v),function(){for(;;){if(s){var e=s();if(e!==bt)return e;s=null}if(c===l)return bt;var n=t?--l:c++;s=a(u&&u[n],o-m,i+(n<>>n&g,u=e&&s0){var c=e&&e.array[s],l=Et(c,t,n-m,r,o,i);return l===c?e:((a=St(e,t)).array[s]=l,a)}return u&&e.array[s]===o?e:(x(i),a=St(e,t),void 0===o&&s===a.array.length-1?a.array.pop():a.array[s]=o,a)}function St(e,t){return t&&e&&t===e.ownerID?e:new vt(e?e.array.slice():[],t)}function Ct(e,t){if(t>=At(e._capacity))return e._tail;if(t<1<0;)n=n.array[t>>>r&g],r-=m;return n}}function kt(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__ownerID||new E,o=e._origin,i=e._capacity,a=o+t,s=void 0===n?i:n<0?i+n:o+n;if(a===o&&s===i)return e;if(a>=s)return e.clear();for(var u=e._level,c=e._root,l=0;a+l<0;)c=new vt(c&&c.array.length?[void 0,c]:[],r),l+=1<<(u+=m);l&&(a+=l,o+=l,s+=l,i+=l);for(var p=At(i),f=At(s);f>=1<p?new vt([],r):h;if(h&&f>p&&am;y-=m){var b=p>>>y&g;v=v.array[b]=St(v.array[b],r)}v.array[p>>>m&g]=h}if(s=f)a-=f,s-=f,u=m,c=null,d=d&&d.removeBefore(r,0,a);else if(a>o||f>>u&g;if(_!==f>>>u&g)break;_&&(l+=(1<o&&(c=c.removeBefore(r,u,a-l)),c&&fi&&(i=c.size),a(u)||(c=c.map(function(e){return pe(e)})),r.push(c)}return i>e.size&&(e=e.setSize(i)),at(e,t,r)}function At(e){return e>>m<=v&&a.size>=2*i.size?(r=(o=a.filter(function(e,t){return void 0!==e&&s!==t})).toKeyedSeq().map(function(e){return e[0]}).flip().toMap(),e.__ownerID&&(r.__ownerID=o.__ownerID=e.__ownerID)):(r=i.remove(t),o=s===a.size-1?a.pop():a.set(s,void 0))}else if(u){if(n===a.get(s)[1])return e;r=i,o=a.set(s,[t,n])}else r=i.set(t,a.size),o=a.set(a.size,[t,n]);return e.__ownerID?(e.size=r.size,e._map=r,e._list=o,e.__hash=void 0,e):Pt(r,o)}function Nt(e,t){this._iter=e,this._useKeys=t,this.size=e.size}function Rt(e){this._iter=e,this.size=e.size}function Dt(e){this._iter=e,this.size=e.size}function Lt(e){this._iter=e,this.size=e.size}function Ut(e){var t=en(e);return t._iter=e,t.size=e.size,t.flip=function(){return e},t.reverse=function(){var t=e.reverse.apply(this);return t.flip=function(){return e.reverse()},t},t.has=function(t){return e.includes(t)},t.includes=function(t){return e.has(t)},t.cacheResult=tn,t.__iterateUncached=function(t,n){var r=this;return e.__iterate(function(e,n){return!1!==t(n,e,r)},n)},t.__iteratorUncached=function(t,n){if(t===N){var r=e.__iterator(t,n);return new U(function(){var e=r.next();if(!e.done){var t=e.value[0];e.value[0]=e.value[1],e.value[1]=t}return e})}return e.__iterator(t===M?I:M,n)},t}function qt(e,t,n){var r=en(e);return r.size=e.size,r.has=function(t){return e.has(t)},r.get=function(r,o){var i=e.get(r,y);return i===y?o:t.call(n,i,r,e)},r.__iterateUncached=function(r,o){var i=this;return e.__iterate(function(e,o,a){return!1!==r(t.call(n,e,o,a),o,i)},o)},r.__iteratorUncached=function(r,o){var i=e.__iterator(N,o);return new U(function(){var o=i.next();if(o.done)return o;var a=o.value,s=a[0];return q(r,s,t.call(n,a[1],s,e),o)})},r}function Ft(e,t){var n=en(e);return n._iter=e,n.size=e.size,n.reverse=function(){return e},e.flip&&(n.flip=function(){var t=Ut(e);return t.reverse=function(){return e.flip()},t}),n.get=function(n,r){return e.get(t?n:-1-n,r)},n.has=function(n){return e.has(t?n:-1-n)},n.includes=function(t){return e.includes(t)},n.cacheResult=tn,n.__iterate=function(t,n){var r=this;return e.__iterate(function(e,n){return t(e,n,r)},!n)},n.__iterator=function(t,n){return e.__iterator(t,!n)},n}function Bt(e,t,n,r){var o=en(e);return r&&(o.has=function(r){var o=e.get(r,y);return o!==y&&!!t.call(n,o,r,e)},o.get=function(r,o){var i=e.get(r,y);return i!==y&&t.call(n,i,r,e)?i:o}),o.__iterateUncached=function(o,i){var a=this,s=0;return e.__iterate(function(e,i,u){if(t.call(n,e,i,u))return s++,o(e,r?i:s-1,a)},i),s},o.__iteratorUncached=function(o,i){var a=e.__iterator(N,i),s=0;return new U(function(){for(;;){var i=a.next();if(i.done)return i;var u=i.value,c=u[0],l=u[1];if(t.call(n,l,c,e))return q(o,r?c:s++,l,i)}})},o}function zt(e,t,n,r){var o=e.size;if(void 0!==t&&(t|=0),void 0!==n&&(n===1/0?n=o:n|=0),A(t,n,o))return e;var i=T(t,o),a=j(n,o);if(i!=i||a!=a)return zt(e.toSeq().cacheResult(),t,n,r);var s,u=a-i;u==u&&(s=u<0?0:u);var c=en(e);return c.size=0===s?s:e.size&&s||void 0,!r&&oe(e)&&s>=0&&(c.get=function(t,n){return(t=k(this,t))>=0&&ts)return{value:void 0,done:!0};var e=o.next();return r||t===M?e:q(t,u-1,t===I?void 0:e.value[1],e)})},c}function Vt(e,t,n,r){var o=en(e);return o.__iterateUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterate(o,i);var s=!0,u=0;return e.__iterate(function(e,i,c){if(!s||!(s=t.call(n,e,i,c)))return u++,o(e,r?i:u-1,a)}),u},o.__iteratorUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterator(o,i);var s=e.__iterator(N,i),u=!0,c=0;return new U(function(){var e,i,l;do{if((e=s.next()).done)return r||o===M?e:q(o,c++,o===I?void 0:e.value[1],e);var p=e.value;i=p[0],l=p[1],u&&(u=t.call(n,l,i,a))}while(u);return o===N?e:q(o,i,l,e)})},o}function Ht(e,t){var n=s(e),o=[e].concat(t).map(function(e){return a(e)?n&&(e=r(e)):e=n?ae(e):se(Array.isArray(e)?e:[e]),e}).filter(function(e){return 0!==e.size});if(0===o.length)return e;if(1===o.length){var i=o[0];if(i===e||n&&s(i)||u(e)&&u(i))return i}var c=new ee(o);return n?c=c.toKeyedSeq():u(e)||(c=c.toSetSeq()),(c=c.flatten(!0)).size=o.reduce(function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}},0),c}function Wt(e,t,n){var r=en(e);return r.__iterateUncached=function(r,o){var i=0,s=!1;return function e(u,c){var l=this;u.__iterate(function(o,u){return(!t||c0}function $t(e,t,r){var o=en(e);return o.size=new ee(r).map(function(e){return e.size}).min(),o.__iterate=function(e,t){for(var n,r=this.__iterator(M,t),o=0;!(n=r.next()).done&&!1!==e(n.value,o++,this););return o},o.__iteratorUncached=function(e,o){var i=r.map(function(e){return e=n(e),V(o?e.reverse():e)}),a=0,s=!1;return new U(function(){var n;return s||(n=i.map(function(e){return e.next()}),s=n.some(function(e){return e.done})),s?{value:void 0,done:!0}:q(e,a++,t.apply(null,n.map(function(e){return e.value})))})},o}function Gt(e,t){return oe(e)?t:e.constructor(t)}function Zt(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function Xt(e){return Le(e.size),C(e)}function Qt(e){return s(e)?r:u(e)?o:i}function en(e){return Object.create((s(e)?K:u(e)?Y:$).prototype)}function tn(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):J.prototype.cacheResult.call(this)}function nn(e,t){return e>t?1:e=0;n--)t={value:arguments[n],next:t};return this.__ownerID?(this.size=e,this._head=t,this.__hash=void 0,this.__altered=!0,this):An(e,t)},En.prototype.pushAll=function(e){if(0===(e=o(e)).size)return this;Le(e.size);var t=this.size,n=this._head;return e.reverse().forEach(function(e){t++,n={value:e,next:n}}),this.__ownerID?(this.size=t,this._head=n,this.__hash=void 0,this.__altered=!0,this):An(t,n)},En.prototype.pop=function(){return this.slice(1)},En.prototype.unshift=function(){return this.push.apply(this,arguments)},En.prototype.unshiftAll=function(e){return this.pushAll(e)},En.prototype.shift=function(){return this.pop.apply(this,arguments)},En.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Tn()},En.prototype.slice=function(e,t){if(A(e,t,this.size))return this;var n=T(e,this.size);if(j(t,this.size)!==this.size)return we.prototype.slice.call(this,e,t);for(var r=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=r,this._head=o,this.__hash=void 0,this.__altered=!0,this):An(r,o)},En.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?An(this.size,this._head,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},En.prototype.__iterate=function(e,t){if(t)return this.reverse().__iterate(e);for(var n=0,r=this._head;r&&!1!==e(r.value,n++,this);)r=r.next;return n},En.prototype.__iterator=function(e,t){if(t)return this.reverse().__iterator(e);var n=0,r=this._head;return new U(function(){if(r){var t=r.value;return r=r.next,q(e,n++,t)}return{value:void 0,done:!0}})},En.isStack=Sn;var Cn,kn="@@__IMMUTABLE_STACK__@@",On=En.prototype;function An(e,t,n,r){var o=Object.create(On);return o.size=e,o._head=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Tn(){return Cn||(Cn=An(0))}function jn(e,t){var n=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(n),e}On[kn]=!0,On.withMutations=ze.withMutations,On.asMutable=ze.asMutable,On.asImmutable=ze.asImmutable,On.wasAltered=ze.wasAltered,n.Iterator=U,jn(n,{toArray:function(){Le(this.size);var e=new Array(this.size||0);return this.valueSeq().__iterate(function(t,n){e[n]=t}),e},toIndexedSeq:function(){return new Rt(this)},toJS:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJS?e.toJS():e}).__toJS()},toJSON:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJSON?e.toJSON():e}).__toJS()},toKeyedSeq:function(){return new Nt(this,!0)},toMap:function(){return Ue(this.toKeyedSeq())},toObject:function(){Le(this.size);var e={};return this.__iterate(function(t,n){e[n]=t}),e},toOrderedMap:function(){return Tt(this.toKeyedSeq())},toOrderedSet:function(){return gn(s(this)?this.valueSeq():this)},toSet:function(){return cn(s(this)?this.valueSeq():this)},toSetSeq:function(){return new Dt(this)},toSeq:function(){return u(this)?this.toIndexedSeq():s(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return En(s(this)?this.valueSeq():this)},toList:function(){return ft(s(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(e,t){return 0===this.size?e+t:e+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+t},concat:function(){var t=e.call(arguments,0);return Gt(this,Ht(this,t))},includes:function(e){return this.some(function(t){return de(t,e)})},entries:function(){return this.__iterator(N)},every:function(e,t){Le(this.size);var n=!0;return this.__iterate(function(r,o,i){if(!e.call(t,r,o,i))return n=!1,!1}),n},filter:function(e,t){return Gt(this,Bt(this,e,t,!0))},find:function(e,t,n){var r=this.findEntry(e,t);return r?r[1]:n},forEach:function(e,t){return Le(this.size),this.__iterate(t?e.bind(t):e)},join:function(e){Le(this.size),e=void 0!==e?""+e:",";var t="",n=!0;return this.__iterate(function(r){n?n=!1:t+=e,t+=null!=r?r.toString():""}),t},keys:function(){return this.__iterator(I)},map:function(e,t){return Gt(this,qt(this,e,t))},reduce:function(e,t,n){var r,o;return Le(this.size),arguments.length<2?o=!0:r=t,this.__iterate(function(t,i,a){o?(o=!1,r=t):r=e.call(n,r,t,i,a)}),r},reduceRight:function(e,t,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return Gt(this,Ft(this,!0))},slice:function(e,t){return Gt(this,zt(this,e,t,!0))},some:function(e,t){return!this.every(Rn(e),t)},sort:function(e){return Gt(this,Jt(this,e))},values:function(){return this.__iterator(M)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(e,t){return C(e?this.toSeq().filter(e,t):this)},countBy:function(e,t){return function(e,t,n){var r=Ue().asMutable();return e.__iterate(function(o,i){r.update(t.call(n,o,i,e),0,function(e){return e+1})}),r.asImmutable()}(this,e,t)},equals:function(e){return me(this,e)},entrySeq:function(){var e=this;if(e._cache)return new ee(e._cache);var t=e.toSeq().map(Nn).toIndexedSeq();return t.fromEntrySeq=function(){return e.toSeq()},t},filterNot:function(e,t){return this.filter(Rn(e),t)},findEntry:function(e,t,n){var r=n;return this.__iterate(function(n,o,i){if(e.call(t,n,o,i))return r=[o,n],!1}),r},findKey:function(e,t){var n=this.findEntry(e,t);return n&&n[0]},findLast:function(e,t,n){return this.toKeyedSeq().reverse().find(e,t,n)},findLastEntry:function(e,t,n){return this.toKeyedSeq().reverse().findEntry(e,t,n)},findLastKey:function(e,t){return this.toKeyedSeq().reverse().findKey(e,t)},first:function(){return this.find(O)},flatMap:function(e,t){return Gt(this,function(e,t,n){var r=Qt(e);return e.toSeq().map(function(o,i){return r(t.call(n,o,i,e))}).flatten(!0)}(this,e,t))},flatten:function(e){return Gt(this,Wt(this,e,!0))},fromEntrySeq:function(){return new Lt(this)},get:function(e,t){return this.find(function(t,n){return de(n,e)},void 0,t)},getIn:function(e,t){for(var n,r=this,o=rn(e);!(n=o.next()).done;){var i=n.value;if((r=r&&r.get?r.get(i,y):y)===y)return t}return r},groupBy:function(e,t){return function(e,t,n){var r=s(e),o=(l(e)?Tt():Ue()).asMutable();e.__iterate(function(i,a){o.update(t.call(n,i,a,e),function(e){return(e=e||[]).push(r?[a,i]:i),e})});var i=Qt(e);return o.map(function(t){return Gt(e,i(t))})}(this,e,t)},has:function(e){return this.get(e,y)!==y},hasIn:function(e){return this.getIn(e,y)!==y},isSubset:function(e){return e="function"==typeof e.includes?e:n(e),this.every(function(t){return e.includes(t)})},isSuperset:function(e){return(e="function"==typeof e.isSubset?e:n(e)).isSubset(this)},keyOf:function(e){return this.findKey(function(t){return de(t,e)})},keySeq:function(){return this.toSeq().map(Mn).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(e){return this.toKeyedSeq().reverse().keyOf(e)},max:function(e){return Kt(this,e)},maxBy:function(e,t){return Kt(this,t,e)},min:function(e){return Kt(this,e?Dn(e):qn)},minBy:function(e,t){return Kt(this,t?Dn(t):qn,e)},rest:function(){return this.slice(1)},skip:function(e){return this.slice(Math.max(0,e))},skipLast:function(e){return Gt(this,this.toSeq().reverse().skip(e).reverse())},skipWhile:function(e,t){return Gt(this,Vt(this,e,t,!0))},skipUntil:function(e,t){return this.skipWhile(Rn(e),t)},sortBy:function(e,t){return Gt(this,Jt(this,t,e))},take:function(e){return this.slice(0,Math.max(0,e))},takeLast:function(e){return Gt(this,this.toSeq().reverse().take(e).reverse())},takeWhile:function(e,t){return Gt(this,function(e,t,n){var r=en(e);return r.__iterateUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterate(r,o);var a=0;return e.__iterate(function(e,o,s){return t.call(n,e,o,s)&&++a&&r(e,o,i)}),a},r.__iteratorUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterator(r,o);var a=e.__iterator(N,o),s=!0;return new U(function(){if(!s)return{value:void 0,done:!0};var e=a.next();if(e.done)return e;var o=e.value,u=o[0],c=o[1];return t.call(n,c,u,i)?r===N?e:q(r,u,c,e):(s=!1,{value:void 0,done:!0})})},r}(this,e,t))},takeUntil:function(e,t){return this.takeWhile(Rn(e),t)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=function(e){if(e.size===1/0)return 0;var t=l(e),n=s(e),r=t?1:0;return function(e,t){return t=Ee(t,3432918353),t=Ee(t<<15|t>>>-15,461845907),t=Ee(t<<13|t>>>-13,5),t=Ee((t=(t+3864292196|0)^e)^t>>>16,2246822507),t=Se((t=Ee(t^t>>>13,3266489909))^t>>>16)}(e.__iterate(n?t?function(e,t){r=31*r+Fn(Ce(e),Ce(t))|0}:function(e,t){r=r+Fn(Ce(e),Ce(t))|0}:t?function(e){r=31*r+Ce(e)|0}:function(e){r=r+Ce(e)|0}),r)}(this))}});var Pn=n.prototype;Pn[p]=!0,Pn[L]=Pn.values,Pn.__toJS=Pn.toArray,Pn.__toStringMapper=Ln,Pn.inspect=Pn.toSource=function(){return this.toString()},Pn.chain=Pn.flatMap,Pn.contains=Pn.includes,jn(r,{flip:function(){return Gt(this,Ut(this))},mapEntries:function(e,t){var n=this,r=0;return Gt(this,this.toSeq().map(function(o,i){return e.call(t,[i,o],r++,n)}).fromEntrySeq())},mapKeys:function(e,t){var n=this;return Gt(this,this.toSeq().flip().map(function(r,o){return e.call(t,r,o,n)}).flip())}});var In=r.prototype;function Mn(e,t){return t}function Nn(e,t){return[t,e]}function Rn(e){return function(){return!e.apply(this,arguments)}}function Dn(e){return function(){return-e.apply(this,arguments)}}function Ln(e){return"string"==typeof e?JSON.stringify(e):String(e)}function Un(){return S(arguments)}function qn(e,t){return et?-1:0}function Fn(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}return In[f]=!0,In[L]=Pn.entries,In.__toJS=Pn.toObject,In.__toStringMapper=function(e,t){return JSON.stringify(t)+": "+Ln(e)},jn(o,{toKeyedSeq:function(){return new Nt(this,!1)},filter:function(e,t){return Gt(this,Bt(this,e,t,!1))},findIndex:function(e,t){var n=this.findEntry(e,t);return n?n[0]:-1},indexOf:function(e){var t=this.keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.lastKeyOf(e);return void 0===t?-1:t},reverse:function(){return Gt(this,Ft(this,!1))},slice:function(e,t){return Gt(this,zt(this,e,t,!1))},splice:function(e,t){var n=arguments.length;if(t=Math.max(0|t,0),0===n||2===n&&!t)return this;e=T(e,e<0?this.count():this.size);var r=this.slice(0,e);return Gt(this,1===n?r:r.concat(S(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var n=this.findLastEntry(e,t);return n?n[0]:-1},first:function(){return this.get(0)},flatten:function(e){return Gt(this,Wt(this,e,!1))},get:function(e,t){return(e=k(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find(function(t,n){return n===e},void 0,t)},has:function(e){return(e=k(this,e))>=0&&(void 0!==this.size?this.size===1/0||e5e3)return e.textContent;return function(e){for(var n,r,o,i,a,s=e.textContent,u=0,c=s[0],l=1,p=e.innerHTML="",f=0;r=n,n=f<7&&"\\"==n?1:l;){if(l=c,c=s[++u],i=p.length>1,!l||f>8&&"\n"==l||[/\S/.test(l),1,1,!/[$\w]/.test(l),("/"==n||"\n"==n)&&i,'"'==n&&i,"'"==n&&i,s[u-4]+r+n=="--\x3e",r+n=="*/"][f])for(p&&(e.appendChild(a=t.createElement("span")).setAttribute("style",["color: #555; font-weight: bold;","","","color: #555;",""][f?f<3?2:f>6?4:f>3?3:+/^(a(bstract|lias|nd|rguments|rray|s(m|sert)?|uto)|b(ase|egin|ool(ean)?|reak|yte)|c(ase|atch|har|hecked|lass|lone|ompl|onst|ontinue)|de(bugger|cimal|clare|f(ault|er)?|init|l(egate|ete)?)|do|double|e(cho|ls?if|lse(if)?|nd|nsure|num|vent|x(cept|ec|p(licit|ort)|te(nds|nsion|rn)))|f(allthrough|alse|inal(ly)?|ixed|loat|or(each)?|riend|rom|unc(tion)?)|global|goto|guard|i(f|mp(lements|licit|ort)|n(it|clude(_once)?|line|out|stanceof|t(erface|ernal)?)?|s)|l(ambda|et|ock|ong)|m(icrolight|odule|utable)|NaN|n(amespace|ative|ext|ew|il|ot|ull)|o(bject|perator|r|ut|verride)|p(ackage|arams|rivate|rotected|rotocol|ublic)|r(aise|e(adonly|do|f|gister|peat|quire(_once)?|scue|strict|try|turn))|s(byte|ealed|elf|hort|igned|izeof|tatic|tring|truct|ubscript|uper|ynchronized|witch)|t(emplate|hen|his|hrows?|ransient|rue|ry|ype(alias|def|id|name|of))|u(n(checked|def(ined)?|ion|less|signed|til)|se|sing)|v(ar|irtual|oid|olatile)|w(char_t|hen|here|hile|ith)|xor|yield)$/.test(p):0]),a.appendChild(t.createTextNode(p))),o=f&&f<7?f:o,p="",f=11;![1,/[\/{}[(\-+*=<>:;|\\.,?!&@~]/.test(l),/[\])]/.test(l),/[$\w]/.test(l),"/"==l&&o<2&&"<"!=n,'"'==l,"'"==l,l+c+s[u+1]+s[u+2]=="\x3c!--",l+c=="/*",l+c=="//","#"==l][--f];);p+=l}}(e)}function Q(e){var t;if([/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=[^']+'\w*'([^;]+);?/i,/filename="([^;]*);?"/i,/filename=([^;]*);?/i].some(function(n){return null!==(t=n.exec(e))}),null!==t&&t.length>1)try{return decodeURIComponent(t[1])}catch(e){console.error(e)}return null}function ee(e){return t=e.replace(/\.[^.\/]*$/,""),b()(g()(t));var t}var te=function(e,t){if(e>t)return"Value must be less than Maximum"},ne=function(e,t){if(et)return"Value must be less than MaxLength"},pe=function(e,t){if(e.length2&&void 0!==arguments[2]?arguments[2]:{},r=n.isOAS3,o=void 0!==r&&r,i=n.bypassRequiredCheck,a=void 0!==i&&i,s=[],u=e.get("required"),c=Object(P.a)(e,{isOAS3:o}),p=c.schema,h=c.parameterContentMediaType;if(!p)return s;var m=p.get("required"),v=p.get("maximum"),g=p.get("minimum"),y=p.get("type"),b=p.get("format"),_=p.get("maxLength"),w=p.get("minLength"),x=p.get("pattern");if(y&&(u||m||t)){var E="string"===y&&t,S="array"===y&&l()(t)&&t.length,C="array"===y&&d.a.List.isList(t)&&t.count(),k="array"===y&&"string"==typeof t&&t,O="file"===y&&t instanceof A.a.File,T="boolean"===y&&(t||!1===t),j="number"===y&&(t||0===t),I="integer"===y&&(t||0===t),M="object"===y&&"object"===f()(t)&&null!==t,N="object"===y&&"string"==typeof t&&t,R=[E,S,C,k,O,T,j,I,M,N],D=R.some(function(e){return!!e});if((u||m)&&!D&&!a)return s.push("Required field is not provided"),s;if("object"===y&&"string"==typeof t&&(null===h||"application/json"===h))try{JSON.parse(t)}catch(e){return s.push("Parameter string value must be valid JSON"),s}if(x){var L=fe(t,x);L&&s.push(L)}if(_||0===_){var U=le(t,_);U&&s.push(U)}if(w){var q=pe(t,w);q&&s.push(q)}if(v||0===v){var F=te(t,v);F&&s.push(F)}if(g||0===g){var B=ne(t,g);B&&s.push(B)}if("string"===y){var z;if(!(z="date-time"===b?ue(t):"uuid"===b?ce(t):se(t)))return s;s.push(z)}else if("boolean"===y){var V=ae(t);if(!V)return s;s.push(V)}else if("number"===y){var H=re(t);if(!H)return s;s.push(H)}else if("integer"===y){var W=oe(t);if(!W)return s;s.push(W)}else if("array"===y){var J;if(!C||!t.count())return s;J=p.getIn(["items","type"]),t.forEach(function(e,t){var n;"number"===J?n=re(e):"integer"===J?n=oe(e):"string"===J&&(n=se(e)),n&&s.push({index:t,error:n})})}else if("file"===y){var K=ie(t);if(!K)return s;s.push(K)}}return s},de=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(/xml/.test(t)){if(!e.xml||!e.xml.name){if(e.xml=e.xml||{},!e.$$ref)return e.type||e.items||e.properties||e.additionalProperties?'\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e':null;var r=e.$$ref.match(/\S*\/(\S+)$/);e.xml.name=r[1]}return Object(k.memoizedCreateXMLExample)(e,n)}var i=Object(k.memoizedSampleFromSchema)(e,n);return"object"===f()(i)?o()(i,null,2):i},me=function(){var e={},t=A.a.location.search;if(!t)return{};if(""!=t){var n=t.substr(1).split("&");for(var r in n)n.hasOwnProperty(r)&&(r=n[r].split("="),e[decodeURIComponent(r[0])]=r[1]&&decodeURIComponent(r[1])||"")}return e},ve=function(t){return(t instanceof e?t:new e(t.toString(),"utf-8")).toString("base64")},ge={operationsSorter:{alpha:function(e,t){return e.get("path").localeCompare(t.get("path"))},method:function(e,t){return e.get("method").localeCompare(t.get("method"))}},tagsSorter:{alpha:function(e,t){return e.localeCompare(t)}}},ye=function(e){var t=[];for(var n in e){var r=e[n];void 0!==r&&""!==r&&t.push([n,"=",encodeURIComponent(r).replace(/%20/g,"+")].join(""))}return t.join("&")},be=function(e,t,n){return!!E()(n,function(n){return C()(e[n],t[n])})};function _e(e){return"string"!=typeof e||""===e?"":Object(m.sanitizeUrl)(e)}function we(e){if(!d.a.OrderedMap.isOrderedMap(e))return null;if(!e.size)return null;var t=e.find(function(e,t){return t.startsWith("2")&&u()(e.get("content")||{}).length>0}),n=e.get("default")||d.a.OrderedMap(),r=(n.get("content")||d.a.OrderedMap()).keySeq().toJS().length?n:null;return t||r}var xe=function(e){return"string"==typeof e||e instanceof String?e.trim().replace(/\s/g,"%20"):""},Ee=function(e){return j()(xe(e).replace(/%20/g,"_"))},Se=function(e){return e.filter(function(e,t){return/^x-/.test(t)})},Ce=function(e){return e.filter(function(e,t){return/^pattern|maxLength|minLength|maximum|minimum/.test(t)})};function ke(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0};if("object"!==f()(e)||l()(e)||null===e||!t)return e;var r=a()({},e);return u()(r).forEach(function(e){e===t&&n(r[e],e)?delete r[e]:r[e]=ke(r[e],t,n)}),r}function Oe(e){if("string"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS()),"object"===f()(e)&&null!==e)try{return o()(e,null,2)}catch(t){return String(e)}return null==e?"":e.toString()}function Ae(e){return"number"==typeof e?e.toString():e}function Te(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.returnAll,r=void 0!==n&&n,o=t.allowHashes,i=void 0===o||o;if(!d.a.Map.isMap(e))throw new Error("paramToIdentifier: received a non-Im.Map parameter as input");var a=e.get("name"),s=e.get("in"),u=[];return e&&e.hashCode&&s&&a&&i&&u.push("".concat(s,".").concat(a,".hash-").concat(e.hashCode())),s&&a&&u.push("".concat(s,".").concat(a)),u.push(a),r?u:u[0]||""}function je(e,t){return Te(e,{returnAll:!0}).map(function(e){return t[e]}).filter(function(e){return void 0!==e})[0]}function Pe(){return Me(M()(32).toString("base64"))}function Ie(e){return Me(R()("sha256").update(e).digest("base64"))}function Me(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}}).call(this,n(64).Buffer)},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){var r=n(54);function o(e,t){for(var n=0;n1?t-1:0),o=1;o2?n-2:0),i=2;i>",i={listOf:function(e){return c(e,"List",r.List.isList)},mapOf:function(e,t){return l(e,t,"Map",r.Map.isMap)},orderedMapOf:function(e,t){return l(e,t,"OrderedMap",r.OrderedMap.isOrderedMap)},setOf:function(e){return c(e,"Set",r.Set.isSet)},orderedSetOf:function(e){return c(e,"OrderedSet",r.OrderedSet.isOrderedSet)},stackOf:function(e){return c(e,"Stack",r.Stack.isStack)},iterableOf:function(e){return c(e,"Iterable",r.Iterable.isIterable)},recordOf:function(e){return s(function(t,n,o,i,s){for(var u=arguments.length,c=Array(u>5?u-5:0),l=5;l6?u-6:0),l=6;l5?c-5:0),p=5;p5?i-5:0),s=5;s key("+l[p]+")"].concat(a));if(h instanceof Error)return h}})).apply(void 0,i);var u})}function p(e){var t=void 0===arguments[1]?"Iterable":arguments[1],n=void 0===arguments[2]?r.Iterable.isIterable:arguments[2];return s(function(r,o,i,s,u){for(var c=arguments.length,l=Array(c>5?c-5:0),p=5;p4)}function u(e){var t=e.get("swagger");return"string"==typeof t&&t.startsWith("2.0")}function c(e){return function(t,n){return function(r){return n&&n.specSelectors&&n.specSelectors.specJson?s(n.specSelectors.specJson())?a.a.createElement(e,o()({},r,n,{Ori:t})):a.a.createElement(t,r):(console.warn("OAS3 wrapper: couldn't get spec"),null)}}}},function(e,t,n){"use strict"; -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,u=a(e),c=1;c0){var o=n.map(function(e){return console.error(e),e.line=e.fullPath?g(y,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",A()(e,"message",{enumerable:!0,value:e.message}),e});i.newThrownErrBatch(o)}return r.updateResolved(t)})}},_e=[],we=V()(k()(S.a.mark(function e(){var t,n,r,o,i,a,s,u,c,l,p,f,h,d,m,v,g;return S.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=_e.system){e.next=4;break}return console.error("debResolveSubtrees: don't have a system to operate on, aborting."),e.abrupt("return");case 4:if(n=t.errActions,r=t.errSelectors,o=t.fn,i=o.resolveSubtree,a=o.AST,s=void 0===a?{}:a,u=t.specSelectors,c=t.specActions,i){e.next=8;break}return console.error("Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing."),e.abrupt("return");case 8:return l=s.getLineNumberForPath?s.getLineNumberForPath:function(){},p=u.specStr(),f=t.getConfigs(),h=f.modelPropertyMacro,d=f.parameterMacro,m=f.requestInterceptor,v=f.responseInterceptor,e.prev=11,e.next=14,_e.reduce(function(){var e=k()(S.a.mark(function e(t,o){var a,s,c,f,g,y,b;return S.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t;case 2:return a=e.sent,s=a.resultMap,c=a.specWithCurrentSubtrees,e.next=7,i(c,o,{baseDoc:u.url(),modelPropertyMacro:h,parameterMacro:d,requestInterceptor:m,responseInterceptor:v});case 7:return f=e.sent,g=f.errors,y=f.spec,r.allErrors().size&&n.clearBy(function(e){return"thrown"!==e.get("type")||"resolver"!==e.get("source")||!e.get("fullPath").every(function(e,t){return e===o[t]||void 0===o[t]})}),j()(g)&&g.length>0&&(b=g.map(function(e){return e.line=e.fullPath?l(p,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",A()(e,"message",{enumerable:!0,value:e.message}),e}),n.newThrownErrBatch(b)),W()(s,o,y),W()(c,o,y),e.abrupt("return",{resultMap:s,specWithCurrentSubtrees:c});case 15:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),x.a.resolve({resultMap:(u.specResolvedSubtree([])||Object(R.Map)()).toJS(),specWithCurrentSubtrees:u.specJson().toJS()}));case 14:g=e.sent,delete _e.system,_e=[],e.next=22;break;case 19:e.prev=19,e.t0=e.catch(11),console.error(e.t0);case 22:c.updateResolvedSubtree([],g.resultMap);case 23:case"end":return e.stop()}},e,null,[[11,19]])})),35),xe=function(e){return function(t){_e.map(function(e){return e.join("@@")}).indexOf(e.join("@@"))>-1||(_e.push(e),_e.system=t,we())}};function Ee(e,t,n,r,o){return{type:X,payload:{path:e,value:r,paramName:t,paramIn:n,isXml:o}}}function Se(e,t,n,r){return{type:X,payload:{path:e,param:t,value:n,isXml:r}}}var Ce=function(e,t){return{type:le,payload:{path:e,value:t}}},ke=function(){return{type:le,payload:{path:[],value:Object(R.Map)()}}},Oe=function(e,t){return{type:ee,payload:{pathMethod:e,isOAS3:t}}},Ae=function(e,t,n,r){return{type:Q,payload:{pathMethod:e,paramName:t,paramIn:n,includeEmptyValue:r}}};function Te(e){return{type:se,payload:{pathMethod:e}}}function je(e,t){return{type:ue,payload:{path:e,value:t,key:"consumes_value"}}}function Pe(e,t){return{type:ue,payload:{path:e,value:t,key:"produces_value"}}}var Ie=function(e,t,n){return{payload:{path:e,method:t,res:n},type:te}},Me=function(e,t,n){return{payload:{path:e,method:t,req:n},type:ne}},Ne=function(e,t,n){return{payload:{path:e,method:t,req:n},type:re}},Re=function(e){return{payload:e,type:oe}},De=function(e){return function(t){var n=t.fn,r=t.specActions,o=t.specSelectors,i=t.getConfigs,a=t.oas3Selectors,s=e.pathName,u=e.method,c=e.operation,l=i(),p=l.requestInterceptor,f=l.responseInterceptor,h=c.toJS();if(c&&c.get("parameters")&&c.get("parameters").filter(function(e){return e&&!0===e.get("allowEmptyValue")}).forEach(function(t){if(o.parameterInclusionSettingFor([s,u],t.get("name"),t.get("in"))){e.parameters=e.parameters||{};var n=Object(J.C)(t,e.parameters);(!n||n&&0===n.size)&&(e.parameters[t.get("name")]="")}}),e.contextUrl=L()(o.url()).toString(),h&&h.operationId?e.operationId=h.operationId:h&&s&&u&&(e.operationId=n.opId(h,s,u)),o.isOAS3()){var d="".concat(s,":").concat(u);e.server=a.selectedServer(d)||a.selectedServer();var m=a.serverVariables({server:e.server,namespace:d}).toJS(),g=a.serverVariables({server:e.server}).toJS();e.serverVariables=_()(m).length?m:g,e.requestContentType=a.requestContentType(s,u),e.responseContentType=a.responseContentType(s,u)||"*/*";var b=a.requestBodyValue(s,u);Object(J.t)(b)?e.requestBody=JSON.parse(b):b&&b.toJS?e.requestBody=b.toJS():e.requestBody=b}var w=y()({},e);w=n.buildRequest(w),r.setRequest(e.pathName,e.method,w);e.requestInterceptor=function(t){var n=p.apply(this,[t]),o=y()({},n);return r.setMutatedRequest(e.pathName,e.method,o),n},e.responseInterceptor=f;var x=v()();return n.execute(e).then(function(t){t.duration=v()()-x,r.setResponse(e.pathName,e.method,t)}).catch(function(t){console.error(t),r.setResponse(e.pathName,e.method,{error:!0,err:q()(t)})})}},Le=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.path,n=e.method,r=d()(e,["path","method"]);return function(e){var o=e.fn.fetch,i=e.specSelectors,a=e.specActions,s=i.specJsonWithResolvedSubtrees().toJS(),u=i.operationScheme(t,n),c=i.contentTypeValues([t,n]).toJS(),l=c.requestContentType,p=c.responseContentType,f=/xml/i.test(l),h=i.parameterValues([t,n],f).toJS();return a.executeRequest(Y({},r,{fetch:o,spec:s,pathName:t,method:n,parameters:h,requestContentType:l,scheme:u,responseContentType:p}))}};function Ue(e,t){return{type:ie,payload:{path:e,method:t}}}function qe(e,t){return{type:ae,payload:{path:e,method:t}}}function Fe(e,t,n){return{type:pe,payload:{scheme:e,path:t,method:n}}}},function(e,t,n){var r=n(32),o=n(22),i=n(63),a=n(77),s=n(75),u=function(e,t,n){var c,l,p,f=e&u.F,h=e&u.G,d=e&u.S,m=e&u.P,v=e&u.B,g=e&u.W,y=h?o:o[t]||(o[t]={}),b=y.prototype,_=h?r:d?r[t]:(r[t]||{}).prototype;for(c in h&&(n=t),n)(l=!f&&_&&void 0!==_[c])&&s(y,c)||(p=l?_[c]:n[c],y[c]=h&&"function"!=typeof _[c]?n[c]:v&&l?i(p,r):g&&_[c]==p?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(p):m&&"function"==typeof p?i(Function.call,p):p,m&&((y.virtual||(y.virtual={}))[c]=p,e&u.R&&b&&!b[c]&&a(b,c,p)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},function(e,t,n){"use strict";var r=n(138),o=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],i=["scalar","sequence","mapping"];e.exports=function(e,t){var n,a;if(t=t||{},Object.keys(t).forEach(function(t){if(-1===o.indexOf(t))throw new r('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=(n=t.styleAliases||null,a={},null!==n&&Object.keys(n).forEach(function(e){n[e].forEach(function(t){a[String(t)]=e})}),a),-1===i.indexOf(this.kind))throw new r('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){var r=n(197)("wks"),o=n(199),i=n(41).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},function(e,t,n){var r=n(214)("wks"),o=n(159),i=n(32).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},function(e,t,n){var r=n(41),o=n(72),i=n(81),a=n(97),s=n(153),u=function(e,t,n){var c,l,p,f,h=e&u.F,d=e&u.G,m=e&u.S,v=e&u.P,g=e&u.B,y=d?r:m?r[t]||(r[t]={}):(r[t]||{}).prototype,b=d?o:o[t]||(o[t]={}),_=b.prototype||(b.prototype={});for(c in d&&(n=t),n)p=((l=!h&&y&&void 0!==y[c])?y:n)[c],f=g&&l?s(p,r):v&&"function"==typeof p?s(Function.call,p):p,y&&a(y,c,p,e&u.U),b[c]!=p&&i(b,c,f),v&&_[c]!=p&&(_[c]=p)};r.core=o,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){"use strict";var r=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:r,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:r&&!!window.screen,isInWorker:!r};e.exports=o},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;function o(e,t){return!!e&&r.call(e,t)}var i=/\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;function a(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function s(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var u=/&([a-z#][a-z0-9]{1,31});/gi,c=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,l=n(463);function p(e,t){var n=0;return o(l,t)?l[t]:35===t.charCodeAt(0)&&c.test(t)&&a(n="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?s(n):e}var f=/[&<>"]/,h=/[&<>"]/g,d={"&":"&","<":"<",">":">",'"':"""};function m(e){return d[e]}t.assign=function(e){return[].slice.call(arguments,1).forEach(function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach(function(n){e[n]=t[n]})}}),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=o,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(i,"$1")},t.isValidEntityCode=a,t.fromCodePoint=s,t.replaceEntities=function(e){return e.indexOf("&")<0?e:e.replace(u,p)},t.escapeHtml=function(e){return f.test(e)?e.replace(h,m):e}},function(e,t,n){var r=n(55),o=n(771);e.exports=function(e,t){if(null==e)return{};var n,i,a=o(e,t);if(r){var s=r(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){var r=n(35),o=n(99),i=n(73),a=/"/g,s=function(e,t,n,r){var o=String(i(e)),s="<"+t;return""!==n&&(s+=" "+n+'="'+String(r).replace(a,""")+'"'),s+">"+o+""};e.exports=function(e,t){var n={};n[e]=t(s),r(r.P+r.F*o(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";n.r(t),n.d(t,"NEW_THROWN_ERR",function(){return i}),n.d(t,"NEW_THROWN_ERR_BATCH",function(){return a}),n.d(t,"NEW_SPEC_ERR",function(){return s}),n.d(t,"NEW_SPEC_ERR_BATCH",function(){return u}),n.d(t,"NEW_AUTH_ERR",function(){return c}),n.d(t,"CLEAR",function(){return l}),n.d(t,"CLEAR_BY",function(){return p}),n.d(t,"newThrownErr",function(){return f}),n.d(t,"newThrownErrBatch",function(){return h}),n.d(t,"newSpecErr",function(){return d}),n.d(t,"newSpecErrBatch",function(){return m}),n.d(t,"newAuthErr",function(){return v}),n.d(t,"clear",function(){return g}),n.d(t,"clearBy",function(){return y});var r=n(119),o=n.n(r),i="err_new_thrown_err",a="err_new_thrown_err_batch",s="err_new_spec_err",u="err_new_spec_err_batch",c="err_new_auth_err",l="err_clear",p="err_clear_by";function f(e){return{type:i,payload:o()(e)}}function h(e){return{type:a,payload:e}}function d(e){return{type:s,payload:e}}function m(e){return{type:u,payload:e}}function v(e){return{type:c,payload:e}}function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{type:l,payload:e}}function y(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!0};return{type:p,payload:e}}},function(e,t,n){var r=n(98);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){var r=n(43);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){var r=n(64),o=r.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function a(e,t,n){return o(e,t,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=a),i(o,a),a.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return o(e,t,n)},a.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=o(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return o(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},function(e,t,n){var r=n(46),o=n(349),i=n(218),a=Object.defineProperty;t.f=n(50)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){e.exports=!n(82)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(366),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){"use strict";e.exports={debugTool:null}},function(e,t,n){e.exports=n(573)},function(e,t,n){e.exports=n(770)},function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=45)}([function(e,t){e.exports=n(17)},function(e,t){e.exports=n(14)},function(e,t){e.exports=n(26)},function(e,t){e.exports=n(16)},function(e,t){e.exports=n(123)},function(e,t){e.exports=n(60)},function(e,t){e.exports=n(61)},function(e,t){e.exports=n(55)},function(e,t){e.exports=n(2)},function(e,t){e.exports=n(54)},function(e,t){e.exports=n(94)},function(e,t){e.exports=n(28)},function(e,t){e.exports=n(930)},function(e,t){e.exports=n(12)},function(e,t){e.exports=n(192)},function(e,t){e.exports=n(936)},function(e,t){e.exports=n(93)},function(e,t){e.exports=n(193)},function(e,t){e.exports=n(939)},function(e,t){e.exports=n(943)},function(e,t){e.exports=n(944)},function(e,t){e.exports=n(92)},function(e,t){e.exports=n(13)},function(e,t){e.exports=n(146)},function(e,t){e.exports=n(4)},function(e,t){e.exports=n(5)},function(e,t){e.exports=n(946)},function(e,t){e.exports=n(421)},function(e,t){e.exports=n(949)},function(e,t){e.exports=n(52)},function(e,t){e.exports=n(64)},function(e,t){e.exports=n(283)},function(e,t){e.exports=n(272)},function(e,t){e.exports=n(950)},function(e,t){e.exports=n(145)},function(e,t){e.exports=n(951)},function(e,t){e.exports=n(959)},function(e,t){e.exports=n(960)},function(e,t){e.exports=n(961)},function(e,t){e.exports=n(40)},function(e,t){e.exports=n(264)},function(e,t){e.exports=n(37)},function(e,t){e.exports=n(964)},function(e,t){e.exports=n(965)},function(e,t){e.exports=n(966)},function(e,t,n){e.exports=n(50)},function(e,t){e.exports=n(967)},function(e,t){e.exports=n(968)},function(e,t){e.exports=n(969)},function(e,t){e.exports=n(970)},function(e,t,n){"use strict";n.r(t);var r={};n.r(r),n.d(r,"path",function(){return mn}),n.d(r,"query",function(){return vn}),n.d(r,"header",function(){return yn}),n.d(r,"cookie",function(){return bn});var o=n(9),i=n.n(o),a=n(10),s=n.n(a),u=n(5),c=n.n(u),l=n(6),p=n.n(l),f=n(7),h=n.n(f),d=n(0),m=n.n(d),v=n(8),g=n.n(v),y=(n(46),n(15)),b=n.n(y),_=n(20),w=n.n(_),x=n(12),E=n.n(x),S=n(4),C=n.n(S),k=n(22),O=n.n(k),A=n(11),T=n.n(A),j=n(2),P=n.n(j),I=n(1),M=n.n(I),N=n(17),R=n.n(N),D=(n(47),n(26)),L=n.n(D),U=n(23),q=n.n(U),F=n(31),B=n.n(F),z={serializeRes:J,mergeInQueryOrForm:Z};function V(e){return H.apply(this,arguments)}function H(){return(H=R()(C.a.mark(function e(t){var n,r,o,i,a,s=arguments;return C.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=s.length>1&&void 0!==s[1]?s[1]:{},"object"===P()(t)&&(t=(n=t).url),n.headers=n.headers||{},z.mergeInQueryOrForm(n),n.headers&&m()(n.headers).forEach(function(e){var t=n.headers[e];"string"==typeof t&&(n.headers[e]=t.replace(/\n+/g," "))}),!n.requestInterceptor){e.next=12;break}return e.next=8,n.requestInterceptor(n);case 8:if(e.t0=e.sent,e.t0){e.next=11;break}e.t0=n;case 11:n=e.t0;case 12:return r=n.headers["content-type"]||n.headers["Content-Type"],/multipart\/form-data/i.test(r)&&(delete n.headers["content-type"],delete n.headers["Content-Type"]),e.prev=14,e.next=17,(n.userFetch||fetch)(n.url,n);case 17:return o=e.sent,e.next=20,z.serializeRes(o,t,n);case 20:if(o=e.sent,!n.responseInterceptor){e.next=28;break}return e.next=24,n.responseInterceptor(o);case 24:if(e.t1=e.sent,e.t1){e.next=27;break}e.t1=o;case 27:o=e.t1;case 28:e.next=38;break;case 30:if(e.prev=30,e.t2=e.catch(14),o){e.next=34;break}throw e.t2;case 34:throw(i=new Error(o.statusText)).statusCode=i.status=o.status,i.responseError=e.t2,i;case 38:if(o.ok){e.next=43;break}throw(a=new Error(o.statusText)).statusCode=a.status=o.status,a.response=o,a;case 43:return e.abrupt("return",o);case 44:case"end":return e.stop()}},e,null,[[14,30]])}))).apply(this,arguments)}var W=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return/(json|xml|yaml|text)\b/.test(e)};function J(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).loadSpec,r=void 0!==n&&n,o={ok:e.ok,url:e.url||t,status:e.status,statusText:e.statusText,headers:K(e.headers)},i=o.headers["content-type"],a=r||W(i);return(a?e.text:e.blob||e.buffer).call(e).then(function(e){if(o.text=e,o.data=e,a)try{var t=function(e,t){return t&&(0===t.indexOf("application/json")||t.indexOf("+json")>0)?JSON.parse(e):q.a.safeLoad(e)}(e,i);o.body=t,o.obj=t}catch(e){o.parseError=e}return o})}function K(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={};return"function"==typeof e.forEach?(e.forEach(function(e,n){void 0!==t[n]?(t[n]=M()(t[n])?t[n]:[t[n]],t[n].push(e)):t[n]=e}),t):t}function Y(e,t){return t||"undefined"==typeof navigator||(t=navigator),t&&"ReactNative"===t.product?!(!e||"object"!==P()(e)||"string"!=typeof e.uri):"undefined"!=typeof File?e instanceof File:null!==e&&"object"===P()(e)&&"function"==typeof e.pipe}function $(e,t){var n=e.collectionFormat,r=e.allowEmptyValue,o="object"===P()(e)?e.value:e;if(void 0===o&&r)return"";if(Y(o)||"boolean"==typeof o)return o;var i=encodeURIComponent;return t&&(i=B()(o)?function(e){return e}:function(e){return T()(e)}),"object"!==P()(o)||M()(o)?M()(o)?M()(o)&&!n?o.map(i).join(","):"multi"===n?o.map(i):o.map(i).join({csv:",",ssv:"%20",tsv:"%09",pipes:"|"}[n]):i(o):""}function G(e){var t=m()(e).reduce(function(t,n){var r,o=e[n],i=!!o.skipEncoding,a=i?n:encodeURIComponent(n),s=(r=o)&&"object"===P()(r)&&!M()(o);return t[a]=$(s?o:{value:o},i),t},{});return L.a.stringify(t,{encode:!1,indices:!1})||""}function Z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.url,r=void 0===t?"":t,o=e.query,i=e.form;if(i){var a=m()(i).some(function(e){return Y(i[e].value)}),s=e.headers["content-type"]||e.headers["Content-Type"];if(a||/multipart\/form-data/i.test(s)){var u=n(48);e.body=new u,m()(i).forEach(function(t){e.body.append(t,$(i[t],!0))})}else e.body=G(i);delete e.form}if(o){var c=r.split("?"),l=O()(c,2),p=l[0],f=l[1],h="";if(f){var d=L.a.parse(f);m()(o).forEach(function(e){return delete d[e]}),h=L.a.stringify(d,{encode:!0})}var v=function(){for(var e=arguments.length,t=new Array(e),n=0;n0){var o=t(e,n[n.length-1],n);o&&(r=r.concat(o))}if(M()(e)){var i=e.map(function(e,r){return Ce(e,t,n.concat(r))});i&&(r=r.concat(i))}else if(Te(e)){var a=m()(e).map(function(r){return Ce(e[r],t,n.concat(r))});a&&(r=r.concat(a))}return r=Oe(r)}function ke(e){return M()(e)?e:[e]}function Oe(e){var t;return(t=[]).concat.apply(t,he()(e.map(function(e){return M()(e)?Oe(e):e})))}function Ae(e){return e.filter(function(e){return void 0!==e})}function Te(e){return e&&"object"===P()(e)}function je(e){return e&&"function"==typeof e}function Pe(e){if(Ne(e)){var t=e.op;return"add"===t||"remove"===t||"replace"===t}return!1}function Ie(e){return Pe(e)||Ne(e)&&"mutation"===e.type}function Me(e){return Ie(e)&&("add"===e.op||"replace"===e.op||"merge"===e.op||"mergeDeep"===e.op)}function Ne(e){return e&&"object"===P()(e)}function Re(e,t){try{return me.a.getValueByPointer(e,t)}catch(e){return console.error(e),{}}}var De=n(35),Le=n.n(De),Ue=n(36),qe=n(28),Fe=n.n(qe);function Be(e,t){function n(){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack;for(var e=arguments.length,n=new Array(e),r=0;r-1&&-1===We.indexOf(n)||Je.indexOf(r)>-1||Ke.some(function(e){return r.indexOf(e)>-1})}function $e(e,t){var n=e.split("#"),r=O()(n,2),o=r[0],i=r[1],a=E.a.resolve(o||"",t||"");return i?"".concat(a,"#").concat(i):a}var Ge="application/json, application/yaml",Ze=new RegExp("^([a-z]+://|//)","i"),Xe=Be("JSONRefError",function(e,t,n){this.originalError=n,ie()(this,t||{})}),Qe={},et=new Le.a,tt=[function(e){return"paths"===e[0]&&"responses"===e[3]&&"content"===e[5]&&"example"===e[7]},function(e){return"paths"===e[0]&&"requestBody"===e[3]&&"content"===e[4]&&"example"===e[6]}],nt={key:"$ref",plugin:function(e,t,n,r){var o=r.getInstance(),i=n.slice(0,-1);if(!Ye(i)&&(a=i,!tt.some(function(e){return e(a)}))){var a,s=r.getContext(n).baseDoc;if("string"!=typeof e)return new Xe("$ref: must be a string (JSON-Ref)",{$ref:e,baseDoc:s,fullPath:n});var u,c,l,p=st(e),f=p[0],h=p[1]||"";try{u=s||f?it(f,s):null}catch(t){return at(t,{pointer:h,$ref:e,basePath:u,fullPath:n})}if(function(e,t,n,r){var o=et.get(r);o||(o={},et.set(r,o));var i=function(e){if(0===e.length)return"";return"/".concat(e.map(ht).join("/"))}(n),a="".concat(t||"","#").concat(e),s=i.replace(/allOf\/\d+\/?/g,""),u=r.contextTree.get([]).baseDoc;if(t==u&&mt(s,e))return!0;var c="";if(n.some(function(e){return c="".concat(c,"/").concat(ht(e)),o[c]&&o[c].some(function(e){return mt(e,a)||mt(a,e)})}))return!0;o[s]=(o[s]||[]).concat(a)}(h,u,i,r)&&!o.useCircularStructures){var d=$e(e,u);return e===d?null:_e.replace(n,d)}if(null==u?(l=pt(h),void 0===(c=r.get(l))&&(c=new Xe("Could not resolve reference: ".concat(e),{pointer:h,$ref:e,baseDoc:s,fullPath:n}))):c=null!=(c=ut(u,h)).__value?c.__value:c.catch(function(t){throw at(t,{pointer:h,$ref:e,baseDoc:s,fullPath:n})}),c instanceof Error)return[_e.remove(n),c];var v=$e(e,u),g=_e.replace(i,c,{$$ref:v});if(u&&u!==s)return[g,_e.context(i,{baseDoc:u})];try{if(!function(e,t){var n=[e];return t.path.reduce(function(e,t){return n.push(e[t]),e[t]},e),function e(t){return _e.isObject(t)&&(n.indexOf(t)>=0||m()(t).some(function(n){return e(t[n])}))}(t.value)}(r.state,g)||o.useCircularStructures)return g}catch(e){return null}}}},rt=ie()(nt,{docCache:Qe,absoluteify:it,clearCache:function(e){void 0!==e?delete Qe[e]:m()(Qe).forEach(function(e){delete Qe[e]})},JSONRefError:Xe,wrapError:at,getDoc:ct,split:st,extractFromDoc:ut,fetchJSON:function(e){return Object(Ue.fetch)(e,{headers:{Accept:Ge},loadSpec:!0}).then(function(e){return e.text()}).then(function(e){return q.a.safeLoad(e)})},extract:lt,jsonPointerToArray:pt,unescapeJsonPointerToken:ft}),ot=rt;function it(e,t){if(!Ze.test(e)){if(!t)throw new Xe("Tried to resolve a relative URL, without having a basePath. path: '".concat(e,"' basePath: '").concat(t,"'"));return E.a.resolve(t,e)}return e}function at(e,t){var n;return n=e&&e.response&&e.response.body?"".concat(e.response.body.code," ").concat(e.response.body.message):e.message,new Xe("Could not resolve reference: ".concat(n),t,e)}function st(e){return(e+"").split("#")}function ut(e,t){var n=Qe[e];if(n&&!_e.isPromise(n))try{var r=lt(t,n);return ie()(Q.a.resolve(r),{__value:r})}catch(e){return Q.a.reject(e)}return ct(e).then(function(e){return lt(t,e)})}function ct(e){var t=Qe[e];return t?_e.isPromise(t)?t:Q.a.resolve(t):(Qe[e]=rt.fetchJSON(e).then(function(t){return Qe[e]=t,t}),Qe[e])}function lt(e,t){var n=pt(e);if(n.length<1)return t;var r=_e.getIn(t,n);if(void 0===r)throw new Xe("Could not resolve pointer: ".concat(e," does not exist in document"),{pointer:e});return r}function pt(e){if("string"!=typeof e)throw new TypeError("Expected a string, got a ".concat(P()(e)));return"/"===e[0]&&(e=e.substr(1)),""===e?[]:e.split("/").map(ft)}function ft(e){return"string"!=typeof e?e:Fe.a.unescape(e.replace(/~1/g,"/").replace(/~0/g,"~"))}function ht(e){return Fe.a.escape(e.replace(/~/g,"~0").replace(/\//g,"~1"))}var dt=function(e){return!e||"/"===e||"#"===e};function mt(e,t){if(dt(t))return!0;var n=e.charAt(t.length),r=t.slice(-1);return 0===e.indexOf(t)&&(!n||"/"===n||"#"===n)&&"#"!==r}var vt={key:"allOf",plugin:function(e,t,n,r,o){if(!o.meta||!o.meta.$$ref){var i=n.slice(0,-1);if(!Ye(i)){if(!M()(e)){var a=new TypeError("allOf must be an array");return a.fullPath=n,a}var s=!1,u=o.value;i.forEach(function(e){u&&(u=u[e])}),delete(u=ie()({},u)).allOf;var c=[];return c.push(r.replace(i,{})),e.forEach(function(e,t){if(!r.isObject(e)){if(s)return null;s=!0;var o=new TypeError("Elements in allOf must be objects");return o.fullPath=n,c.push(o)}c.push(r.mergeDeep(i,e));var a=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.specmap,o=n.getBaseUrlForNodePath,i=void 0===o?function(e){return r.getContext([].concat(he()(t),he()(e))).baseDoc}:o,a=n.targetKeys,s=void 0===a?["$ref","$$ref"]:a,u=[];return Ve()(e).forEach(function(){if(s.indexOf(this.key)>-1){var e=this.path,n=t.concat(this.path),o=$e(this.node,i(e));u.push(r.replace(n,o))}}),u}(e,n.slice(0,-1),{getBaseUrlForNodePath:function(e){return r.getContext([].concat(he()(n),[t],he()(e))).baseDoc},specmap:r});c.push.apply(c,he()(a))}),c.push(r.mergeDeep(i,u)),u.$$ref||c.push(r.remove([].concat(i,"$$ref"))),c}}}},gt={key:"parameters",plugin:function(e,t,n,r,o){if(M()(e)&&e.length){var i=ie()([],e),a=n.slice(0,-1),s=ie()({},_e.getIn(r.spec,a));return e.forEach(function(e,t){try{i[t].default=r.parameterMacro(s,e)}catch(e){var o=new Error(e);return o.fullPath=n,o}}),_e.replace(n,i)}return _e.replace(n,e)}},yt={key:"properties",plugin:function(e,t,n,r){var o=ie()({},e);for(var i in e)try{o[i].default=r.modelPropertyMacro(o[i])}catch(e){var a=new Error(e);return a.fullPath=n,a}return _e.replace(n,o)}};function bt(e,t){var n=m()(e);if(h.a){var r=h()(e);t&&(r=r.filter(function(t){return p()(e,t).enumerable})),n.push.apply(n,r)}return n}var _t=function(){function e(t){se()(this,e),this.root=wt(t||{})}return ce()(e,[{key:"set",value:function(e,t){var n=this.getParent(e,!0);if(n){var r=e[e.length-1],o=n.children;o[r]?xt(o[r],t,n):o[r]=wt(t,n)}else xt(this.root,t,null)}},{key:"get",value:function(e){if((e=e||[]).length<1)return this.root.value;for(var t,n,r=this.root,o=0;o1?n-1:0),o=1;o1?n-1:0),o=1;o0})}},{key:"nextPromisedPatch",value:function(){if(this.promisedPatches.length>0)return Q.a.race(this.promisedPatches.map(function(e){return e.value}))}},{key:"getPluginHistory",value:function(e){var t=this.getPluginName(e);return this.pluginHistory[t]||[]}},{key:"getPluginRunCount",value:function(e){return this.getPluginHistory(e).length}},{key:"getPluginHistoryTip",value:function(e){var t=this.getPluginHistory(e);return t&&t[t.length-1]||{}}},{key:"getPluginMutationIndex",value:function(e){var t=this.getPluginHistoryTip(e).mutationIndex;return"number"!=typeof t?-1:t}},{key:"getPluginName",value:function(e){return e.pluginName}},{key:"updatePluginHistory",value:function(e,t){var n=this.getPluginName(e);(this.pluginHistory[n]=this.pluginHistory[n]||[]).push(t)}},{key:"updatePatches",value:function(e,t){var n=this;_e.normalizeArray(e).forEach(function(e){if(e instanceof Error)n.errors.push(e);else try{if(!_e.isObject(e))return void n.debug("updatePatches","Got a non-object patch",e);if(n.showDebug&&n.allPatches.push(e),_e.isPromise(e.value))return n.promisedPatches.push(e),void n.promisedPatchThen(e);if(_e.isContextPatch(e))return void n.setContext(e.path,e.value);if(_e.isMutation(e))return void n.updateMutations(e)}catch(e){console.error(e),n.errors.push(e)}})}},{key:"updateMutations",value:function(e){"object"===P()(e.value)&&!M()(e.value)&&this.allowMetaPatches&&(e.value=ie()({},e.value));var t=_e.applyPatch(this.state,e,{allowMetaPatches:this.allowMetaPatches});t&&(this.mutations.push(e),this.state=t)}},{key:"removePromisedPatch",value:function(e){var t=this.promisedPatches.indexOf(e);t<0?this.debug("Tried to remove a promisedPatch that isn't there!"):this.promisedPatches.splice(t,1)}},{key:"promisedPatchThen",value:function(e){var t=this;return e.value=e.value.then(function(n){var r=ie()({},e,{value:n});t.removePromisedPatch(e),t.updatePatches(r)}).catch(function(n){t.removePromisedPatch(e),t.updatePatches(n)})}},{key:"getMutations",value:function(e,t){return e=e||0,"number"!=typeof t&&(t=this.mutations.length),this.mutations.slice(e,t)}},{key:"getCurrentMutations",value:function(){return this.getMutationsForPlugin(this.getCurrentPlugin())}},{key:"getMutationsForPlugin",value:function(e){var t=this.getPluginMutationIndex(e);return this.getMutations(t+1)}},{key:"getCurrentPlugin",value:function(){return this.currentPlugin}},{key:"getPatchesOfType",value:function(e,t){return e.filter(t)}},{key:"getLib",value:function(){return this.libMethods}},{key:"_get",value:function(e){return _e.getIn(this.state,e)}},{key:"_getContext",value:function(e){return this.contextTree.get(e)}},{key:"setContext",value:function(e,t){return this.contextTree.set(e,t)}},{key:"_hasRun",value:function(e){return this.getPluginRunCount(this.getCurrentPlugin())>(e||0)}},{key:"_clone",value:function(e){return JSON.parse(T()(e))}},{key:"dispatch",value:function(){var e=this,t=this,n=this.nextPlugin();if(!n){var r=this.nextPromisedPatch();if(r)return r.then(function(){return e.dispatch()}).catch(function(){return e.dispatch()});var o={spec:this.state,errors:this.errors};return this.showDebug&&(o.patches=this.allPatches),Q.a.resolve(o)}if(t.pluginCount=t.pluginCount||{},t.pluginCount[n]=(t.pluginCount[n]||0)+1,t.pluginCount[n]>100)return Q.a.resolve({spec:t.state,errors:t.errors.concat(new Error("We've reached a hard limit of ".concat(100," plugin runs")))});if(n!==this.currentPlugin&&this.promisedPatches.length){var i=this.promisedPatches.map(function(e){return e.value});return Q.a.all(i.map(function(e){return e.then(Function,Function)})).then(function(){return e.dispatch()})}return function(){t.currentPlugin=n;var e=t.getCurrentMutations(),r=t.mutations.length-1;try{if(n.isGenerator){var o=!0,i=!1,s=void 0;try{for(var u,c=te()(n(e,t.getLib()));!(o=(u=c.next()).done);o=!0){a(u.value)}}catch(e){i=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(i)throw s}}}else{a(n(e,t.getLib()))}}catch(e){console.error(e),a([ie()(re()(e),{plugin:n})])}finally{t.updatePluginHistory(n,{mutationIndex:r})}return t.dispatch()}();function a(e){e&&(e=_e.fullyNormalizeArray(e),t.updatePatches(e,n))}}}]),e}();var St={refs:ot,allOf:vt,parameters:gt,properties:yt},Ct=n(29),kt=n.n(Ct),Ot=function(e){return String.prototype.toLowerCase.call(e)},At=function(e){return e.replace(/[^\w]/gi,"_")};function Tt(e){var t=e.openapi;return!!t&&w()(t,"3")}function jt(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).v2OperationIdCompatibilityMode;return e&&"object"===P()(e)?(e.operationId||"").replace(/\s/g,"").length?At(e.operationId):function(e,t){if((arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).v2OperationIdCompatibilityMode){var n="".concat(t.toLowerCase(),"_").concat(e).replace(/[\s!@#$%^&*()_+=[{\]};:<>|.\/?,\\'""-]/g,"_");return(n=n||"".concat(e.substring(1),"_").concat(t)).replace(/((_){2,})/g,"_").replace(/^(_)*/g,"").replace(/([_])*$/g,"")}return"".concat(Ot(t)).concat(At(e))}(t,n,{v2OperationIdCompatibilityMode:r}):null}function Pt(e,t){return"".concat(Ot(t),"-").concat(e)}function It(e,t){return e&&e.paths?function(e,t){return Mt(e,t,!0)||null}(e,function(e){var n=e.pathName,r=e.method,o=e.operation;if(!o||"object"!==P()(o))return!1;var i=o.operationId;return[jt(o,n,r),Pt(n,r),i].some(function(e){return e&&e===t})}):null}function Mt(e,t,n){if(!e||"object"!==P()(e)||!e.paths||"object"!==P()(e.paths))return null;var r=e.paths;for(var o in r)for(var i in r[o])if("PARAMETERS"!==i.toUpperCase()){var a=r[o][i];if(a&&"object"===P()(a)){var s={spec:e,pathName:o,method:i.toUpperCase(),operation:a},u=t(s);if(n&&u)return s}}}function Nt(e){var t=e.spec,n=t.paths,r={};if(!n||t.$$normalized)return e;for(var o in n){var i=n[o];if(kt()(i)){var a=i.parameters,s=function(e){var n=i[e];if(!kt()(n))return"continue";var s=jt(n,o,e);if(s){r[s]?r[s].push(n):r[s]=[n];var u=r[s];if(u.length>1)u.forEach(function(e,t){e.__originalOperationId=e.__originalOperationId||e.operationId,e.operationId="".concat(s).concat(t+1)});else if(void 0!==n.operationId){var c=u[0];c.__originalOperationId=c.__originalOperationId||n.operationId,c.operationId=s}}if("parameters"!==e){var l=[],p={};for(var f in t)"produces"!==f&&"consumes"!==f&&"security"!==f||(p[f]=t[f],l.push(p));if(a&&(p.parameters=a,l.push(p)),l.length)for(var h=0,d=l;h1&&void 0!==arguments[1]?arguments[1]:{},n=t.requestInterceptor,r=t.responseInterceptor,o=e.withCredentials?"include":"same-origin";return function(t){return e({url:t,loadSpec:!0,requestInterceptor:n,responseInterceptor:r,headers:{Accept:Ge},credentials:o}).then(function(e){return e.body})}}function Dt(e){var t=e.fetch,n=e.spec,r=e.url,o=e.mode,i=e.allowMetaPatches,a=void 0===i||i,s=e.pathDiscriminator,u=e.modelPropertyMacro,c=e.parameterMacro,l=e.requestInterceptor,p=e.responseInterceptor,f=e.skipNormalization,h=e.useCircularStructures,d=e.http,m=e.baseDoc;return m=m||r,d=t||d||V,n?v(n):Rt(d,{requestInterceptor:l,responseInterceptor:p})(m).then(v);function v(e){m&&(St.refs.docCache[m]=e),St.refs.fetchJSON=Rt(d,{requestInterceptor:l,responseInterceptor:p});var t,n=[St.refs];return"function"==typeof c&&n.push(St.parameters),"function"==typeof u&&n.push(St.properties),"strict"!==o&&n.push(St.allOf),(t={spec:e,context:{baseDoc:m},plugins:n,allowMetaPatches:a,pathDiscriminator:s,parameterMacro:c,modelPropertyMacro:u,useCircularStructures:h},new Et(t).dispatch()).then(f?function(){var e=R()(C.a.mark(function e(t){return C.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t);case 1:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}():Nt)}}var Lt=n(16),Ut=n.n(Lt);function qt(e,t){var n=m()(e);if(h.a){var r=h()(e);t&&(r=r.filter(function(t){return p()(e,t).enumerable})),n.push.apply(n,r)}return n}function Ft(e){for(var t=1;t2&&void 0!==m[2]?m[2]:{},o=r.returnEntireTree,i=r.baseDoc,a=r.requestInterceptor,s=r.responseInterceptor,u=r.parameterMacro,c=r.modelPropertyMacro,l=r.useCircularStructures,p={pathDiscriminator:n,baseDoc:i,requestInterceptor:a,responseInterceptor:s,parameterMacro:u,modelPropertyMacro:c,useCircularStructures:l},f=Nt({spec:t}),h=f.spec,e.next=6,Dt(Ft({},p,{spec:h,allowMetaPatches:!0,skipNormalization:!0}));case 6:return d=e.sent,!o&&M()(n)&&n.length&&(d.spec=Ut()(d.spec,n)||null),e.abrupt("return",d);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}var zt=n(38),Vt=n.n(zt);function Ht(e,t){var n=m()(e);if(h.a){var r=h()(e);t&&(r=r.filter(function(t){return p()(e,t).enumerable})),n.push.apply(n,r)}return n}function Wt(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};return function(t){var n=t.pathName,r=t.method,o=t.operationId;return function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.execute(Wt({spec:e.spec},Vt()(e,"requestInterceptor","responseInterceptor","userFetch"),{pathName:n,method:r,parameters:t,operationId:o},i))}}}};var $t=n(39),Gt=n.n($t),Zt=n(40),Xt=n.n(Zt),Qt=n(41),en=n.n(Qt),tn=n(19),nn=n.n(tn),rn=n(42),on=n.n(rn),an={body:function(e){var t=e.req,n=e.value;t.body=n},header:function(e){var t=e.req,n=e.parameter,r=e.value;t.headers=t.headers||{},void 0!==r&&(t.headers[n.name]=r)},query:function(e){var t=e.req,n=e.value,r=e.parameter;t.query=t.query||{},!1===n&&"boolean"===r.type&&(n="false");0===n&&["number","integer"].indexOf(r.type)>-1&&(n="0");if(n)t.query[r.name]={collectionFormat:r.collectionFormat,value:n};else if(r.allowEmptyValue&&void 0!==n){var o=r.name;t.query[o]=t.query[o]||{},t.query[o].allowEmptyValue=!0}},path:function(e){var t=e.req,n=e.value,r=e.parameter;t.url=t.url.split("{".concat(r.name,"}")).join(encodeURIComponent(n))},formData:function(e){var t=e.req,n=e.value,r=e.parameter;(n||r.allowEmptyValue)&&(t.form=t.form||{},t.form[r.name]={value:n,allowEmptyValue:r.allowEmptyValue,collectionFormat:r.collectionFormat})}};n(49);var sn=n(43),un=n.n(sn),cn=n(44),ln=function(e){return":/?#[]@!$&'()*+,;=".indexOf(e)>-1},pn=function(e){return/^[a-z0-9\-._~]+$/i.test(e)};function fn(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).escape,n=arguments.length>2?arguments[2]:void 0;return"number"==typeof e&&(e=e.toString()),"string"==typeof e&&e.length&&t?n?JSON.parse(e):Object(cn.stringToCharArray)(e).map(function(e){return pn(e)?e:ln(e)&&"unsafe"===t?e:(un()(e)||[]).map(function(e){return"0".concat(e.toString(16).toUpperCase()).slice(-2)}).map(function(e){return"%".concat(e)}).join("")}).join(""):e}function hn(e){var t=e.value;return M()(t)?function(e){var t=e.key,n=e.value,r=e.style,o=e.explode,i=e.escape,a=function(e){return fn(e,{escape:i})};if("simple"===r)return n.map(function(e){return a(e)}).join(",");if("label"===r)return".".concat(n.map(function(e){return a(e)}).join("."));if("matrix"===r)return n.map(function(e){return a(e)}).reduce(function(e,n){return!e||o?"".concat(e||"",";").concat(t,"=").concat(n):"".concat(e,",").concat(n)},"");if("form"===r){var s=o?"&".concat(t,"="):",";return n.map(function(e){return a(e)}).join(s)}if("spaceDelimited"===r){var u=o?"".concat(t,"="):"";return n.map(function(e){return a(e)}).join(" ".concat(u))}if("pipeDelimited"===r){var c=o?"".concat(t,"="):"";return n.map(function(e){return a(e)}).join("|".concat(c))}}(e):"object"===P()(t)?function(e){var t=e.key,n=e.value,r=e.style,o=e.explode,i=e.escape,a=function(e){return fn(e,{escape:i})},s=m()(n);if("simple"===r)return s.reduce(function(e,t){var r=a(n[t]),i=o?"=":",",s=e?"".concat(e,","):"";return"".concat(s).concat(t).concat(i).concat(r)},"");if("label"===r)return s.reduce(function(e,t){var r=a(n[t]),i=o?"=":".",s=e?"".concat(e,"."):".";return"".concat(s).concat(t).concat(i).concat(r)},"");if("matrix"===r&&o)return s.reduce(function(e,t){var r=a(n[t]),o=e?"".concat(e,";"):";";return"".concat(o).concat(t,"=").concat(r)},"");if("matrix"===r)return s.reduce(function(e,r){var o=a(n[r]),i=e?"".concat(e,","):";".concat(t,"=");return"".concat(i).concat(r,",").concat(o)},"");if("form"===r)return s.reduce(function(e,t){var r=a(n[t]),i=e?"".concat(e).concat(o?"&":","):"",s=o?"=":",";return"".concat(i).concat(t).concat(s).concat(r)},"")}(e):function(e){var t=e.key,n=e.value,r=e.style,o=e.escape,i=function(e){return fn(e,{escape:o})};if("simple"===r)return i(n);if("label"===r)return".".concat(i(n));if("matrix"===r)return";".concat(t,"=").concat(i(n));if("form"===r)return i(n);if("deepObject"===r)return i(n)}(e)}function dn(e,t){return t.includes("application/json")?"string"==typeof e?e:T()(e):e.toString()}function mn(e){var t=e.req,n=e.value,r=e.parameter,o=r.name,i=r.style,a=r.explode,s=r.content;if(s){var u=m()(s)[0];t.url=t.url.split("{".concat(o,"}")).join(fn(dn(n,u),{escape:!0}))}else{var c=hn({key:r.name,value:n,style:i||"simple",explode:a||!1,escape:!0});t.url=t.url.split("{".concat(o,"}")).join(c)}}function vn(e){var t=e.req,n=e.value,r=e.parameter;if(t.query=t.query||{},r.content){var o=m()(r.content)[0];t.query[r.name]=dn(n,o)}else if(!1===n&&(n="false"),0===n&&(n="0"),n){var i=P()(n);if("deepObject"===r.style)m()(n).forEach(function(e){var o=n[e];t.query["".concat(r.name,"[").concat(e,"]")]={value:hn({key:e,value:o,style:"deepObject",escape:r.allowReserved?"unsafe":"reserved"}),skipEncoding:!0}});else if("object"!==i||M()(n)||"form"!==r.style&&r.style||!r.explode&&void 0!==r.explode)t.query[r.name]={value:hn({key:r.name,value:n,style:r.style||"form",explode:void 0===r.explode||r.explode,escape:r.allowReserved?"unsafe":"reserved"}),skipEncoding:!0};else{m()(n).forEach(function(e){var o=n[e];t.query[e]={value:hn({key:e,value:o,style:r.style||"form",escape:r.allowReserved?"unsafe":"reserved"}),skipEncoding:!0}})}}else if(r.allowEmptyValue&&void 0!==n){var a=r.name;t.query[a]=t.query[a]||{},t.query[a].allowEmptyValue=!0}}var gn=["accept","authorization","content-type"];function yn(e){var t=e.req,n=e.parameter,r=e.value;if(t.headers=t.headers||{},!(gn.indexOf(n.name.toLowerCase())>-1))if(n.content){var o=m()(n.content)[0];t.headers[n.name]=dn(r,o)}else void 0!==r&&(t.headers[n.name]=hn({key:n.name,value:r,style:n.style||"simple",explode:void 0!==n.explode&&n.explode,escape:!1}))}function bn(e){var t=e.req,n=e.parameter,r=e.value;t.headers=t.headers||{};var o=P()(r);if(n.content){var i=m()(n.content)[0];t.headers.Cookie="".concat(n.name,"=").concat(dn(r,i))}else if("undefined"!==o){var a="object"===o&&!M()(r)&&n.explode?"":"".concat(n.name,"=");t.headers.Cookie=a+hn({key:n.name,value:r,escape:!1,style:n.style||"form",explode:void 0!==n.explode&&n.explode})}}var _n=n(30),wn=function(e,t){var n=e.operation,r=e.requestBody,o=e.securities,i=e.spec,a=e.attachContentTypeForEmptyPayload,s=e.requestContentType;t=function(e){var t=e.request,n=e.securities,r=void 0===n?{}:n,o=e.operation,i=void 0===o?{}:o,a=e.spec,s=b()({},t),u=r.authorized,c=void 0===u?{}:u,l=i.security||a.security||[],p=c&&!!m()(c).length,f=Ut()(a,["components","securitySchemes"])||{};if(s.headers=s.headers||{},s.query=s.query||{},!m()(r).length||!p||!l||M()(i.security)&&!i.security.length)return t;return l.forEach(function(e,t){for(var n in e){var r=c[n],o=f[n];if(r){var i=r.value||r,a=o.type;if(r)if("apiKey"===a)"query"===o.in&&(s.query[o.name]=i),"header"===o.in&&(s.headers[o.name]=i),"cookie"===o.in&&(s.cookies[o.name]=i);else if("http"===a){if("basic"===o.scheme){var u=i.username,l=i.password,p=nn()("".concat(u,":").concat(l));s.headers.Authorization="Basic ".concat(p)}"bearer"===o.scheme&&(s.headers.Authorization="Bearer ".concat(i))}else if("oauth2"===a){var h=r.token||{},d=h.access_token,m=h.token_type;m&&"bearer"!==m.toLowerCase()||(m="Bearer"),s.headers.Authorization="".concat(m," ").concat(d)}}}}),s}({request:t,securities:o,operation:n,spec:i});var u=n.requestBody||{},c=m()(u.content||{}),l=s&&c.indexOf(s)>-1;if(r||a){if(s&&l)t.headers["Content-Type"]=s;else if(!s){var p=c[0];p&&(t.headers["Content-Type"]=p,s=p)}}else s&&l&&(t.headers["Content-Type"]=s);return r&&(s?c.indexOf(s)>-1&&("application/x-www-form-urlencoded"===s||0===s.indexOf("multipart/")?"object"===P()(r)?(t.form={},m()(r).forEach(function(e){var n,o,i=r[e];"undefined"!=typeof File&&(o=i instanceof File),"undefined"!=typeof Blob&&(o=o||i instanceof Blob),void 0!==_n.Buffer&&(o=o||_n.Buffer.isBuffer(i)),n="object"!==P()(i)||o?i:M()(i)?i.toString():T()(i),t.form[e]={value:n}})):t.form=r:t.body=r):t.body=r),t};var xn=function(e,t){var n=e.spec,r=e.operation,o=e.securities,i=e.requestContentType,a=e.attachContentTypeForEmptyPayload;if((t=function(e){var t=e.request,n=e.securities,r=void 0===n?{}:n,o=e.operation,i=void 0===o?{}:o,a=e.spec,s=b()({},t),u=r.authorized,c=void 0===u?{}:u,l=r.specSecurity,p=void 0===l?[]:l,f=i.security||p,h=c&&!!m()(c).length,d=a.securityDefinitions;if(s.headers=s.headers||{},s.query=s.query||{},!m()(r).length||!h||!f||M()(i.security)&&!i.security.length)return t;return f.forEach(function(e,t){for(var n in e){var r=c[n];if(r){var o=r.token,i=r.value||r,a=d[n],u=a.type,l=a["x-tokenName"]||"access_token",p=o&&o[l],f=o&&o.token_type;if(r)if("apiKey"===u){var h="query"===a.in?"query":"headers";s[h]=s[h]||{},s[h][a.name]=i}else"basic"===u?i.header?s.headers.authorization=i.header:(i.base64=nn()("".concat(i.username,":").concat(i.password)),s.headers.authorization="Basic ".concat(i.base64)):"oauth2"===u&&p&&(f=f&&"bearer"!==f.toLowerCase()?f:"Bearer",s.headers.authorization="".concat(f," ").concat(p))}}}),s}({request:t,securities:o,operation:r,spec:n})).body||t.form||a)i?t.headers["Content-Type"]=i:M()(r.consumes)?t.headers["Content-Type"]=r.consumes[0]:M()(n.consumes)?t.headers["Content-Type"]=n.consumes[0]:r.parameters&&r.parameters.filter(function(e){return"file"===e.type}).length?t.headers["Content-Type"]="multipart/form-data":r.parameters&&r.parameters.filter(function(e){return"formData"===e.in}).length&&(t.headers["Content-Type"]="application/x-www-form-urlencoded");else if(i){var s=r.parameters&&r.parameters.filter(function(e){return"body"===e.in}).length>0,u=r.parameters&&r.parameters.filter(function(e){return"formData"===e.in}).length>0;(s||u)&&(t.headers["Content-Type"]=i)}return t};function En(e,t){var n=m()(e);if(h.a){var r=h()(e);t&&(r=r.filter(function(t){return p()(e,t).enumerable})),n.push.apply(n,r)}return n}function Sn(e){for(var t=1;t-1&&(c=o,l=u[p.indexOf(o)])}return!c&&u&&u.length&&(c=u[0].url,l=u[0]),c.indexOf("{")>-1&&function(e){for(var t,n=[],r=/{([^}]+)}/g;t=r.exec(e);)n.push(t[1]);return n}(c).forEach(function(e){if(l.variables&&l.variables[e]){var t=l.variables[e],n=s[e]||t.default,r=new RegExp("{".concat(e,"}"),"g");c=c.replace(r,n)}}),function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=E.a.parse(t),o=E.a.parse(n),i=Pn(r.protocol)||Pn(o.protocol)||"",a=r.host||o.host,s=r.pathname||"";return"/"===(e=i&&a?"".concat(i,"://").concat(a+s):s)[e.length-1]?e.slice(0,-1):e}(c,i)}(b):function(e){var t,n=e.spec,r=e.scheme,o=e.contextUrl,i=void 0===o?"":o,a=E.a.parse(i),s=M()(n.schemes)?n.schemes[0]:null,u=r||s||Pn(a.protocol)||"http",c=n.host||a.host||"",l=n.basePath||"";return"/"===(t=u&&c?"".concat(u,"://").concat(c+l):l)[t.length-1]?t.slice(0,-1):t}(b),!n)return delete g.cookies,g;g.url+=S,g.method="".concat(x).toUpperCase(),h=h||{};var C=t.paths[S]||{};o&&(g.headers.accept=o);var k=An([].concat(Cn(w.parameters)).concat(Cn(C.parameters)));k.forEach(function(e){var n,r=d[e.in];if("body"===e.in&&e.schema&&e.schema.properties&&(n=h),void 0===(n=e&&e.name&&h[e.name])?n=e&&e.name&&h["".concat(e.in,".").concat(e.name)]:On(e.name,k).length>1&&console.warn("Parameter '".concat(e.name,"' is ambiguous because the defined spec has more than one parameter with the name: '").concat(e.name,"' and the passed-in parameter values did not define an 'in' value.")),null!==n){if(void 0!==e.default&&void 0===n&&(n=e.default),void 0===n&&e.required&&!e.allowEmptyValue)throw new Error("Required parameter ".concat(e.name," is not provided"));if(v&&e.schema&&"object"===e.schema.type&&"string"==typeof n)try{n=JSON.parse(n)}catch(e){throw new Error("Could not parse object parameter value string as JSON")}r&&r({req:g,parameter:e,value:n,operation:w,spec:t})}});var O=Sn({},e,{operation:w});if((g=v?wn(O,g):xn(O,g)).cookies&&m()(g.cookies).length){var A=m()(g.cookies).reduce(function(e,t){var n=g.cookies[t];return e+(e?"&":"")+on.a.serialize(t,n)},"");g.headers.Cookie=A}return g.cookies&&delete g.cookies,Z(g),g}var Pn=function(e){return e?e.replace(/\W/g,""):null};function In(e,t){var n=m()(e);if(h.a){var r=h()(e);t&&(r=r.filter(function(t){return p()(e,t).enumerable})),n.push.apply(n,r)}return n}function Mn(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("string"==typeof e?n.url=e:n=e,!(this instanceof Mn))return new Mn(n);b()(this,n);var r=this.resolve().then(function(){return t.disableInterfaces||b()(t,Mn.makeApisTagOperation(t)),t});return r.client=this,r}Mn.http=V,Mn.makeHttp=function(e,t,n){return n=n||function(e){return e},t=t||function(e){return e},function(r){return"string"==typeof r&&(r={url:r}),z.mergeInQueryOrForm(r),r=t(r),n(e(r))}}.bind(null,Mn.http),Mn.resolve=Dt,Mn.resolveSubtree=function(e,t){return Bt.apply(this,arguments)},Mn.execute=function(e){var t=e.http,n=e.fetch,r=e.spec,o=e.operationId,i=e.pathName,a=e.method,s=e.parameters,u=e.securities,c=Gt()(e,["http","fetch","spec","operationId","pathName","method","parameters","securities"]),l=t||n||V;i&&a&&!o&&(o=Pt(i,a));var p=Tn.buildRequest(Sn({spec:r,operationId:o,parameters:s,securities:u,http:l},c));return p.body&&(Xt()(p.body)||en()(p.body))&&(p.body=T()(p.body)),l(p)},Mn.serializeRes=J,Mn.serializeHeaders=K,Mn.clearCache=function(){St.refs.clearCache()},Mn.makeApisTagOperation=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Yt.makeExecute(e);return{apis:Yt.mapTagOperations({v2OperationIdCompatibilityMode:e.v2OperationIdCompatibilityMode,spec:e.spec,cb:t})}},Mn.buildRequest=jn,Mn.helpers={opId:jt},Mn.prototype={http:V,execute:function(e){return this.applyDefaults(),Mn.execute(function(e){for(var t=1;t - * @license MIT - */ -var r=n(569),o=n(570),i=n(355);function a(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function d(e,t){if(u.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return z(e).length;default:if(r)return B(e).length;t=(""+t).toLowerCase(),r=!0}}function m(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return j(this,t,n);case"utf8":case"utf-8":return k(this,t,n);case"ascii":return A(this,t,n);case"latin1":case"binary":return T(this,t,n);case"base64":return C(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function v(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=u.from(t,r)),u.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,o);if("number"==typeof t)return t&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,o){var i,a=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,n/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var l=-1;for(i=n;is&&(n=s-u),i=n;i>=0;i--){for(var p=!0,f=0;fo&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function C(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function k(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+p<=n)switch(p){case 1:c<128&&(l=c);break;case 2:128==(192&(i=e[o+1]))&&(u=(31&c)<<6|63&i)>127&&(l=u);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(u=(15&c)<<12|(63&i)<<6|63&a)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(u=(15&c)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&u<1114112&&(l=u)}null===l?(l=65533,p=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),o+=p}return function(e){var t=e.length;if(t<=O)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},u.prototype.compare=function(e,t,n,r,o){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(i,a),c=this.slice(r,o),l=e.slice(t,n),p=0;po)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return b(this,e,t,n);case"utf8":case"utf-8":return _(this,e,t,n);case"ascii":return w(this,e,t,n);case"latin1":case"binary":return x(this,e,t,n);case"base64":return E(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var O=4096;function A(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,n,r,o,i){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function N(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function R(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function D(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function L(e,t,n,r,i){return i||D(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function U(e,t,n,r,i){return i||D(e,0,n,8),o.write(e,t,n,r,52,8),n+8}u.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},u.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},u.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},u.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||M(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},u.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},u.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},u.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},u.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},u.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);M(this,e,t,n,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},u.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);M(this,e,t,n,o-1,-o)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},u.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},u.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},u.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},u.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},u.prototype.writeFloatLE=function(e,t,n){return L(this,e,t,!0,n)},u.prototype.writeFloatBE=function(e,t,n){return L(this,e,t,!1,n)},u.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},u.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},u.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(i<1e3||!u.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function z(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(q,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function V(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}}).call(this,n(36))},function(e,t,n){"use strict";e.exports={current:null}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var u,c=[],l=!1,p=-1;function f(){l&&u&&(l=!1,u.length?c=u.concat(c):p=-1,c.length&&h())}function h(){if(!l){var e=s(f);l=!0;for(var t=c.length;t;){for(u=c,c=[];++p1)for(var n=1;n0&&"/"!==t[0]});function oe(e,t,n){return t=t||[],te.apply(void 0,[e].concat(u()(t))).get("parameters",Object(p.List)()).reduce(function(e,t){var r=n&&"body"===t.get("in")?t.get("value_xml"):t.get("value");return e.set(Object(l.B)(t,{allowHashes:!1}),r)},Object(p.fromJS)({}))}function ie(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(p.List.isList(e))return e.some(function(e){return p.Map.isMap(e)&&e.get("in")===t})}function ae(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(p.List.isList(e))return e.some(function(e){return p.Map.isMap(e)&&e.get("type")===t})}function se(e,t){t=t||[];var n=x(e).getIn(["paths"].concat(u()(t)),Object(p.fromJS)({})),r=e.getIn(["meta","paths"].concat(u()(t)),Object(p.fromJS)({})),o=ue(e,t),i=n.get("parameters")||new p.List,a=r.get("consumes_value")?r.get("consumes_value"):ae(i,"file")?"multipart/form-data":ae(i,"formData")?"application/x-www-form-urlencoded":void 0;return Object(p.fromJS)({requestContentType:a,responseContentType:o})}function ue(e,t){t=t||[];var n=x(e).getIn(["paths"].concat(u()(t)),null);if(null!==n){var r=e.getIn(["meta","paths"].concat(u()(t),["produces_value"]),null),o=n.getIn(["produces",0],null);return r||o||"application/json"}}function ce(e,t){t=t||[];var n=x(e),r=n.getIn(["paths"].concat(u()(t)),null);if(null!==r){var o=t,i=a()(o,1)[0],s=r.get("produces",null),c=n.getIn(["paths",i,"produces"],null),l=n.getIn(["produces"],null);return s||c||l}}function le(e,t){t=t||[];var n=x(e),r=n.getIn(["paths"].concat(u()(t)),null);if(null!==r){var o=t,i=a()(o,1)[0],s=r.get("consumes",null),c=n.getIn(["paths",i,"consumes"],null),l=n.getIn(["consumes"],null);return s||c||l}}var pe=function(e,t,n){var r=e.get("url").match(/^([a-z][a-z0-9+\-.]*):/),i=o()(r)?r[1]:null;return e.getIn(["scheme",t,n])||e.getIn(["scheme","_defaultScheme"])||i||""},fe=function(e,t,n){return["http","https"].indexOf(pe(e,t,n))>-1},he=function(e,t){t=t||[];var n=e.getIn(["meta","paths"].concat(u()(t),["parameters"]),Object(p.fromJS)([])),r=!0;return n.forEach(function(e){var t=e.get("errors");t&&t.count()&&(r=!1)}),r};function de(e){return p.Map.isMap(e)?e:new p.Map}},function(e,t,n){"use strict";n.r(t),n.d(t,"SHOW_AUTH_POPUP",function(){return d}),n.d(t,"AUTHORIZE",function(){return m}),n.d(t,"LOGOUT",function(){return v}),n.d(t,"PRE_AUTHORIZE_OAUTH2",function(){return g}),n.d(t,"AUTHORIZE_OAUTH2",function(){return y}),n.d(t,"VALIDATE",function(){return b}),n.d(t,"CONFIGURE_AUTH",function(){return _}),n.d(t,"showDefinitions",function(){return w}),n.d(t,"authorize",function(){return x}),n.d(t,"logout",function(){return E}),n.d(t,"preAuthorizeImplicit",function(){return S}),n.d(t,"authorizeOauth2",function(){return C}),n.d(t,"authorizePassword",function(){return k}),n.d(t,"authorizeApplication",function(){return O}),n.d(t,"authorizeAccessCodeWithFormParams",function(){return A}),n.d(t,"authorizeAccessCodeWithBasicAuthentication",function(){return T}),n.d(t,"authorizeRequest",function(){return j}),n.d(t,"configureAuth",function(){return P});var r=n(26),o=n.n(r),i=n(16),a=n.n(i),s=n(28),u=n.n(s),c=n(95),l=n.n(c),p=n(18),f=n.n(p),h=n(3),d="show_popup",m="authorize",v="logout",g="pre_authorize_oauth2",y="authorize_oauth2",b="validate",_="configure_auth";function w(e){return{type:d,payload:e}}function x(e){return{type:m,payload:e}}function E(e){return{type:v,payload:e}}var S=function(e){return function(t){var n=t.authActions,r=t.errActions,o=e.auth,i=e.token,a=e.isValid,s=o.schema,c=o.name,l=s.get("flow");delete f.a.swaggerUIRedirectOauth2,"accessCode"===l||a||r.newAuthErr({authId:c,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),i.error?r.newAuthErr({authId:c,source:"auth",level:"error",message:u()(i)}):n.authorizeOauth2({auth:o,token:i})}};function C(e){return{type:y,payload:e}}var k=function(e){return function(t){var n=t.authActions,r=e.schema,o=e.name,i=e.username,s=e.password,u=e.passwordType,c=e.clientId,l=e.clientSecret,p={grant_type:"password",scope:e.scopes.join(" "),username:i,password:s},f={};switch(u){case"request-body":!function(e,t,n){t&&a()(e,{client_id:t});n&&a()(e,{client_secret:n})}(p,c,l);break;case"basic":f.Authorization="Basic "+Object(h.a)(c+":"+l);break;default:console.warn("Warning: invalid passwordType ".concat(u," was passed, not including client id and secret"))}return n.authorizeRequest({body:Object(h.b)(p),url:r.get("tokenUrl"),name:o,headers:f,query:{},auth:e})}};var O=function(e){return function(t){var n=t.authActions,r=e.schema,o=e.scopes,i=e.name,a=e.clientId,s=e.clientSecret,u={Authorization:"Basic "+Object(h.a)(a+":"+s)},c={grant_type:"client_credentials",scope:o.join(" ")};return n.authorizeRequest({body:Object(h.b)(c),name:i,url:r.get("tokenUrl"),auth:e,headers:u})}},A=function(e){var t=e.auth,n=e.redirectUrl;return function(e){var r=e.authActions,o=t.schema,i=t.name,a=t.clientId,s=t.clientSecret,u=t.codeVerifier,c={grant_type:"authorization_code",code:t.code,client_id:a,client_secret:s,redirect_uri:n,code_verifier:u};return r.authorizeRequest({body:Object(h.b)(c),name:i,url:o.get("tokenUrl"),auth:t})}},T=function(e){var t=e.auth,n=e.redirectUrl;return function(e){var r=e.authActions,o=t.schema,i=t.name,a=t.clientId,s=t.clientSecret,u={Authorization:"Basic "+Object(h.a)(a+":"+s)},c={grant_type:"authorization_code",code:t.code,client_id:a,redirect_uri:n};return r.authorizeRequest({body:Object(h.b)(c),name:i,url:o.get("tokenUrl"),auth:t,headers:u})}},j=function(e){return function(t){var n,r=t.fn,i=t.getConfigs,s=t.authActions,c=t.errActions,p=t.oas3Selectors,f=t.specSelectors,h=t.authSelectors,d=e.body,m=e.query,v=void 0===m?{}:m,g=e.headers,y=void 0===g?{}:g,b=e.name,_=e.url,w=e.auth,x=(h.getConfigs()||{}).additionalQueryStringParams;n=f.isOAS3()?l()(_,p.selectedServer(),!0):l()(_,f.url(),!0),"object"===o()(x)&&(n.query=a()({},n.query,x));var E=n.toString(),S=a()({Accept:"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},y);r.fetch({url:E,method:"post",headers:S,query:v,body:d,requestInterceptor:i().requestInterceptor,responseInterceptor:i().responseInterceptor}).then(function(e){var t=JSON.parse(e.data),n=t&&(t.error||""),r=t&&(t.parseError||"");e.ok?n||r?c.newAuthErr({authId:b,level:"error",source:"auth",message:u()(t)}):s.authorizeOauth2({auth:w,token:t}):c.newAuthErr({authId:b,level:"error",source:"auth",message:e.statusText})}).catch(function(e){var t=new Error(e).message;if(e.response&&e.response.data){var n=e.response.data;try{var r="string"==typeof n?JSON.parse(n):n;r.error&&(t+=", error: ".concat(r.error)),r.error_description&&(t+=", description: ".concat(r.error_description))}catch(e){}}c.newAuthErr({authId:b,level:"error",source:"auth",message:t})})}};function P(e){return{type:_,payload:e}}},function(e,t){var n=e.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(127),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(211),o=n(210);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(49),o=n(133);e.exports=n(50)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}},function(e,t,n){"use strict";n.r(t),n.d(t,"UPDATE_LAYOUT",function(){return o}),n.d(t,"UPDATE_FILTER",function(){return i}),n.d(t,"UPDATE_MODE",function(){return a}),n.d(t,"SHOW",function(){return s}),n.d(t,"updateLayout",function(){return u}),n.d(t,"updateFilter",function(){return c}),n.d(t,"show",function(){return l}),n.d(t,"changeMode",function(){return p});var r=n(3),o="layout_update_layout",i="layout_update_filter",a="layout_update_mode",s="layout_show";function u(e){return{type:o,payload:e}}function c(e){return{type:i,payload:e}}function l(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e=Object(r.w)(e),{type:s,payload:{thing:e,shown:t}}}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e=Object(r.w)(e),{type:a,payload:{thing:e,mode:t}}}},function(e,t,n){"use strict";(function(t){ -/*! - * @description Recursive object extending - * @author Viacheslav Lotsmanov - * @license MIT - * - * The MIT License (MIT) - * - * Copyright (c) 2013-2018 Viacheslav Lotsmanov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -function n(e){return e instanceof t||e instanceof Date||e instanceof RegExp}function r(e){if(e instanceof t){var n=t.alloc?t.alloc(e.length):new t(e.length);return e.copy(n),n}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);throw new Error("Unexpected situation")}function o(e){var t=[];return e.forEach(function(e,i){"object"==typeof e&&null!==e?Array.isArray(e)?t[i]=o(e):n(e)?t[i]=r(e):t[i]=a({},e):t[i]=e}),t}function i(e,t){return"__proto__"===t?void 0:e[t]}var a=e.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var e,t,s=arguments[0],u=Array.prototype.slice.call(arguments,1);return u.forEach(function(u){"object"!=typeof u||null===u||Array.isArray(u)||Object.keys(u).forEach(function(c){return t=i(s,c),(e=i(u,c))===s?void 0:"object"!=typeof e||null===e?void(s[c]=e):Array.isArray(e)?void(s[c]=o(e)):n(e)?void(s[c]=r(e)):"object"!=typeof t||null===t||Array.isArray(t)?void(s[c]=a({},e)):void(s[c]=a(t,e))})}),s}}).call(this,n(64).Buffer)},function(e,t,n){var r=n(151),o=n(336);e.exports=n(126)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(106),o=n(603),i=n(604),a="[object Null]",s="[object Undefined]",u=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?s:a:u&&u in Object(e)?o(e):i(e)}},function(e,t,n){var r=n(621),o=n(624);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},function(e,t,n){var r=n(380),o=n(661),i=n(107);e.exports=function(e){return i(e)?r(e):o(e)}},function(e,t,n){"use strict";var r=n(178),o=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=p;var i=n(137);i.inherits=n(47);var a=n(390),s=n(240);i.inherits(p,a);for(var u=o(s.prototype),c=0;c=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t){e.exports={}},function(e,t,n){n(561);for(var r=n(32),o=n(77),i=n(102),a=n(34)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),u=0;u1){for(var d=Array(h),m=0;m1){for(var g=Array(v),y=0;y=this._finalSize&&(this._update(this._block),this._block.fill(0));var n=8*this._len;if(n<=4294967295)this._block.writeUInt32BE(n,this._blockSize-4);else{var r=(4294967295&n)>>>0,o=(n-r)/4294967296;this._block.writeUInt32BE(o,this._blockSize-8),this._block.writeUInt32BE(r,this._blockSize-4)}this._update(this._block);var i=this._hash();return e?i.toString(e):i},o.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=o},function(e,t,n){var r=n(63),o=n(406),i=n(407),a=n(46),s=n(158),u=n(225),c={},l={};(t=e.exports=function(e,t,n,p,f){var h,d,m,v,g=f?function(){return e}:u(e),y=r(n,p,t?2:1),b=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(i(g)){for(h=s(e.length);h>b;b++)if((v=t?y(a(d=e[b])[0],d[1]):y(e[b]))===c||v===l)return v}else for(m=g.call(e);!(d=m.next()).done;)if((v=o(m,y,d.value,t))===c||v===l)return v}).BREAK=c,t.RETURN=l},function(e,t,n){"use strict";function r(e){return null==e}e.exports.isNothing=r,e.exports.isObject=function(e){return"object"==typeof e&&null!==e},e.exports.toArray=function(e){return Array.isArray(e)?e:r(e)?[]:[e]},e.exports.repeat=function(e,t){var n,r="";for(n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=Object(i.A)(t),a=r.type,s=r.example,u=r.properties,c=r.additionalProperties,l=r.items,p=n.includeReadOnly,f=n.includeWriteOnly;if(void 0!==s)return Object(i.e)(s,"$$ref",function(e){return"string"==typeof e&&e.indexOf("#")>-1});if(!a)if(u)a="object";else{if(!l)return;a="array"}if("object"===a){var d=Object(i.A)(u),m={};for(var v in d)d[v]&&d[v].deprecated||d[v]&&d[v].readOnly&&!p||d[v]&&d[v].writeOnly&&!f||(m[v]=e(d[v],n));if(!0===c)m.additionalProp1={};else if(c)for(var g=Object(i.A)(c),y=e(g,n),b=1;b<4;b++)m["additionalProp"+b]=y;return m}return"array"===a?o()(l.anyOf)?l.anyOf.map(function(t){return e(t,n)}):o()(l.oneOf)?l.oneOf.map(function(t){return e(t,n)}):[e(l,n)]:t.enum?t.default?t.default:Object(i.w)(t.enum)[0]:"file"!==a?h(t):void 0},m=function(e){return e.schema&&(e=e.schema),e.properties&&(e.type="object"),e},v=function e(t){var n,r,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=p()({},Object(i.A)(t)),u=s.type,c=s.properties,l=s.additionalProperties,f=s.items,d=s.example,m=a.includeReadOnly,v=a.includeWriteOnly,g=s.default,y={},b={},_=t.xml,w=_.name,x=_.prefix,E=_.namespace,S=s.enum;if(!u)if(c||l)u="object";else{if(!f)return;u="array"}if(n=(x?x+":":"")+(w=w||"notagname"),E){var C=x?"xmlns:"+x:"xmlns";b[C]=E}if("array"===u&&f){if(f.xml=f.xml||_||{},f.xml.name=f.xml.name||_.name,_.wrapped)return y[n]=[],o()(d)?d.forEach(function(t){f.example=t,y[n].push(e(f,a))}):o()(g)?g.forEach(function(t){f.default=t,y[n].push(e(f,a))}):y[n]=[e(f,a)],b&&y[n].push({_attr:b}),y;var k=[];return o()(d)?(d.forEach(function(t){f.example=t,k.push(e(f,a))}),k):o()(g)?(g.forEach(function(t){f.default=t,k.push(e(f,a))}),k):e(f,a)}if("object"===u){var O=Object(i.A)(c);for(var A in y[n]=[],d=d||{},O)if(O.hasOwnProperty(A)&&(!O[A].readOnly||m)&&(!O[A].writeOnly||v))if(O[A].xml=O[A].xml||{},O[A].xml.attribute){var T=o()(O[A].enum)&&O[A].enum[0],j=O[A].example,P=O[A].default;b[O[A].xml.name||A]=void 0!==j&&j||void 0!==d[A]&&d[A]||void 0!==P&&P||T||h(O[A])}else{O[A].xml.name=O[A].xml.name||A,void 0===O[A].example&&void 0!==d[A]&&(O[A].example=d[A]);var I=e(O[A]);o()(I)?y[n]=y[n].concat(I):y[n].push(I)}return!0===l?y[n].push({additionalProp:"Anything can be here"}):l&&y[n].push({additionalProp:h(l)}),b&&y[n].push({_attr:b}),y}return r=void 0!==d?d:void 0!==g?g:o()(S)?S[0]:h(t),y[n]=b?[{_attr:b},r]:r,y};function g(e,t){var n=v(e,t);if(n)return s()(n,{declaration:!0,indent:"\t"})}var y=c()(g),b=c()(d)},function(e,t,n){"use strict";n.r(t),n.d(t,"UPDATE_CONFIGS",function(){return i}),n.d(t,"TOGGLE_CONFIGS",function(){return a}),n.d(t,"update",function(){return s}),n.d(t,"toggle",function(){return u}),n.d(t,"loaded",function(){return c});var r=n(2),o=n.n(r),i="configs_update",a="configs_toggle";function s(e,t){return{type:i,payload:o()({},e,t)}}function u(e){return{type:a,payload:e}}var c=function(){return function(){}}},function(e,t,n){"use strict";n.d(t,"a",function(){return a});var r=n(1),o=n.n(r),i=o.a.Set.of("type","format","items","default","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","enum","multipleOf");function a(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).isOAS3;if(!o.a.Map.isMap(e))return{schema:o.a.Map(),parameterContentMediaType:null};if(!t)return"body"===e.get("in")?{schema:e.get("schema",o.a.Map()),parameterContentMediaType:null}:{schema:e.filter(function(e,t){return i.includes(t)}),parameterContentMediaType:null};if(e.get("content")){var n=e.get("content",o.a.Map({})).keySeq().first();return{schema:e.getIn(["content",n,"schema"],o.a.Map()),parameterContentMediaType:n}}return{schema:e.get("schema",o.a.Map()),parameterContentMediaType:null}}},function(e,t,n){e.exports=n(781)},function(e,t,n){"use strict";n.r(t);var r=n(469),o="object"==typeof self&&self&&self.Object===Object&&self,i=(r.a||o||Function("return this")()).Symbol,a=Object.prototype,s=a.hasOwnProperty,u=a.toString,c=i?i.toStringTag:void 0;var l=function(e){var t=s.call(e,c),n=e[c];try{e[c]=void 0;var r=!0}catch(e){}var o=u.call(e);return r&&(t?e[c]=n:delete e[c]),o},p=Object.prototype.toString;var f=function(e){return p.call(e)},h="[object Null]",d="[object Undefined]",m=i?i.toStringTag:void 0;var v=function(e){return null==e?void 0===e?d:h:m&&m in Object(e)?l(e):f(e)};var g=function(e,t){return function(n){return e(t(n))}}(Object.getPrototypeOf,Object);var y=function(e){return null!=e&&"object"==typeof e},b="[object Object]",_=Function.prototype,w=Object.prototype,x=_.toString,E=w.hasOwnProperty,S=x.call(Object);var C=function(e){if(!y(e)||v(e)!=b)return!1;var t=g(e);if(null===t)return!0;var n=E.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&x.call(n)==S},k=n(330),O={INIT:"@@redux/INIT"};function A(e,t,n){var r;if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(A)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var o=e,i=t,a=[],s=a,u=!1;function c(){s===a&&(s=a.slice())}function l(){return i}function p(e){if("function"!=typeof e)throw new Error("Expected listener to be a function.");var t=!0;return c(),s.push(e),function(){if(t){t=!1,c();var n=s.indexOf(e);s.splice(n,1)}}}function f(e){if(!C(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(u)throw new Error("Reducers may not dispatch actions.");try{u=!0,i=o(i,e)}finally{u=!1}for(var t=a=s,n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];if(a)throw a;for(var r=!1,o={},s=0;s0?r:n)(e)}},function(e,t){e.exports={}},function(e,t,n){var r=n(348),o=n(215);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){e.exports=!0},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(49).f,o=n(75),i=n(34)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){var r=n(159)("meta"),o=n(43),i=n(75),a=n(49).f,s=0,u=Object.isExtensible||function(){return!0},c=!n(82)(function(){return u(Object.preventExtensions({}))}),l=function(e){a(e,r,{value:{i:"O"+ ++s,w:{}}})},p=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!u(e))return"F";if(!t)return"E";l(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!u(e))return!0;if(!t)return!1;l(e)}return e[r].w},onFreeze:function(e){return c&&p.NEED&&u(e)&&!i(e,r)&&l(e),e}}},function(e,t,n){"use strict";e.exports=function(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;r1&&void 0!==arguments[1]?arguments[1]:[],n={arrayBehaviour:(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).arrayBehaviour||"replace"},r=t.map(function(e){return e||{}}),i=e||{},c=0;c1?t-1:0),r=1;r")}),p=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();e.exports=function(e,t,n){var f=s(e),h=!i(function(){var t={};return t[f]=function(){return 7},7!=""[e](t)}),d=h?!i(function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===e&&(n.constructor={},n.constructor[c]=function(){return n}),n[f](""),!t}):void 0;if(!h||!d||"replace"===e&&!l||"split"===e&&!p){var m=/./[f],v=n(a,f,""[e],function(e,t,n,r,o){return t.exec===u?h&&!o?{done:!0,value:m.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),g=v[0],y=v[1];r(String.prototype,e,g),o(RegExp.prototype,f,2==t?function(e,t){return y.call(e,this,t)}:function(e){return y.call(e,this)})}}},function(e,t,n){var r=n(212),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){var r=n(46),o=n(350),i=n(215),a=n(213)("IE_PROTO"),s=function(){},u=function(){var e,t=n(217)("iframe"),r=i.length;for(t.style.display="none",n(351).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" - - - - diff --git a/src/OpenApi/Utils/Helpers.php b/src/OpenApi/Utils/Helpers.php deleted file mode 100644 index cd68dec1..00000000 --- a/src/OpenApi/Utils/Helpers.php +++ /dev/null @@ -1,35 +0,0 @@ - $val) { - if ($firstKey === 0 && is_int($key)) { - $right[] = $val; - } else { - if (isset($right[$key])) { - $val = static::merge($val, $right[$key]); - } - - $right[$key] = $val; - } - } - - return $right; - } - - if ($left === null && is_array($right)) { - return $right; - } - - return $left; - } - -} diff --git a/tests/Cases/OpenApi/DI/OpenApiPlugin.phpt b/tests/Cases/OpenApi/DI/OpenApiPlugin.phpt index 4d0259c6..4a9b865e 100644 --- a/tests/Cases/OpenApi/DI/OpenApiPlugin.phpt +++ b/tests/Cases/OpenApi/DI/OpenApiPlugin.phpt @@ -33,6 +33,9 @@ Toolkit::test(function (): void { ], 'paths' => [], ], + 'swaggerUi' => [ + 'panel' => true, + ], ], ], ], diff --git a/tests/Cases/OpenApi/Schema/ContactTest.php b/tests/Cases/OpenApi/Schema/ContactTest.php deleted file mode 100644 index 323e9508..00000000 --- a/tests/Cases/OpenApi/Schema/ContactTest.php +++ /dev/null @@ -1,53 +0,0 @@ -setName('API Support'); - $contact->setEmail('support@example.com'); - $contact->setUrl('http://www.example.com/support'); - - Assert::same('API Support', $contact->getName()); - Assert::same('http://www.example.com/support', $contact->getUrl()); - Assert::same('support@example.com', $contact->getEmail()); - - $realData = $contact->toArray(); - $expectedData = [ - 'name' => 'API Support', - 'url' => 'http://www.example.com/support', - 'email' => 'support@example.com', - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Contact::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $contact = new Contact(); - - Assert::null($contact->getName()); - Assert::null($contact->getUrl()); - Assert::null($contact->getEmail()); - - $realData = $contact->toArray(); - $expectedData = []; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Contact::fromArray($realData)->toArray()); - } - -} - -(new ContactTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/ExampleTest.php b/tests/Cases/OpenApi/Schema/ExampleTest.php deleted file mode 100644 index 83dc5b55..00000000 --- a/tests/Cases/OpenApi/Schema/ExampleTest.php +++ /dev/null @@ -1,45 +0,0 @@ -setSummary($summary); - $example->setDescription($description); - $example->setValue($value); - $example->setExternalValue($externalValue); - - Assert::same($summary, $example->getSummary()); - Assert::same($description, $example->getDescription()); - Assert::same($value, $example->getValue()); - Assert::same($externalValue, $example->getExternalValue()); - - $realData = $example->toArray(); - $expectedData = [ - 'summary' => $summary, - 'description' => $description, - 'value' => $value, - 'externalValue' => $externalValue, - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Example::fromArray($realData)->toArray()); - } - -} - -(new ExampleTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/ExamplesTest.php b/tests/Cases/OpenApi/Schema/ExamplesTest.php deleted file mode 100644 index 15b97bc7..00000000 --- a/tests/Cases/OpenApi/Schema/ExamplesTest.php +++ /dev/null @@ -1,105 +0,0 @@ -toArray(); - self::assertSameDataStructure($rawData, $openApiData); - } - - public function testCallbackExample(): void - { - // TODO callbacks - //$rawData = Yaml::parseFile(__DIR__ . '/examples/callback-example.yaml'); - //$openApi = OpenApi::fromArray($rawData); - //$openApiData = $openApi->toArray(); - //self::assertSameDataStructure($rawData, $openApiData); - } - - public function testLinkExample(): void - { - $rawData = Yaml::parseFile(__DIR__ . '/examples/link-example.yaml'); - $openApi = OpenApi::fromArray($rawData); - $openApiData = $openApi->toArray(); - self::assertSameDataStructure($rawData, $openApiData); - } - - public function testGitLab(): void - { - $rawData = Yaml::parseFile(__DIR__ . '/examples/gitlab.yaml'); - $openApi = OpenApi::fromArray($rawData); - $openApiData = $openApi->toArray(); - self::assertSameDataStructure($rawData, $openApiData); - } - - public function testPetstore(): void - { - $rawData = Yaml::parseFile(__DIR__ . '/examples/petstore.yaml'); - $openApi = OpenApi::fromArray($rawData); - $openApiData = $openApi->toArray(); - self::assertSameDataStructure($rawData, $openApiData); - } - - public function testPetstoreExpanded(): void - { - $rawData = Yaml::parseFile(__DIR__ . '/examples/petstore-expanded.yaml'); - $openApi = OpenApi::fromArray($rawData); - $openApiData = $openApi->toArray(); - self::assertSameDataStructure($rawData, $openApiData); - } - - public function testUspto(): void - { - $rawData = Yaml::parseFile(__DIR__ . '/examples/uspto.yaml'); - $openApi = OpenApi::fromArray($rawData); - $openApiData = $openApi->toArray(); - self::assertSameDataStructure($rawData, $openApiData); - } - - /** - * @param mixed[] $expected - * @param mixed[] $actual - */ - private static function assertSameDataStructure(array $expected, array $actual): void - { - self::recursiveSort($expected); - self::recursiveSort($actual); - Assert::same($expected, $actual); - } - - /** - * @param mixed[] $data - */ - private static function recursiveSort(array &$data): void - { - foreach ($data as &$value) { - if (!is_array($value)) { - continue; - } - - self::recursiveSort($value); - } - - unset($value); - ksort($data); - } - -} - -(new ExamplesTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/ExternalDocumentationTest.php b/tests/Cases/OpenApi/Schema/ExternalDocumentationTest.php deleted file mode 100644 index c80746dc..00000000 --- a/tests/Cases/OpenApi/Schema/ExternalDocumentationTest.php +++ /dev/null @@ -1,48 +0,0 @@ -setDescription('Find more info here'); - - Assert::same('https://example.com', $documentation->getUrl()); - Assert::same('Find more info here', $documentation->getDescription()); - - $realData = $documentation->toArray(); - $expectedData = [ - 'url' => 'https://example.com', - 'description' => 'Find more info here', - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, ExternalDocumentation::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $documentation = new ExternalDocumentation('https://example.com'); - - Assert::same('https://example.com', $documentation->getUrl()); - Assert::null($documentation->getDescription()); - - $realData = $documentation->toArray(); - $expectedData = ['url' => 'https://example.com']; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, ExternalDocumentation::fromArray($realData)->toArray()); - } - -} - -(new ExternalDocumentationTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/InfoTest.php b/tests/Cases/OpenApi/Schema/InfoTest.php deleted file mode 100644 index eec413da..00000000 --- a/tests/Cases/OpenApi/Schema/InfoTest.php +++ /dev/null @@ -1,72 +0,0 @@ -setDescription('This is a sample server for a pet store.'); - $info->setTermsOfService('http://example.com/terms/'); - - $contact = new Contact(); - $info->setContact($contact); - - $license = new License('Apache 2.0'); - $info->setLicense($license); - - Assert::same('Sample Pet Store App', $info->getTitle()); - Assert::same('This is a sample server for a pet store.', $info->getDescription()); - Assert::same('http://example.com/terms/', $info->getTermsOfService()); - Assert::same($contact, $info->getContact()); - Assert::same($license, $info->getLicense()); - Assert::same('1.0.1', $info->getVersion()); - - $realData = $info->toArray(); - $expectedData = [ - 'title' => 'Sample Pet Store App', - 'description' => 'This is a sample server for a pet store.', - 'termsOfService' => 'http://example.com/terms/', - 'contact' => [], - 'license' => ['name' => 'Apache 2.0'], - 'version' => '1.0.1', - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Info::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $info = new Info('Sample Pet Store App', '1.0.1'); - - Assert::same('Sample Pet Store App', $info->getTitle()); - Assert::same(null, $info->getDescription()); - Assert::same(null, $info->getTermsOfService()); - Assert::same(null, $info->getContact()); - Assert::same(null, $info->getLicense()); - Assert::same('1.0.1', $info->getVersion()); - - $realData = $info->toArray(); - $expectedData = [ - 'title' => 'Sample Pet Store App', - 'version' => '1.0.1', - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Info::fromArray($realData)->toArray()); - } - -} - -(new InfoTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/LicenseTest.php b/tests/Cases/OpenApi/Schema/LicenseTest.php deleted file mode 100644 index aa952082..00000000 --- a/tests/Cases/OpenApi/Schema/LicenseTest.php +++ /dev/null @@ -1,51 +0,0 @@ -setIdentifier('Apache-2.0'); - $license->setUrl('https://www.apache.org/licenses/LICENSE-2.0.html'); - - Assert::same('Apache 2.0', $license->getName()); - Assert::same('Apache-2.0', $license->getIdentifier()); - Assert::same('https://www.apache.org/licenses/LICENSE-2.0.html', $license->getUrl()); - - $realData = $license->toArray(); - $expectedData = [ - 'name' => 'Apache 2.0', - 'identifier' => 'Apache-2.0', - 'url' => 'https://www.apache.org/licenses/LICENSE-2.0.html', - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, License::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $license = new License('Apache 2.0'); - - Assert::same('Apache 2.0', $license->getName()); - Assert::null($license->getUrl()); - - $realData = $license->toArray(); - $expectedData = ['name' => 'Apache 2.0']; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, License::fromArray($realData)->toArray()); - } - -} - -(new LicenseTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/MediaTypeTest.php b/tests/Cases/OpenApi/Schema/MediaTypeTest.php deleted file mode 100644 index 62cd9486..00000000 --- a/tests/Cases/OpenApi/Schema/MediaTypeTest.php +++ /dev/null @@ -1,62 +0,0 @@ -setExample('whatever'); - - $schema = new Schema([]); - $mediaType->setSchema($schema); - - $realData = $mediaType->toArray(); - $expectedData = ['schema' => [], 'example' => 'whatever']; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, MediaType::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $mediaType = new MediaType(); - - Assert::null($mediaType->getExample()); - Assert::null($mediaType->getSchema()); - - $realData = $mediaType->toArray(); - $expectedData = []; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, MediaType::fromArray($realData)->toArray()); - } - - public function testSchemaReference(): void - { - $mediaType = new MediaType(); - $schema = new Reference('ref'); - $mediaType->setSchema($schema); - - Assert::same($schema, $mediaType->getSchema()); - - $realData = $mediaType->toArray(); - $expectedData = ['schema' => ['$ref' => 'ref']]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, MediaType::fromArray($realData)->toArray()); - } - -} - -(new MediaTypeTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/OAuthFlowTest.php b/tests/Cases/OpenApi/Schema/OAuthFlowTest.php deleted file mode 100644 index 6f85ba5a..00000000 --- a/tests/Cases/OpenApi/Schema/OAuthFlowTest.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Read access', 'write' => 'Write access']; - $flow = new OAuthFlow($authorizationUrl, $tokenUrl, $refreshUrl, $scopes); - - Assert::same($authorizationUrl, $flow->getAuthorizationUrl()); - Assert::same($tokenUrl, $flow->getTokenUrl()); - Assert::same($refreshUrl, $flow->getRefreshUrl()); - Assert::same($scopes, $flow->getScopes()); - - $realData = $flow->toArray(); - $expectedData = [ - 'authorizationUrl' => $authorizationUrl, - 'tokenUrl' => $tokenUrl, - 'refreshUrl' => $refreshUrl, - 'scopes' => $scopes, - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, OAuthFlow::fromArray($realData)->toArray()); - } - -} - -(new OAuthFlowTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/OperationTest.php b/tests/Cases/OpenApi/Schema/OperationTest.php deleted file mode 100644 index 3c10774c..00000000 --- a/tests/Cases/OpenApi/Schema/OperationTest.php +++ /dev/null @@ -1,154 +0,0 @@ -setSummary('summary'); - $operation->setDescription('description'); - $operation->setOperationId('id'); - - $requestBody = new RequestBody(); - $operation->setRequestBody($requestBody); - - $externalDocs = new ExternalDocumentation('https://external-docs.example.com'); - $operation->setExternalDocs($externalDocs); - - $parameters = []; - $parameters['path-p1'] = $p1 = new Parameter('p1', Parameter::IN_PATH); - $operation->addParameter($p1); - $parameters['cookie-p2'] = $p2 = new Parameter('p2', Parameter::IN_COOKIE); - $operation->addParameter($p2); - $parameters[] = $p3 = new Reference('r1'); - $operation->addParameter($p3); - - $callbacks = []; - $callbacks[] = $callback1 = new Callback([]); - $operation->addCallback($callback1); - $callbacks[] = $callback2 = new Callback([]); - $operation->addCallback($callback2); - $callbacks[] = $callback3 = new Reference('ref'); - $operation->addCallback($callback3); - - $securityRequirements = []; - $securityRequirements[] = $sr1 = new SecurityRequirement([]); - $operation->addSecurityRequirement($sr1); - - $servers = []; - $servers[] = $server1 = new Server('https://server-one.example.com'); - $operation->addServer($server1); - $servers[] = $server2 = new Server('https://server-two.example.com'); - $operation->addServer($server2); - - $operation->setTags(['foo', 'bar', 'baz']); - $operation->setDeprecated(true); - - Assert::same('summary', $operation->getSummary()); - Assert::same('description', $operation->getDescription()); - Assert::same('id', $operation->getOperationId()); - Assert::same($requestBody, $operation->getRequestBody()); - Assert::same($externalDocs, $operation->getExternalDocs()); - - Assert::same($parameters, $operation->getParameters()); - Assert::same($callbacks, $operation->getCallbacks()); - Assert::same($securityRequirements, $operation->getSecurity()); - Assert::same($servers, $operation->getServers()); - Assert::same(['foo', 'bar', 'baz'], $operation->getTags()); - Assert::same($responses, $operation->getResponses()); - - Assert::true($operation->isDeprecated()); - - $realData = $operation->toArray(); - $expectedData = [ - 'deprecated' => true, - 'tags' => ['foo', 'bar', 'baz'], - 'summary' => 'summary', - 'description' => 'description', - 'externalDocs' => ['url' => 'https://external-docs.example.com'], - 'operationId' => 'id', - 'parameters' => [ - ['name' => 'p1', 'in' => 'path'], - ['name' => 'p2', 'in' => 'cookie'], - ['$ref' => 'r1'], - ], - 'requestBody' => ['content' => []], - 'security' => [[]], - 'responses' => [], - 'servers' => [ - ['url' => 'https://server-one.example.com'], - ['url' => 'https://server-two.example.com'], - ], - 'callbacks' => [[], [], ['$ref' => 'ref']], - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Operation::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $responses = new Responses(); - $operation = new Operation($responses); - - Assert::null($operation->getSummary()); - Assert::null($operation->getDescription()); - Assert::null($operation->getOperationId()); - Assert::null($operation->getRequestBody()); - Assert::null($operation->getExternalDocs()); - - Assert::same([], $operation->getParameters()); - Assert::same([], $operation->getCallbacks()); - Assert::same([], $operation->getSecurity()); - Assert::same([], $operation->getServers()); - Assert::same([], $operation->getTags()); - Assert::same($responses, $operation->getResponses()); - - Assert::false($operation->isDeprecated()); - - $realData = $operation->toArray(); - $expectedData = ['responses' => []]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Operation::fromArray($realData)->toArray()); - } - - public function testRequestBodyReference(): void - { - $responses = new Responses(); - $operation = new Operation($responses); - - $requestBody = new Reference('ref'); - $operation->setRequestBody($requestBody); - - Assert::same($requestBody, $operation->getRequestBody()); - - $realData = $operation->toArray(); - $expectedData = ['requestBody' => ['$ref' => 'ref'], 'responses' => []]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Operation::fromArray($realData)->toArray()); - } - -} - -(new OperationTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/ParameterTest.php b/tests/Cases/OpenApi/Schema/ParameterTest.php deleted file mode 100644 index 25838fbb..00000000 --- a/tests/Cases/OpenApi/Schema/ParameterTest.php +++ /dev/null @@ -1,108 +0,0 @@ -setDescription('description'); - - $parameter->setRequired(true); - $parameter->setDeprecated(true); - $parameter->setAllowEmptyValue(true); - - $parameter->setStyle('whatever'); - $parameter->setExample('whatever'); - - $schema = new Schema([]); - $parameter->setSchema($schema); - - Assert::same('p1', $parameter->getName()); - Assert::same(Parameter::IN_COOKIE, $parameter->getIn()); - Assert::same('description', $parameter->getDescription()); - - Assert::true($parameter->isRequired()); - Assert::true($parameter->isDeprecated()); - Assert::true($parameter->isAllowEmptyValue()); - - Assert::same('whatever', $parameter->getStyle()); - Assert::same('whatever', $parameter->getExample()); - Assert::same($schema, $parameter->getSchema()); - - $realData = $parameter->toArray(); - $expectedData = [ - 'name' => 'p1', - 'in' => 'cookie', - 'description' => 'description', - 'required' => true, - 'deprecated' => true, - 'allowEmptyValue' => true, - 'schema' => [], - 'example' => 'whatever', - 'style' => 'whatever', - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Parameter::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $parameter = new Parameter('p1', Parameter::IN_PATH); - - Assert::same('p1', $parameter->getName()); - Assert::same(Parameter::IN_PATH, $parameter->getIn()); - Assert::null($parameter->getDescription()); - - Assert::null($parameter->isRequired()); - Assert::null($parameter->isDeprecated()); - Assert::null($parameter->isAllowEmptyValue()); - - Assert::null($parameter->getStyle()); - Assert::null($parameter->getExample()); - Assert::null($parameter->getSchema()); - - $realData = $parameter->toArray(); - $expectedData = ['name' => 'p1', 'in' => 'path']; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Parameter::fromArray($realData)->toArray()); - } - - public function testInvalidIn(): void - { - Assert::exception(static function (): void { - new Parameter('foo', 'invalid'); - }, InvalidArgumentException::class, 'Invalid value "invalid" for attribute "in" given. It must be one of "cookie, header, path, query".'); - } - - public function testSchemaReference(): void - { - $parameter = new Parameter('p1', Parameter::IN_PATH); - $schema = new Reference('ref'); - $parameter->setSchema($schema); - - Assert::same($schema, $parameter->getSchema()); - - $realData = $parameter->toArray(); - $expectedData = ['name' => 'p1', 'in' => 'path', 'schema' => ['$ref' => 'ref']]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Parameter::fromArray($realData)->toArray()); - } - -} - -(new ParameterTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/ReferenceTest.php b/tests/Cases/OpenApi/Schema/ReferenceTest.php deleted file mode 100644 index a1151928..00000000 --- a/tests/Cases/OpenApi/Schema/ReferenceTest.php +++ /dev/null @@ -1,52 +0,0 @@ -setSummary('Server error'); - $ref->setDescription('Server error response, e.g. unhandled exception'); - - Assert::same('#/components/responses/ServerError', $ref->getRef()); - Assert::same('Server error', $ref->getSummary()); - Assert::same('Server error response, e.g. unhandled exception', $ref->getDescription()); - - $realData = $ref->toArray(); - $expectedData = [ - '$ref' => '#/components/responses/ServerError', - 'summary' => 'Server error', - 'description' => 'Server error response, e.g. unhandled exception', - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Reference::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $ref = new Reference('#/components/responses/ServerError'); - - Assert::same('#/components/responses/ServerError', $ref->getRef()); - Assert::null($ref->getSummary()); - Assert::null($ref->getDescription()); - - $realData = $ref->toArray(); - $expectedData = ['$ref' => '#/components/responses/ServerError']; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Reference::fromArray($realData)->toArray()); - } - -} - -(new ReferenceTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/RequestBodyTest.php b/tests/Cases/OpenApi/Schema/RequestBodyTest.php deleted file mode 100644 index a633f358..00000000 --- a/tests/Cases/OpenApi/Schema/RequestBodyTest.php +++ /dev/null @@ -1,61 +0,0 @@ -addMediaType('text/*', $mediaType1); - $body->addMediaType('application/json', $mediaType1); // Intentionally added twice, tests overriding - $content['application/json'] = $mediaType2 = new MediaType(); - $body->addMediaType('application/json', $mediaType2); - - $body->setDescription('description'); - $body->setRequired(true); - - Assert::same($content, $body->getContent()); - Assert::same('description', $body->getDescription()); - Assert::true($body->isRequired()); - - $realData = $body->toArray(); - $expectedData = [ - 'description' => 'description', - 'content' => ['text/*' => [], 'application/json' => []], - 'required' => true, - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, RequestBody::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $body = new RequestBody(); - - Assert::same([], $body->getContent()); - Assert::null($body->getDescription()); - Assert::false($body->isRequired()); - - $realData = $body->toArray(); - $expectedData = ['content' => []]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, RequestBody::fromArray($realData)->toArray()); - } - -} - -(new RequestBodyTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/ResponseTest.php b/tests/Cases/OpenApi/Schema/ResponseTest.php deleted file mode 100644 index f16b5537..00000000 --- a/tests/Cases/OpenApi/Schema/ResponseTest.php +++ /dev/null @@ -1,65 +0,0 @@ - 'Description', - 'headers' => [ - 'WWW-Authenticate' => [ - 'description' => 'The authentication method that should be used to gain access to a resource', - 'schema' => ['type' => 'string'], - ], - ], - ]; - $response = new Response('Description'); - $header = new Header(); - $header->setDescription('The authentication method that should be used to gain access to a resource'); - $headerSchema = new Schema(['type' => 'string']); - $header->setSchema($headerSchema); - $response->setHeader('WWW-Authenticate', $header); - Assert::same($array, $response->toArray()); - Assert::equal($response, Response::fromArray($array)); - } - - public function testRequired(): void - { - $array = ['description' => 'Description']; - $response = new Response('Description'); - Assert::same($array, $response->toArray()); - Assert::equal($response, Response::fromArray($array)); - } - - public function testHeaderReference(): void - { - $array = [ - 'description' => 'API key or user token is missing or invalid', - 'headers' => [ - 'WWW-Authenticate' => [ - '$ref' => '#/components/header/WWW-Authenticate', - ], - ], - ]; - $response = new Response('API key or user token is missing or invalid'); - $headerReference = new Reference('#/components/header/WWW-Authenticate'); - $response->setHeader('WWW-Authenticate', $headerReference); - Assert::same($array, $response->toArray()); - Assert::equal($response, Response::fromArray($array)); - } - -} - -(new ResponseTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/ResponsesTest.php b/tests/Cases/OpenApi/Schema/ResponsesTest.php deleted file mode 100644 index 2a9a26f3..00000000 --- a/tests/Cases/OpenApi/Schema/ResponsesTest.php +++ /dev/null @@ -1,47 +0,0 @@ - ['description' => self::S200_DESCRIPTION], - '401' => ['$ref' => self::S401_REFERENCE], - ]; - - private const S200_DESCRIPTION = 'Success'; - - private const S401_REFERENCE = '#/components/responses/UnauthorizedError'; - - private Responses $responses; - - public function testFromArray(): void - { - $actual = Responses::fromArray(self::ARRAY); - Assert::equal($this->responses, $actual); - } - - public function testToArray(): void - { - Assert::equal(self::ARRAY, $this->responses->toArray()); - } - - protected function setUp(): void - { - $this->responses = new Responses(); - $this->responses->setResponse('200', new Response(self::S200_DESCRIPTION)); - $this->responses->setResponse('401', new Reference(self::S401_REFERENCE)); - } - -} - -(new ResponsesTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/SecuritySchemeTest.php b/tests/Cases/OpenApi/Schema/SecuritySchemeTest.php deleted file mode 100644 index d272ffb6..00000000 --- a/tests/Cases/OpenApi/Schema/SecuritySchemeTest.php +++ /dev/null @@ -1,203 +0,0 @@ - SecurityScheme::TYPE_API_KEY, - 'name' => 'api_key', - 'in' => SecurityScheme::IN_HEADER, - ], - ], - [ - [ - 'type' => SecurityScheme::TYPE_HTTP, - 'scheme' => 'basic', - ], - ], - [ - [ - 'type' => SecurityScheme::TYPE_HTTP, - 'scheme' => 'bearer', - 'bearerFormat' => 'JWT', - ], - ], - [ - [ - 'type' => SecurityScheme::TYPE_OAUTH2, - 'flows' => [ - 'implicit' => [ - 'authorizationUrl' => 'https://example.com/authorization', - 'tokenUrl' => 'https://example.com/token', - 'refreshUrl' => 'https://example.com/refresh', - 'scopes' => ['read' => 'Read access', 'write' => 'Write access'], - ], - 'password' => [ - 'authorizationUrl' => 'https://example.com/authorization', - 'tokenUrl' => 'https://example.com/token', - 'refreshUrl' => 'https://example.com/refresh', - 'scopes' => ['read' => 'Read access', 'write' => 'Write access'], - ], - 'clientCredentials' => [ - 'authorizationUrl' => 'https://example.com/authorization', - 'tokenUrl' => 'https://example.com/token', - 'refreshUrl' => 'https://example.com/refresh', - 'scopes' => ['read' => 'Read access', 'write' => 'Write access'], - ], - 'authorizationCode' => [ - 'authorizationUrl' => 'https://example.com/authorization', - 'tokenUrl' => 'https://example.com/token', - 'refreshUrl' => 'https://example.com/refresh', - 'scopes' => ['read' => 'Read access', 'write' => 'Write access'], - ], - ], - ], - ], - [ - [ - 'type' => SecurityScheme::TYPE_OPEN_ID_CONNECT, - 'openIdConnectUrl' => 'https://example.com/.well-known/openid-configuration', - ], - ], - ]; - } - - /** - * @dataProvider getRequiredData - * @param mixed[] $array - */ - public function testRequired(array $array): void - { - $securityScheme = SecurityScheme::fromArray($array); - Assert::same($array, $securityScheme->toArray()); - } - - public function testOptional(): void - { - $type = SecurityScheme::TYPE_API_KEY; - $name = 'api_key'; - $in = SecurityScheme::IN_HEADER; - $description = 'API key'; - $securityScheme = new SecurityScheme($type); - $securityScheme->setName($name); - $securityScheme->setIn($in); - $securityScheme->setDescription($description); - - Assert::same($type, $securityScheme->getType()); - Assert::same($name, $securityScheme->getName()); - Assert::same($in, $securityScheme->getIn()); - Assert::same($description, $securityScheme->getDescription()); - - $array = $securityScheme->toArray(); - $expected = [ - 'type' => $type, - 'name' => $name, - 'description' => $description, - 'in' => $in, - ]; - Assert::same($expected, $array); - Assert::same($expected, SecurityScheme::fromArray($array)->toArray()); - } - - public function testInvalidType(): void - { - Assert::exception(static function (): void { - new SecurityScheme('invalid'); - }, InvalidArgumentException::class, 'Invalid value "invalid" for attribute "type" given. It must be one of "apiKey, http, oauth2, openIdConnect".'); - } - - public function testMissingName(): void - { - Assert::exception(static function (): void { - $securityScheme = new SecurityScheme(SecurityScheme::TYPE_API_KEY); - $securityScheme->setIn(SecurityScheme::IN_HEADER); - $securityScheme->setName(null); - }, InvalidArgumentException::class, 'Attribute "name" is required for type "apiKey".'); - } - - public function testMissingIn(): void - { - Assert::exception(static function (): void { - $securityScheme = new SecurityScheme(SecurityScheme::TYPE_API_KEY); - $securityScheme->setName('api_key'); - $securityScheme->setIn(null); - }, InvalidArgumentException::class, 'Attribute "in" is required for type "apiKey".'); - } - - public function testInvalidIn(): void - { - Assert::exception(static function (): void { - $securityScheme = new SecurityScheme(SecurityScheme::TYPE_API_KEY); - $securityScheme->setName('api_key'); - $securityScheme->setIn('invalid'); - }, InvalidArgumentException::class, 'Invalid value "invalid" for attribute "in" given. It must be one of "cookie, header, query".'); - } - - public function testMissingScheme(): void - { - Assert::exception(static function (): void { - $securityScheme = new SecurityScheme(SecurityScheme::TYPE_HTTP); - $securityScheme->setScheme(null); - }, InvalidArgumentException::class, 'Attribute "scheme" is required for type "http".'); - } - - public function testMissingBearerFormat(): void - { - Assert::exception(static function (): void { - $securityScheme = new SecurityScheme(SecurityScheme::TYPE_HTTP); - $securityScheme->setScheme('bearer'); - $securityScheme->setBearerFormat(null); - }, InvalidArgumentException::class, 'Attribute "bearerFormat" is required for type "http" and scheme "bearer".'); - } - - public function testMissingFlows(): void - { - Assert::exception(static function (): void { - $securityScheme = new SecurityScheme(SecurityScheme::TYPE_OAUTH2); - $securityScheme->setFlows([]); - }, InvalidArgumentException::class, 'Attribute "flows" is required for type "oauth2".'); - } - - public function testMissingFlow(): void - { - Assert::exception(static function (): void { - $securityScheme = new SecurityScheme(SecurityScheme::TYPE_OAUTH2); - $securityScheme->setFlows([ - 'implicit' => OAuthFlow::fromArray([ - 'authorizationUrl' => 'https://example.com/authorization', - 'tokenUrl' => 'https://example.com/token', - 'refreshUrl' => 'https://example.com/refresh', - 'scopes' => ['read' => 'Read access', 'write' => 'Write access'], - ]), - ]); - }, InvalidArgumentException::class, 'Attribute "flows" is missing required key "password".'); - } - - public function testMissingOpenIdConnectUrl(): void - { - Assert::exception(static function (): void { - $securityScheme = new SecurityScheme(SecurityScheme::TYPE_OPEN_ID_CONNECT); - $securityScheme->setOpenIdConnectUrl(null); - }, InvalidArgumentException::class, 'Attribute "openIdConnectUrl" is required for type "openIdConnect".'); - } - -} - -(new SecuritySchemeTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/ServerTest.php b/tests/Cases/OpenApi/Schema/ServerTest.php deleted file mode 100644 index fba94394..00000000 --- a/tests/Cases/OpenApi/Schema/ServerTest.php +++ /dev/null @@ -1,62 +0,0 @@ -setDescription('description'); - - $variables = []; - $variables['var1'] = $variable1 = new ServerVariable('default'); - $server->addVariable('var1', $variable1); - $server->addVariable('var2', $variable1); // Intentionally added twice, tests overriding - $variables['var2'] = $variable2 = new ServerVariable('default'); - $server->addVariable('var2', $variable2); - - Assert::same('https://example.com', $server->getUrl()); - Assert::same('description', $server->getDescription()); - Assert::same($variables, $server->getVariables()); - - $realData = $server->toArray(); - $expectedData = [ - 'url' => 'https://example.com', - 'description' => 'description', - 'variables' => [ - 'var1' => ['default' => 'default'], - 'var2' => ['default' => 'default'], - ], - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Server::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $server = new Server('https://example.com'); - - Assert::same('https://example.com', $server->getUrl()); - Assert::null($server->getDescription()); - Assert::same([], $server->getVariables()); - - $realData = $server->toArray(); - $expectedData = ['url' => 'https://example.com']; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Server::fromArray($realData)->toArray()); - } - -} - -(new ServerTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/ServerVariableTest.php b/tests/Cases/OpenApi/Schema/ServerVariableTest.php deleted file mode 100644 index 7029ee79..00000000 --- a/tests/Cases/OpenApi/Schema/ServerVariableTest.php +++ /dev/null @@ -1,52 +0,0 @@ -setDescription('description'); - $variable->setEnum(['foo', 'bar', 'baz']); - - Assert::same('default', $variable->getDefault()); - Assert::same('description', $variable->getDescription()); - Assert::same(['foo', 'bar', 'baz'], $variable->getEnum()); - - $realData = $variable->toArray(); - $expectedData = [ - 'enum' => ['foo', 'bar', 'baz'], - 'default' => 'default', - 'description' => 'description', - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, ServerVariable::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $variable = new ServerVariable('default'); - - Assert::same('default', $variable->getDefault()); - Assert::null($variable->getDescription()); - Assert::same([], $variable->getEnum()); - - $realData = $variable->toArray(); - $expectedData = ['default' => 'default']; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, ServerVariable::fromArray($realData)->toArray()); - } - -} - -(new ServerVariableTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/TagTest.php b/tests/Cases/OpenApi/Schema/TagTest.php deleted file mode 100644 index 30673827..00000000 --- a/tests/Cases/OpenApi/Schema/TagTest.php +++ /dev/null @@ -1,55 +0,0 @@ -setDescription('Pets operations'); - - $externalDocs = new ExternalDocumentation('https://example.com'); - $tag->setExternalDocs($externalDocs); - - Assert::same('pet', $tag->getName()); - Assert::same('Pets operations', $tag->getDescription()); - Assert::same($externalDocs, $tag->getExternalDocs()); - - $realData = $tag->toArray(); - $expectedData = [ - 'name' => 'pet', - 'description' => 'Pets operations', - 'externalDocs' => ['url' => 'https://example.com'], - ]; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Tag::fromArray($realData)->toArray()); - } - - public function testRequired(): void - { - $tag = new Tag('pet'); - - Assert::same('pet', $tag->getName()); - Assert::null($tag->getDescription()); - Assert::null($tag->getExternalDocs()); - - $realData = $tag->toArray(); - $expectedData = ['name' => 'pet']; - - Assert::same($expectedData, $realData); - Assert::same($expectedData, Tag::fromArray($realData)->toArray()); - } - -} - -(new TagTest())->run(); diff --git a/tests/Cases/OpenApi/Schema/examples/api-with-examples.yaml b/tests/Cases/OpenApi/Schema/examples/api-with-examples.yaml deleted file mode 100755 index c173769a..00000000 --- a/tests/Cases/OpenApi/Schema/examples/api-with-examples.yaml +++ /dev/null @@ -1,167 +0,0 @@ -openapi: "3.0.0" -info: - title: Simple API overview - version: 2.0.0 -paths: - /: - get: - operationId: listVersionsv2 - summary: List API versions - responses: - '200': - description: |- - 200 response - content: - application/json: - examples: - foo: - value: { - "versions": [ - { - "status": "CURRENT", - "updated": "2011-01-21T11:33:21Z", - "id": "v2.0", - "links": [ - { - "href": "http://127.0.0.1:8774/v2/", - "rel": "self" - } - ] - }, - { - "status": "EXPERIMENTAL", - "updated": "2013-07-23T11:33:21Z", - "id": "v3.0", - "links": [ - { - "href": "http://127.0.0.1:8774/v3/", - "rel": "self" - } - ] - } - ] - } - '300': - description: |- - 300 response - content: - application/json: - examples: - foo: - value: | - { - "versions": [ - { - "status": "CURRENT", - "updated": "2011-01-21T11:33:21Z", - "id": "v2.0", - "links": [ - { - "href": "http://127.0.0.1:8774/v2/", - "rel": "self" - } - ] - }, - { - "status": "EXPERIMENTAL", - "updated": "2013-07-23T11:33:21Z", - "id": "v3.0", - "links": [ - { - "href": "http://127.0.0.1:8774/v3/", - "rel": "self" - } - ] - } - ] - } - /v2: - get: - operationId: getVersionDetailsv2 - summary: Show API version details - responses: - '200': - description: |- - 200 response - content: - application/json: - examples: - foo: - value: { - "version": { - "status": "CURRENT", - "updated": "2011-01-21T11:33:21Z", - "media-types": [ - { - "base": "application/xml", - "type": "application/vnd.openstack.compute+xml;version=2" - }, - { - "base": "application/json", - "type": "application/vnd.openstack.compute+json;version=2" - } - ], - "id": "v2.0", - "links": [ - { - "href": "http://127.0.0.1:8774/v2/", - "rel": "self" - }, - { - "href": "http://docs.openstack.org/api/openstack-compute/2/os-compute-devguide-2.pdf", - "type": "application/pdf", - "rel": "describedby" - }, - { - "href": "http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl", - "type": "application/vnd.sun.wadl+xml", - "rel": "describedby" - }, - { - "href": "http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl", - "type": "application/vnd.sun.wadl+xml", - "rel": "describedby" - } - ] - } - } - '203': - description: |- - 203 response - content: - application/json: - examples: - foo: - value: { - "version": { - "status": "CURRENT", - "updated": "2011-01-21T11:33:21Z", - "media-types": [ - { - "base": "application/xml", - "type": "application/vnd.openstack.compute+xml;version=2" - }, - { - "base": "application/json", - "type": "application/vnd.openstack.compute+json;version=2" - } - ], - "id": "v2.0", - "links": [ - { - "href": "http://23.253.228.211:8774/v2/", - "rel": "self" - }, - { - "href": "http://docs.openstack.org/api/openstack-compute/2/os-compute-devguide-2.pdf", - "type": "application/pdf", - "rel": "describedby" - }, - { - "href": "http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl", - "type": "application/vnd.sun.wadl+xml", - "rel": "describedby" - } - ] - } - } diff --git a/tests/Cases/OpenApi/Schema/examples/callback-example.yaml b/tests/Cases/OpenApi/Schema/examples/callback-example.yaml deleted file mode 100755 index 262b8df5..00000000 --- a/tests/Cases/OpenApi/Schema/examples/callback-example.yaml +++ /dev/null @@ -1,61 +0,0 @@ -openapi: 3.0.0 -info: - title: Callback Example - version: 1.0.0 -paths: - /streams: - post: - description: subscribes a client to receive out-of-band data - parameters: - - name: callbackUrl - in: query - required: true - description: | - the location where data will be sent. Must be network accessible - by the source server - schema: - type: string - format: uri - example: https://tonys-server.com - responses: - '201': - description: subscription successfully created - content: - application/json: - schema: - description: subscription information - required: - - subscriptionId - properties: - subscriptionId: - description: this unique identifier allows management of the subscription - type: string - example: 2531329f-fb09-4ef7-887e-84e648214436 - callbacks: - # the name `onData` is a convenience locator - onData: - # when data is sent, it will be sent to the `callbackUrl` provided - # when making the subscription PLUS the suffix `/data` - '{$request.query.callbackUrl}/data': - post: - requestBody: - description: subscription payload - content: - application/json: - schema: - type: object - properties: - timestamp: - type: string - format: date-time - userData: - type: string - responses: - '202': - description: | - Your server implementation should return this HTTP status code - if the data was received successfully - '204': - description: | - Your server should return this HTTP status code if no longer interested - in further updates diff --git a/tests/Cases/OpenApi/Schema/examples/gitlab.yaml b/tests/Cases/OpenApi/Schema/examples/gitlab.yaml deleted file mode 100644 index 54d53194..00000000 --- a/tests/Cases/OpenApi/Schema/examples/gitlab.yaml +++ /dev/null @@ -1,3524 +0,0 @@ -openapi: 3.0.1 -info: - title: GitLab API - version: v4 - description: | - An OpenAPI definition for the GitLab REST API. - Few API resources or endpoints are currently included. - The intent is to expand this to match the entire Markdown documentation of the API: - . Contributions are welcome. - - When viewing this on gitlab.com, you can test API calls directly from the browser - against the `gitlab.com` instance, if you are logged in. - The feature uses the current [GitLab session cookie](https://docs.gitlab.com/ee/api/index.html#session-cookie), - so each request is made using your account. - - Instructions for using this tool can be found in [Interactive API Documentation](https://docs.gitlab.com/ee/api/openapi/openapi_interactive.html) - termsOfService: 'https://about.gitlab.com/terms/' - license: - name: CC BY-SA 4.0 - url: 'https://gitlab.com/gitlab-org/gitlab/-/blob/master/LICENSE' -servers: -- url: https://www.gitlab.com/api/ -security: - - ApiKeyAuth: [] -tags: -- name: badges - description: Operations about badges -- name: branches - description: Operations about branches -- name: alert_management - description: Operations about alert_managements -- name: batched_background_migrations - description: Operations about batched_background_migrations -- name: admin - description: Operations about admins -- name: migrations - description: Operations about migrations -- name: applications - description: Operations about applications -- name: avatar - description: Operations about avatars -- name: broadcast_messages - description: Operations about broadcast_messages -- name: bulk_imports - description: Operations about bulk_imports -- name: application - description: Operations about applications -- name: access_requests - description: Operations related to access requests -- name: ci_lint - description: Operations related to linting a CI config file -- name: ci_resource_groups - description: Operations to manage job concurrency with resource groups -- name: ci_variables - description: Operations related to CI/CD variables -- name: cluster_agents - description: Operations related to the GitLab agent for Kubernetes -- name: clusters - description: Operations related to clusters -- name: composer_packages - description: Operations related to Composer packages -- name: conan_packages - description: Operations related to Conan packages -- name: container_registry - description: Operations related to container registry -- name: container_registry_event - description: Operations related to container registry events -- name: dashboard_annotations - description: Operations related to dashboard annotations -- name: debian_distribution - description: Operations related to Debian Linux distributions -- name: debian_packages - description: Operations related to Debian Linux packages -- name: dependency_proxy - description: Operations to manage dependency proxy for a groups -- name: deploy_keys - description: Operations related to deploy keys -- name: deploy_tokens - description: Operations related to deploy tokens -- name: deployments - description: Operations related to deployments -- name: dora_metrics - description: Operations related to DevOps Research and Assessment (DORA) key metrics -- name: environments - description: Operations related to environments -- name: error_tracking_client_keys - description: Operations related to error tracking client keys -- name: error_tracking_project_settings - description: Operations related to error tracking project settings -- name: feature_flags_user_lists - description: Operations related to accessing GitLab feature flag user lists -- name: feature_flags - description: Operations related to feature flags -- name: features - description: Operations related to managing Flipper-based feature flags -- name: freeze_periods - description: Operations related to deploy freeze periods -- name: generic_packages - description: Operations related to Generic packages -- name: geo - description: Operations related to Geo -- name: geo_nodes - description: Operations related Geo Nodes -- name: go_proxy - description: Operations related to Go Proxy -- name: group_export - description: Operations related to exporting groups -- name: group_import - description: Operations related to importing groups -- name: group_packages - description: Operations related to group packages -- name: helm_packages - description: Operations related to Helm packages -- name: integrations - description: Operations related to integrations -- name: issue_links - description: Operations related to issue links -- name: jira_connect_subscriptions - description: Operations related to JiraConnect subscriptions -- name: maven_packages - description: Operations related to Maven packages -- name: merge_requests - description: Operations related to merge requests -- name: metadata - description: Operations related to metadata of the GitLab instance -- name: metrics_user_starred_dashboards - description: Operations related to User-starred metrics dashboards -- name: ml_model_registry - description: Operations related to Model registry -- name: npm_packages - description: Operations related to NPM packages -- name: nuget_packages - description: Operations related to Nuget packages -- name: package_files - description: Operations about package files -- name: plan_limits - description: Operations related to plan limits -- name: project_export - description: Operations related to exporting projects -- name: project_hooks - description: Operations related to project hooks -- name: project_import - description: Operations related to importing projects -- name: project_import_bitbucket - description: Operations related to importing BitBucket projects -- name: project_import_github - description: Operations related to importing GitHub projects -- name: project_packages - description: Operations related to project packages -- name: projects - description: Operations related to projects -- name: protected environments - description: Operations related to protected environments -- name: pypi_packages - description: Operations related to PyPI packages -- name: release_links - description: Operations related to release assets (links) -- name: releases - description: Operations related to releases -- name: resource_milestone_events - description: Operations about resource milestone events -- name: rpm_packages - description: Operations related to RPM packages -- name: rubygem_packages - description: Operations related to RubyGems -- name: suggestions - description: Operations related to suggestions -- name: system_hooks - description: Operations related to system hooks -- name: terraform_state - description: Operations related to Terraform state files -- name: terraform_registry - description: Operations related to the Terraform module registry -- name: unleash_api - description: Operations related to Unleash API -paths: - /api/v4/groups/{id}/badges/{badge_id}: - get: - tags: - - badges - summary: Gets a badge of a group. - description: This feature was introduced in GitLab 10.6. - operationId: getApiV4GroupsIdBadgesBadgeId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user. - required: true - schema: - type: string - - name: badge_id - in: path - description: The badge ID - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Gets a badge of a group. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Badge' - put: - tags: - - badges - summary: Updates a badge of a group. - description: This feature was introduced in GitLab 10.6. - operationId: putApiV4GroupsIdBadgesBadgeId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user. - required: true - schema: - type: string - - name: badge_id - in: path - required: true - schema: - type: integer - format: int32 - requestBody: - content: - application/json: - schema: - properties: - link_url: - type: string - description: URL of the badge link - image_url: - type: string - description: URL of the badge image - name: - type: string - description: Name for the badge - responses: - 200: - description: Updates a badge of a group. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Badge' - delete: - tags: - - badges - summary: Removes a badge from the group. - description: This feature was introduced in GitLab 10.6. - operationId: deleteApiV4GroupsIdBadgesBadgeId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user. - required: true - schema: - type: string - - name: badge_id - in: path - description: The badge ID - required: true - schema: - type: integer - format: int32 - responses: - 204: - description: Removes a badge from the group. - /api/v4/groups/{id}/badges: - get: - tags: - - badges - summary: Gets a list of group badges viewable by the authenticated user. - description: This feature was introduced in GitLab 10.6. - operationId: getApiV4GroupsIdBadges - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user. - required: true - schema: - type: string - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - - name: name - in: query - description: Name for the badge - schema: - type: string - responses: - 200: - description: Gets a list of group badges viewable by the authenticated user. - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_Badge' - post: - tags: - - badges - summary: Adds a badge to a group. - description: This feature was introduced in GitLab 10.6. - operationId: postApiV4GroupsIdBadges - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - required: - - image_url - - link_url - properties: - link_url: - type: string - description: URL of the badge link - image_url: - type: string - description: URL of the badge image - name: - type: string - description: Name for the badge - required: true - responses: - 201: - description: Adds a badge to a group. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Badge' - /api/v4/groups/{id}/badges/render: - get: - tags: - - badges - summary: Preview a badge from a group. - description: This feature was introduced in GitLab 10.6. - operationId: getApiV4GroupsIdBadgesRender - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user. - required: true - schema: - type: string - - name: link_url - in: query - description: URL of the badge link - required: true - schema: - type: string - - name: image_url - in: query - description: URL of the badge image - required: true - schema: - type: string - responses: - 200: - description: Preview a badge from a group. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BasicBadgeDetails' - /api/v4/groups/{id}/access_requests/{user_id}: - delete: - tags: - - access_requests - summary: Denies an access request for the given user. - description: This feature was introduced in GitLab 8.11. - operationId: deleteApiV4GroupsIdAccessRequestsUserId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user - required: true - schema: - type: string - - name: user_id - in: path - description: The user ID of the access requester - required: true - schema: - type: integer - format: int32 - responses: - 204: - description: Denies an access request for the given user. - /api/v4/groups/{id}/access_requests/{user_id}/approve: - put: - tags: - - access_requests - summary: Approves an access request for the given user. - description: This feature was introduced in GitLab 8.11. - operationId: putApiV4GroupsIdAccessRequestsUserIdApprove - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user - required: true - schema: - type: string - - name: user_id - in: path - description: The user ID of the access requester - required: true - schema: - type: integer - format: int32 - requestBody: - content: - application/json: - schema: - properties: - access_level: - type: integer - description: 'A valid access level (defaults: `30`, the Developer - role)' - format: int32 - default: 30 - responses: - 200: - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_AccessRequester' - successfull_response: - example: - id: 1 - username: raymond_smith - name: Raymond Smith - state: active - created_at: 2012-10-22T14:13:35Z - access_level: 20 - /api/v4/groups/{id}/access_requests: - get: - tags: - - access_requests - summary: Gets a list of access requests for a group. - description: This feature was introduced in GitLab 8.11. - operationId: getApiV4GroupsIdAccessRequests - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user - required: true - schema: - type: string - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - responses: - 200: - description: Gets a list of access requests for a group. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_AccessRequester' - post: - tags: - - access_requests - summary: Requests access for the authenticated user to a group. - description: This feature was introduced in GitLab 8.11. - operationId: postApiV4GroupsIdAccessRequests - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the group owned by the authenticated - user - required: true - schema: - type: string - responses: - 200: - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_AccessRequester' - successfull_response: - example: - id: 1 - username: raymond_smith - name: Raymond Smith - state: active - created_at: 2012-10-22T14:13:35Z - access_level: 20 - /api/v4/projects/{id}/repository/merged_branches: - delete: - tags: - - branches - description: Delete all merged branches - operationId: deleteApiV4ProjectsIdRepositoryMergedBranches - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - responses: - 202: - description: 202 Accepted - 404: - description: 404 Project Not Found - /api/v4/projects/{id}/repository/branches/{branch}: - get: - tags: - - branches - description: Get a single repository branch - operationId: getApiV4ProjectsIdRepositoryBranchesBranch - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: branch - in: path - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Get a single repository branch - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Branch' - 404: - description: Branch Not Found - delete: - tags: - - branches - description: Delete a branch - operationId: deleteApiV4ProjectsIdRepositoryBranchesBranch - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: branch - in: path - description: The name of the branch - required: true - schema: - type: string - responses: - 204: - description: Delete a branch - 404: - description: Branch Not Found - head: - tags: - - branches - description: Check if a branch exists - operationId: headApiV4ProjectsIdRepositoryBranchesBranch - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: branch - in: path - description: The name of the branch - required: true - schema: - type: string - responses: - 204: - description: No Content - 404: - description: Not Found - /api/v4/projects/{id}/repository/branches: - get: - tags: - - branches - description: Get a project repository branches - operationId: getApiV4ProjectsIdRepositoryBranches - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - - name: search - in: query - description: Return list of branches matching the search criteria - schema: - type: string - - name: regex - in: query - description: Return list of branches matching the regex - schema: - type: string - - name: sort - in: query - description: Return list of branches sorted by the given field - schema: - type: string - enum: - - name_asc - - updated_asc - - updated_desc - - name: page_token - in: query - description: Name of branch to start the pagination from - schema: - type: string - responses: - 200: - description: Get a project repository branches - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_Branch' - 404: - description: 404 Project Not Found - post: - tags: - - branches - description: Create branch - operationId: postApiV4ProjectsIdRepositoryBranches - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - required: - - branch - - ref - properties: - branch: - type: string - description: The name of the branch - ref: - type: string - description: Create branch from commit sha or existing branch - required: true - responses: - 201: - description: Create branch - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Branch' - 400: - description: Failed to create branch - /api/v4/projects/{id}/repository/branches/{branch}/unprotect: - put: - tags: - - branches - description: Unprotect a single branch - operationId: putApiV4ProjectsIdRepositoryBranchesBranchUnprotect - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: branch - in: path - description: The name of the branch - required: true - schema: - type: string - responses: - 200: - description: Unprotect a single branch - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Branch' - 404: - description: 404 Project Not Found - /api/v4/projects/{id}/repository/branches/{branch}/protect: - put: - tags: - - branches - description: Protect a single branch - operationId: putApiV4ProjectsIdRepositoryBranchesBranchProtect - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: branch - in: path - description: The name of the branch - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - properties: - developers_can_push: - type: boolean - description: Flag if developers can push to that branch - developers_can_merge: - type: boolean - description: Flag if developers can merge to that branch - responses: - 200: - description: Protect a single branch - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Branch' - 404: - description: 404 Branch Not Found - /api/v4/projects/{id}/badges/{badge_id}: - get: - tags: - - badges - summary: Gets a badge of a project. - description: This feature was introduced in GitLab 10.6. - operationId: getApiV4ProjectsIdBadgesBadgeId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user. - required: true - schema: - type: string - - name: badge_id - in: path - description: The badge ID - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Gets a badge of a project. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Badge' - put: - tags: - - badges - summary: Updates a badge of a project. - description: This feature was introduced in GitLab 10.6. - operationId: putApiV4ProjectsIdBadgesBadgeId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user. - required: true - schema: - type: string - - name: badge_id - in: path - required: true - schema: - type: integer - format: int32 - requestBody: - content: - application/json: - schema: - properties: - link_url: - type: string - description: URL of the badge link - image_url: - type: string - description: URL of the badge image - name: - type: string - description: Name for the badge - responses: - 200: - description: Updates a badge of a project. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Badge' - delete: - tags: - - badges - summary: Removes a badge from the project. - description: This feature was introduced in GitLab 10.6. - operationId: deleteApiV4ProjectsIdBadgesBadgeId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user. - required: true - schema: - type: string - - name: badge_id - in: path - description: The badge ID - required: true - schema: - type: integer - format: int32 - responses: - 204: - description: Removes a badge from the project. - /api/v4/projects/{id}/badges: - get: - tags: - - badges - summary: Gets a list of project badges viewable by the authenticated user. - description: This feature was introduced in GitLab 10.6. - operationId: getApiV4ProjectsIdBadges - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user. - required: true - schema: - type: string - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - - name: name - in: query - description: Name for the badge - schema: - type: string - responses: - 200: - description: Gets a list of project badges viewable by the authenticated - user. - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_Badge' - post: - tags: - - badges - summary: Adds a badge to a project. - description: This feature was introduced in GitLab 10.6. - operationId: postApiV4ProjectsIdBadges - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - required: - - image_url - - link_url - properties: - link_url: - type: string - description: URL of the badge link - image_url: - type: string - description: URL of the badge image - name: - type: string - description: Name for the badge - required: true - responses: - 201: - description: Adds a badge to a project. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Badge' - /api/v4/projects/{id}/badges/render: - get: - tags: - - badges - summary: Preview a badge from a project. - description: This feature was introduced in GitLab 10.6. - operationId: getApiV4ProjectsIdBadgesRender - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user. - required: true - schema: - type: string - - name: link_url - in: query - description: URL of the badge link - required: true - schema: - type: string - - name: image_url - in: query - description: URL of the badge image - required: true - schema: - type: string - responses: - 200: - description: Preview a badge from a project. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BasicBadgeDetails' - /api/v4/projects/{id}/access_requests/{user_id}: - delete: - tags: - - access_requests - summary: Denies an access request for the given user. - description: This feature was introduced in GitLab 8.11. - operationId: deleteApiV4ProjectsIdAccessRequestsUserId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user - required: true - schema: - type: string - - name: user_id - in: path - description: The user ID of the access requester - required: true - schema: - type: integer - format: int32 - responses: - 204: - description: Denies an access request for the given user. - /api/v4/projects/{id}/access_requests/{user_id}/approve: - put: - tags: - - access_requests - summary: Approves an access request for the given user. - description: This feature was introduced in GitLab 8.11. - operationId: putApiV4ProjectsIdAccessRequestsUserIdApprove - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user - required: true - schema: - type: string - - name: user_id - in: path - description: The user ID of the access requester - required: true - schema: - type: integer - format: int32 - requestBody: - content: - application/json: - schema: - properties: - access_level: - type: integer - description: 'A valid access level (defaults: `30`, the Developer - role)' - format: int32 - default: 30 - responses: - 200: - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_AccessRequester' - successfull_response: - example: - id: 1 - username: raymond_smith - name: Raymond Smith - state: active - created_at: 2012-10-22T14:13:35Z - access_level: 20 - /api/v4/projects/{id}/access_requests: - get: - tags: - - access_requests - summary: Gets a list of access requests for a project. - description: This feature was introduced in GitLab 8.11. - operationId: getApiV4ProjectsIdAccessRequests - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user - required: true - schema: - type: string - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - responses: - 200: - description: Gets a list of access requests for a project. - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_AccessRequester' - post: - tags: - - access_requests - summary: Requests access for the authenticated user to a project. - description: This feature was introduced in GitLab 8.11. - operationId: postApiV4ProjectsIdAccessRequests - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project owned by the authenticated - user - required: true - schema: - type: string - responses: - 200: - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_AccessRequester' - successfull_response: - example: - id: 1 - username: raymond_smith - name: Raymond Smith - state: active - created_at: 2012-10-22T14:13:35Z - access_level: 20 - /api/v4/projects/{id}/alert_management_alerts/{alert_iid}/metric_images/{metric_image_id}: - put: - tags: - - alert_management - description: Update a metric image for an alert - operationId: putApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesMetricImageId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: alert_iid - in: path - description: The IID of the Alert - required: true - schema: - type: integer - format: int32 - - name: metric_image_id - in: path - description: The ID of metric image - required: true - schema: - type: integer - format: int32 - requestBody: - content: - multipart/form-data: - schema: - properties: - url: - type: string - description: The url to view more metric info - url_text: - type: string - description: A description of the image or URL - responses: - 200: - description: Update a metric image for an alert - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_MetricImage' - 403: - description: Forbidden - 422: - description: Unprocessable entity - delete: - tags: - - alert_management - description: Remove a metric image for an alert - operationId: deleteApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesMetricImageId - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: alert_iid - in: path - description: The IID of the Alert - required: true - schema: - type: integer - format: int32 - - name: metric_image_id - in: path - description: The ID of metric image - required: true - schema: - type: integer - format: int32 - responses: - 204: - description: Remove a metric image for an alert - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_MetricImage' - 403: - description: Forbidden - 422: - description: Unprocessable entity - /api/v4/projects/{id}/alert_management_alerts/{alert_iid}/metric_images: - get: - tags: - - alert_management - description: Metric Images for alert - operationId: getApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImages - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: alert_iid - in: path - description: The IID of the Alert - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Metric Images for alert - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_MetricImage' - 404: - description: Not found - post: - tags: - - alert_management - description: Upload a metric image for an alert - operationId: postApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImages - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: alert_iid - in: path - description: The IID of the Alert - required: true - schema: - type: integer - format: int32 - requestBody: - content: - multipart/form-data: - schema: - required: - - file - properties: - file: - type: string - description: The image file to be uploaded - format: binary - url: - type: string - description: The url to view more metric info - url_text: - type: string - description: A description of the image or URL - required: true - responses: - 200: - description: Upload a metric image for an alert - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_MetricImage' - 403: - description: Forbidden - /api/v4/projects/{id}/alert_management_alerts/{alert_iid}/metric_images/authorize: - post: - tags: - - alert_management - description: Workhorse authorize metric image file upload - operationId: postApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesAuthorize - parameters: - - name: id - in: path - description: The ID or URL-encoded path of the project - required: true - schema: - type: string - - name: alert_iid - in: path - description: The IID of the Alert - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Workhorse authorize metric image file upload - 403: - description: Forbidden - /api/v4/admin/batched_background_migrations/{id}: - get: - tags: - - batched_background_migrations - description: Retrieve a batched background migration - operationId: getApiV4AdminBatchedBackgroundMigrationsId - parameters: - - name: database - in: query - description: The name of the database - schema: - type: string - default: main - enum: - - main - - ci - - embedding - - main_clusterwide - - geo - - name: id - in: path - description: The batched background migration id - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Retrieve a batched background migration - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BatchedBackgroundMigration' - 401: - description: 401 Unauthorized - 403: - description: 403 Forbidden - 404: - description: 404 Not found - /api/v4/admin/batched_background_migrations: - get: - tags: - - batched_background_migrations - description: Get the list of batched background migrations - operationId: getApiV4AdminBatchedBackgroundMigrations - parameters: - - name: database - in: query - description: The name of the database, the default `main` - schema: - type: string - default: main - enum: - - main - - ci - - embedding - - main_clusterwide - - geo - responses: - 200: - description: Get the list of batched background migrations - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_BatchedBackgroundMigration' - 401: - description: 401 Unauthorized - 403: - description: 403 Forbidden - /api/v4/admin/batched_background_migrations/{id}/resume: - put: - tags: - - batched_background_migrations - description: Resume a batched background migration - operationId: putApiV4AdminBatchedBackgroundMigrationsIdResume - parameters: - - name: id - in: path - description: The batched background migration id - required: true - schema: - type: integer - format: int32 - requestBody: - content: - application/json: - schema: - properties: - database: - type: string - description: The name of the database - default: main - enum: - - main - - ci - - embedding - - main_clusterwide - - geo - responses: - 200: - description: Resume a batched background migration - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BatchedBackgroundMigration' - 401: - description: 401 Unauthorized - 403: - description: 403 Forbidden - 404: - description: 404 Not found - 422: - description: You can resume only `paused` batched background migrations. - /api/v4/admin/batched_background_migrations/{id}/pause: - put: - tags: - - batched_background_migrations - description: Pause a batched background migration - operationId: putApiV4AdminBatchedBackgroundMigrationsIdPause - parameters: - - name: id - in: path - description: The batched background migration id - required: true - schema: - type: integer - format: int32 - requestBody: - content: - application/json: - schema: - properties: - database: - type: string - description: The name of the database - default: main - enum: - - main - - ci - - embedding - - main_clusterwide - - geo - responses: - 200: - description: Pause a batched background migration - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BatchedBackgroundMigration' - 401: - description: 401 Unauthorized - 403: - description: 403 Forbidden - 404: - description: 404 Not found - 422: - description: You can pause only `active` batched background migrations. - /api/v4/admin/ci/variables/{key}: - get: - tags: - - ci_variables - description: Get the details of a specific instance-level variable - operationId: getApiV4AdminCiVariablesKey - parameters: - - name: key - in: path - description: The key of a variable - required: true - schema: - type: string - responses: - 200: - description: Get the details of a specific instance-level variable - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Ci_Variable' - 404: - description: Instance Variable Not Found - put: - tags: - - ci_variables - description: Update an instance-level variable - operationId: putApiV4AdminCiVariablesKey - parameters: - - name: key - in: path - description: The key of a variable - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - properties: - value: - type: string - description: The value of a variable - protected: - type: boolean - description: Whether the variable is protected - masked: - type: boolean - description: Whether the variable is masked - raw: - type: boolean - description: Whether the variable will be expanded - variable_type: - type: string - description: 'The type of a variable. Available types are: env_var - (default) and file' - enum: - - env_var - - file - responses: - 200: - description: Update an instance-level variable - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Ci_Variable' - 404: - description: Instance Variable Not Found - delete: - tags: - - ci_variables - description: Delete an existing instance-level variable - operationId: deleteApiV4AdminCiVariablesKey - parameters: - - name: key - in: path - description: The key of a variable - required: true - schema: - type: string - responses: - 204: - description: Delete an existing instance-level variable - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Ci_Variable' - 404: - description: Instance Variable Not Found - /api/v4/admin/ci/variables: - get: - tags: - - ci_variables - description: List all instance-level variables - operationId: getApiV4AdminCiVariables - parameters: - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - responses: - 200: - description: List all instance-level variables - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Ci_Variable' - post: - tags: - - ci_variables - description: Create a new instance-level variable - operationId: postApiV4AdminCiVariables - requestBody: - content: - application/json: - schema: - required: - - key - - value - properties: - key: - type: string - description: The key of the variable. Max 255 characters - value: - type: string - description: The value of a variable - protected: - type: boolean - description: Whether the variable is protected - masked: - type: boolean - description: Whether the variable is masked - raw: - type: boolean - description: Whether the variable will be expanded - variable_type: - type: string - description: 'The type of a variable. Available types are: env_var - (default) and file' - enum: - - env_var - - file - required: true - responses: - 201: - description: Create a new instance-level variable - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Ci_Variable' - 400: - description: 400 Bad Request - /api/v4/admin/databases/{database_name}/dictionary/tables/{table_name}: - get: - tags: - - admin - description: Retrieve dictionary details - operationId: getApiV4AdminDatabasesDatabaseNameDictionaryTablesTableName - parameters: - - name: database_name - in: path - description: The database name - required: true - schema: - type: string - enum: - - main - - ci - - name: table_name - in: path - description: The table name - required: true - schema: - type: string - responses: - 200: - description: Retrieve dictionary details - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Dictionary_Table' - 401: - description: 401 Unauthorized - 403: - description: 403 Forbidden - 404: - description: 404 Not found - /api/v4/admin/clusters/{cluster_id}: - get: - tags: - - clusters - summary: Get a single instance cluster - description: This feature was introduced in GitLab 13.2. Returns a single instance - cluster. - operationId: getApiV4AdminClustersClusterId - parameters: - - name: cluster_id - in: path - description: The cluster ID - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Get a single instance cluster - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Cluster' - 403: - description: Forbidden - 404: - description: Not found - put: - tags: - - clusters - summary: Edit instance cluster - description: This feature was introduced in GitLab 13.2. Updates an existing - instance cluster. - operationId: putApiV4AdminClustersClusterId - parameters: - - name: cluster_id - in: path - description: The cluster ID - required: true - schema: - type: integer - format: int32 - requestBody: - content: - application/json: - schema: - properties: - name: - type: string - description: Cluster name - enabled: - type: boolean - description: Enable or disable Gitlab's connection to your Kubernetes - cluster - environment_scope: - type: string - description: The associated environment to the cluster - namespace_per_environment: - type: boolean - description: Deploy each environment to a separate Kubernetes namespace - default: true - domain: - type: string - description: Cluster base domain - management_project_id: - type: integer - description: The ID of the management project - format: int32 - managed: - type: boolean - description: Determines if GitLab will manage namespaces and service - accounts for this cluster - platform_kubernetes_attributes[api_url]: - type: string - description: URL to access the Kubernetes API - platform_kubernetes_attributes[token]: - type: string - description: Token to authenticate against Kubernetes - platform_kubernetes_attributes[ca_cert]: - type: string - description: TLS certificate (needed if API is using a self-signed - TLS certificate) - platform_kubernetes_attributes[namespace]: - type: string - description: Unique namespace related to Project - responses: - 200: - description: Edit instance cluster - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Cluster' - 400: - description: Validation error - 403: - description: Forbidden - 404: - description: Not found - delete: - tags: - - clusters - summary: Delete instance cluster - description: This feature was introduced in GitLab 13.2. Deletes an existing - instance cluster. Does not remove existing resources within the connected - Kubernetes cluster. - operationId: deleteApiV4AdminClustersClusterId - parameters: - - name: cluster_id - in: path - description: The cluster ID - required: true - schema: - type: integer - format: int32 - responses: - 204: - description: Delete instance cluster - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Cluster' - 403: - description: Forbidden - 404: - description: Not found - /api/v4/admin/clusters/add: - post: - tags: - - clusters - summary: Add existing instance cluster - description: This feature was introduced in GitLab 13.2. Adds an existing Kubernetes - instance cluster. - operationId: postApiV4AdminClustersAdd - requestBody: - content: - application/json: - schema: - required: - - name - - platform_kubernetes_attributes[api_url] - - platform_kubernetes_attributes[token] - properties: - name: - type: string - description: Cluster name - enabled: - type: boolean - description: Determines if cluster is active or not, defaults to - true - default: true - environment_scope: - type: string - description: The associated environment to the cluster - default: '*' - namespace_per_environment: - type: boolean - description: Deploy each environment to a separate Kubernetes namespace - default: true - domain: - type: string - description: Cluster base domain - management_project_id: - type: integer - description: The ID of the management project - format: int32 - managed: - type: boolean - description: Determines if GitLab will manage namespaces and service - accounts for this cluster, defaults to true - default: true - platform_kubernetes_attributes[api_url]: - type: string - description: URL to access the Kubernetes API - platform_kubernetes_attributes[token]: - type: string - description: Token to authenticate against Kubernetes - platform_kubernetes_attributes[ca_cert]: - type: string - description: TLS certificate (needed if API is using a self-signed - TLS certificate) - platform_kubernetes_attributes[namespace]: - type: string - description: Unique namespace related to Project - platform_kubernetes_attributes[authorization_type]: - type: string - description: Cluster authorization type, defaults to RBAC - default: rbac - enum: - - unknown_authorization - - rbac - - abac - required: true - responses: - 201: - description: Add existing instance cluster - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Cluster' - 400: - description: Validation error - 403: - description: Forbidden - 404: - description: Not found - /api/v4/admin/clusters: - get: - tags: - - clusters - summary: List instance clusters - description: This feature was introduced in GitLab 13.2. Returns a list of instance - clusters. - operationId: getApiV4AdminClusters - responses: - 200: - description: List instance clusters - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_Cluster' - 403: - description: Forbidden - /api/v4/admin/migrations/{timestamp}/mark: - post: - tags: - - migrations - description: Mark the migration as successfully executed - operationId: postApiV4AdminMigrationsTimestampMark - parameters: - - name: timestamp - in: path - description: The migration version timestamp - required: true - schema: - type: integer - format: int32 - requestBody: - content: - application/json: - schema: - properties: - database: - type: string - description: The name of the database - default: main - enum: - - main - - ci - - embedding - - main_clusterwide - - geo - responses: - 201: - description: 201 Created - 401: - description: 401 Unauthorized - 403: - description: 403 Forbidden - 404: - description: 404 Not found - 422: - description: You can mark only pending migrations - /api/v4/applications/{id}: - delete: - tags: - - applications - summary: Delete an application - description: Delete a specific application - operationId: deleteApiV4ApplicationsId - parameters: - - name: id - in: path - description: The ID of the application (not the application_id) - required: true - schema: - type: integer - format: int32 - responses: - 204: - description: Delete an application - /api/v4/applications: - get: - tags: - - applications - summary: Get applications - description: List all registered applications - operationId: getApiV4Applications - responses: - 200: - description: Get applications - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_Application' - post: - tags: - - applications - summary: Create a new application - description: This feature was introduced in GitLab 10.5 - operationId: postApiV4Applications - requestBody: - content: - application/json: - schema: - required: - - name - - redirect_uri - - scopes - properties: - name: - type: string - description: Name of the application. - redirect_uri: - type: string - description: Redirect URI of the application. - scopes: - type: string - description: |- - Scopes of the application. You can specify multiple scopes by separating\ - each scope using a space - confidential: - type: boolean - description: |- - The application is used where the client secret can be kept confidential. Native mobile apps \ - and Single Page Apps are considered non-confidential. Defaults to true if not supplied - default: true - required: true - responses: - 200: - description: Create a new application - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_ApplicationWithSecret' - /api/v4/avatar: - get: - tags: - - avatar - description: Return avatar url for a user - operationId: getApiV4Avatar - parameters: - - name: email - in: query - description: Public email address of the user - required: true - schema: - type: string - - name: size - in: query - description: Single pixel dimension for Gravatar images - schema: - type: integer - format: int32 - responses: - 200: - description: Return avatar url for a user - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Avatar' - /api/v4/broadcast_messages/{id}: - get: - tags: - - broadcast_messages - summary: Get a specific broadcast message - description: This feature was introduced in GitLab 8.12. - operationId: getApiV4BroadcastMessagesId - parameters: - - name: id - in: path - description: Broadcast message ID - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Get a specific broadcast message - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BroadcastMessage' - put: - tags: - - broadcast_messages - summary: Update a broadcast message - description: This feature was introduced in GitLab 8.12. - operationId: putApiV4BroadcastMessagesId - parameters: - - name: id - in: path - description: Broadcast message ID - required: true - schema: - type: integer - format: int32 - requestBody: - content: - application/json: - schema: - properties: - message: - type: string - description: Message to display - starts_at: - type: string - description: Starting time - format: date-time - ends_at: - type: string - description: Ending time - format: date-time - color: - type: string - description: Background color - font: - type: string - description: Foreground color - target_access_levels: - type: array - description: Target user roles - items: - type: integer - format: int32 - enum: - - 10 - - 20 - - 30 - - 40 - - 50 - target_path: - type: string - description: Target path - broadcast_type: - type: string - description: Broadcast Type - enum: - - banner - - notification - dismissable: - type: boolean - description: Is dismissable - responses: - 200: - description: Update a broadcast message - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BroadcastMessage' - delete: - tags: - - broadcast_messages - summary: Delete a broadcast message - description: This feature was introduced in GitLab 8.12. - operationId: deleteApiV4BroadcastMessagesId - parameters: - - name: id - in: path - description: Broadcast message ID - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Delete a broadcast message - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BroadcastMessage' - /api/v4/broadcast_messages: - get: - tags: - - broadcast_messages - summary: Get all broadcast messages - description: This feature was introduced in GitLab 8.12. - operationId: getApiV4BroadcastMessages - parameters: - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - responses: - 200: - description: Get all broadcast messages - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BroadcastMessage' - post: - tags: - - broadcast_messages - summary: Create a broadcast message - description: This feature was introduced in GitLab 8.12. - operationId: postApiV4BroadcastMessages - requestBody: - content: - application/json: - schema: - required: - - message - properties: - message: - type: string - description: Message to display - starts_at: - type: string - description: Starting time - format: date-time - ends_at: - type: string - description: Ending time - format: date-time - color: - type: string - description: Background color - font: - type: string - description: Foreground color - target_access_levels: - type: array - description: Target user roles - items: - type: integer - format: int32 - enum: - - 10 - - 20 - - 30 - - 40 - - 50 - target_path: - type: string - description: Target path - broadcast_type: - type: string - description: Broadcast type. Defaults to banner - enum: - - banner - - notification - dismissable: - type: boolean - description: Is dismissable - required: true - responses: - 201: - description: Create a broadcast message - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BroadcastMessage' - /api/v4/bulk_imports/{import_id}/entities/{entity_id}: - get: - tags: - - bulk_imports - summary: Get GitLab Migration entity details - description: This feature was introduced in GitLab 14.1. - operationId: getApiV4BulkImportsImportIdEntitiesEntityId - parameters: - - name: import_id - in: path - description: The ID of user's GitLab Migration - required: true - schema: - type: integer - format: int32 - - name: entity_id - in: path - description: The ID of GitLab Migration entity - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Get GitLab Migration entity details - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BulkImports' - 401: - description: Unauthorized - 404: - description: Not found - 503: - description: Service unavailable - /api/v4/bulk_imports/{import_id}/entities: - get: - tags: - - bulk_imports - summary: List GitLab Migration entities - description: This feature was introduced in GitLab 14.1. - operationId: getApiV4BulkImportsImportIdEntities - parameters: - - name: import_id - in: path - description: The ID of user's GitLab Migration - required: true - schema: - type: integer - format: int32 - - name: status - in: query - description: Return import entities with specified status - schema: - type: string - enum: - - created - - started - - finished - - timeout - - failed - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - responses: - 200: - description: List GitLab Migration entities - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_BulkImports' - 401: - description: Unauthorized - 404: - description: Not found - 503: - description: Service unavailable - /api/v4/bulk_imports/{import_id}: - get: - tags: - - bulk_imports - summary: Get GitLab Migration details - description: This feature was introduced in GitLab 14.1. - operationId: getApiV4BulkImportsImportId - parameters: - - name: import_id - in: path - description: The ID of user's GitLab Migration - required: true - schema: - type: integer - format: int32 - responses: - 200: - description: Get GitLab Migration details - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BulkImport' - 401: - description: Unauthorized - 404: - description: Not found - 503: - description: Service unavailable - /api/v4/bulk_imports/entities: - get: - tags: - - bulk_imports - summary: List all GitLab Migrations' entities - description: This feature was introduced in GitLab 14.1. - operationId: getApiV4BulkImportsEntities - parameters: - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - - name: sort - in: query - description: Return GitLab Migrations sorted in created by `asc` or `desc` - order. - schema: - type: string - default: desc - enum: - - asc - - desc - - name: status - in: query - description: Return all GitLab Migrations' entities with specified status - schema: - type: string - enum: - - created - - started - - finished - - timeout - - failed - responses: - 200: - description: List all GitLab Migrations' entities - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_BulkImports' - 401: - description: Unauthorized - 404: - description: Not found - 503: - description: Service unavailable - /api/v4/bulk_imports: - get: - tags: - - bulk_imports - summary: List all GitLab Migrations - description: This feature was introduced in GitLab 14.1. - operationId: getApiV4BulkImports - parameters: - - name: page - in: query - description: Current page number - schema: - type: integer - format: int32 - default: 1 - - name: per_page - in: query - description: Number of items per page - schema: - type: integer - format: int32 - default: 20 - - name: sort - in: query - description: Return GitLab Migrations sorted in created by `asc` or `desc` - order. - schema: - type: string - default: desc - enum: - - asc - - desc - - name: status - in: query - description: Return GitLab Migrations with specified status - schema: - type: string - enum: - - created - - started - - finished - - timeout - - failed - responses: - 200: - description: List all GitLab Migrations - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/API_Entities_BulkImport' - 401: - description: Unauthorized - 404: - description: Not found - 503: - description: Service unavailable - post: - tags: - - bulk_imports - summary: Start a new GitLab Migration - description: This feature was introduced in GitLab 14.2. - operationId: postApiV4BulkImports - requestBody: - content: - application/x-www-form-urlencoded: - schema: - required: - - configuration[access_token] - - configuration[url] - - entities[destination_namespace] - - entities[source_full_path] - - entities[source_type] - properties: - configuration[url]: - type: string - description: Source GitLab instance URL - configuration[access_token]: - type: string - description: Access token to the source GitLab instance - entities[source_type]: - type: array - description: Source entity type - items: - type: string - enum: - - group_entity - - project_entity - entities[source_full_path]: - type: array - description: Relative path of the source entity to import - items: - type: string - entities[destination_namespace]: - type: array - description: Destination namespace for the entity - items: - type: string - entities[destination_slug]: - type: array - description: Destination slug for the entity - items: - type: string - entities[destination_name]: - type: array - description: 'Deprecated: Use :destination_slug instead. Destination - slug for the entity' - items: - type: string - entities[migrate_projects]: - type: array - description: Indicates group migration should include nested projects - items: - type: boolean - required: true - responses: - 200: - description: Start a new GitLab Migration - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_BulkImport' - 400: - description: Bad request - 401: - description: Unauthorized - 404: - description: Not found - 422: - description: Unprocessable entity - 503: - description: Service unavailable - /api/v4/application/appearance: - get: - tags: - - application - description: Get the current appearance - operationId: getApiV4ApplicationAppearance - responses: - 200: - description: Get the current appearance - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Appearance' - put: - tags: - - application - description: Modify appearance - operationId: putApiV4ApplicationAppearance - requestBody: - content: - multipart/form-data: - schema: - properties: - title: - type: string - description: Instance title on the sign in / sign up page - description: - type: string - description: Markdown text shown on the sign in / sign up page - pwa_name: - type: string - description: Name of the Progressive Web App - pwa_short_name: - type: string - description: Optional, short name for Progressive Web App - pwa_description: - type: string - description: An explanation of what the Progressive Web App does - logo: - type: string - description: Instance image used on the sign in / sign up page - format: binary - pwa_icon: - type: string - description: Icon used for Progressive Web App - format: binary - header_logo: - type: string - description: Instance image used for the main navigation bar - format: binary - favicon: - type: string - description: Instance favicon in .ico/.png format - format: binary - new_project_guidelines: - type: string - description: Markdown text shown on the new project page - profile_image_guidelines: - type: string - description: Markdown text shown on the profile page below Public - Avatar - header_message: - type: string - description: Message within the system header bar - footer_message: - type: string - description: Message within the system footer bar - message_background_color: - type: string - description: Background color for the system header / footer bar - message_font_color: - type: string - description: Font color for the system header / footer bar - email_header_and_footer_enabled: - type: boolean - description: Add header and footer to all outgoing emails if enabled - responses: - 200: - description: Modify appearance - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Appearance' - /api/v4/application/plan_limits: - get: - tags: - - plan_limits - summary: Get current plan limits - description: List the current limits of a plan on the GitLab instance. - operationId: getApiV4ApplicationPlanLimits - parameters: - - name: plan_name - in: query - description: 'Name of the plan to get the limits from. Default: default.' - schema: - type: string - default: default - enum: - - default - - free - - bronze - - silver - - premium - - gold - - ultimate - - ultimate_trial - - premium_trial - - opensource - responses: - 200: - description: Get current plan limits - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_PlanLimit' - 401: - description: Unauthorized - 403: - description: Forbidden - put: - tags: - - plan_limits - summary: Change plan limits - description: Modify the limits of a plan on the GitLab instance. - operationId: putApiV4ApplicationPlanLimits - requestBody: - content: - application/json: - schema: - required: - - plan_name - properties: - plan_name: - type: string - description: Name of the plan to update - enum: - - default - - free - - bronze - - silver - - premium - - gold - - ultimate - - ultimate_trial - - premium_trial - - opensource - ci_pipeline_size: - type: integer - description: Maximum number of jobs in a single pipeline - format: int32 - ci_active_jobs: - type: integer - description: Total number of jobs in currently active pipelines - format: int32 - ci_project_subscriptions: - type: integer - description: Maximum number of pipeline subscriptions to and from - a project - format: int32 - ci_pipeline_schedules: - type: integer - description: Maximum number of pipeline schedules - format: int32 - ci_needs_size_limit: - type: integer - description: Maximum number of DAG dependencies that a job can have - format: int32 - ci_registered_group_runners: - type: integer - description: Maximum number of runners registered per group - format: int32 - ci_registered_project_runners: - type: integer - description: Maximum number of runners registered per project - format: int32 - conan_max_file_size: - type: integer - description: Maximum Conan package file size in bytes - format: int32 - enforcement_limit: - type: integer - description: Maximum storage size for the root namespace enforcement - in MiB - format: int32 - generic_packages_max_file_size: - type: integer - description: Maximum generic package file size in bytes - format: int32 - helm_max_file_size: - type: integer - description: Maximum Helm chart file size in bytes - format: int32 - maven_max_file_size: - type: integer - description: Maximum Maven package file size in bytes - format: int32 - notification_limit: - type: integer - description: Maximum storage size for the root namespace notifications - in MiB - format: int32 - npm_max_file_size: - type: integer - description: Maximum NPM package file size in bytes - format: int32 - nuget_max_file_size: - type: integer - description: Maximum NuGet package file size in bytes - format: int32 - pypi_max_file_size: - type: integer - description: Maximum PyPI package file size in bytes - format: int32 - terraform_module_max_file_size: - type: integer - description: Maximum Terraform Module package file size in bytes - format: int32 - storage_size_limit: - type: integer - description: Maximum storage size for the root namespace in MiB - format: int32 - pipeline_hierarchy_size: - type: integer - description: Maximum number of downstream pipelines in a pipeline's - hierarchy tree - format: int32 - required: true - responses: - 200: - description: Change plan limits - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_PlanLimit' - 400: - description: Bad request - 401: - description: Unauthorized - 403: - description: Forbidden - /api/v4/metadata: - get: - tags: - - metadata - summary: Retrieve metadata information for this GitLab instance - description: This feature was introduced in GitLab 15.2. - operationId: getApiV4Metadata - responses: - 200: - description: Retrieve metadata information for this GitLab instance - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Metadata' - 401: - description: Unauthorized - /api/v4/version: - get: - tags: - - metadata - summary: Retrieves version information for the GitLab instance - description: This feature was introduced in GitLab 8.13 and deprecated in 15.5. - We recommend you instead use the Metadata API. - operationId: getApiV4Version - responses: - 200: - description: Retrieves version information for the GitLab instance - content: - application/json: - schema: - $ref: '#/components/schemas/API_Entities_Metadata' - 401: - description: Unauthorized -components: - schemas: - API_Entities_Badge: - type: object - properties: - name: - type: string - link_url: - type: string - image_url: - type: string - rendered_link_url: - type: string - rendered_image_url: - type: string - id: - type: string - kind: - type: string - description: API_Entities_Badge model - API_Entities_BasicBadgeDetails: - type: object - properties: - name: - type: string - link_url: - type: string - image_url: - type: string - rendered_link_url: - type: string - rendered_image_url: - type: string - description: API_Entities_BasicBadgeDetails model - API_Entities_AccessRequester: - type: object - properties: - id: - type: integer - format: int32 - example: 1 - username: - type: string - example: admin - name: - type: string - example: Administrator - state: - type: string - example: active - avatar_url: - type: string - example: https://gravatar.com/avatar/1 - avatar_path: - type: string - example: /user/avatar/28/The-Big-Lebowski-400-400.png - custom_attributes: - type: array - items: - $ref: '#/components/schemas/API_Entities_CustomAttribute' - web_url: - type: string - example: https://gitlab.example.com/root - email: - type: string - requested_at: - type: string - description: API_Entities_AccessRequester model - API_Entities_CustomAttribute: - type: object - properties: - key: - type: string - example: foo - value: - type: string - example: bar - API_Entities_Branch: - type: object - properties: - name: - type: string - example: master - commit: - $ref: '#/components/schemas/API_Entities_Commit' - merged: - type: boolean - example: true - protected: - type: boolean - example: true - developers_can_push: - type: boolean - example: true - developers_can_merge: - type: boolean - example: true - can_push: - type: boolean - example: true - default: - type: boolean - example: true - web_url: - type: string - example: https://gitlab.example.com/Commit921/the-dude/-/tree/master - description: API_Entities_Branch model - API_Entities_Commit: - type: object - properties: - id: - type: string - example: 2695effb5807a22ff3d138d593fd856244e155e7 - short_id: - type: string - example: 2695effb - created_at: - type: string - format: date-time - example: 2017-07-26T11:08:53+02:00 - parent_ids: - type: array - items: - type: string - example: 2a4b78934375d7f53875269ffd4f45fd83a84ebe - title: - type: string - example: Initial commit - message: - type: string - example: Initial commit - author_name: - type: string - example: John Smith - author_email: - type: string - example: john@example.com - authored_date: - type: string - format: date-time - example: 2012-05-28T04:42:42-07:00 - committer_name: - type: string - example: Jack Smith - committer_email: - type: string - example: jack@example.com - committed_date: - type: string - format: date-time - example: 2012-05-28T04:42:42-07:00 - trailers: - type: object - properties: {} - example: '{ "Merged-By": "Jane Doe janedoe@gitlab.com" }' - web_url: - type: string - example: https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746 - API_Entities_MetricImage: - type: object - properties: - id: - type: integer - format: int32 - example: 23 - created_at: - type: string - format: date-time - example: 2020-11-13T00:06:18.084Z - filename: - type: string - example: file.png - file_path: - type: string - example: /uploads/-/system/alert_metric_image/file/23/file.png - url: - type: string - example: https://example.com/metric - url_text: - type: string - example: An example metric - description: API_Entities_MetricImage model - API_Entities_BatchedBackgroundMigration: - type: object - properties: - id: - type: string - example: "1234" - job_class_name: - type: string - example: CopyColumnUsingBackgroundMigrationJob - table_name: - type: string - example: events - status: - type: string - example: active - progress: - type: number - format: float - example: 50.0 - created_at: - type: string - format: date-time - example: 2022-11-28T16:26:39+02:00 - description: API_Entities_BatchedBackgroundMigration model - API_Entities_Ci_Variable: - type: object - properties: - variable_type: - type: string - example: env_var - key: - type: string - example: TEST_VARIABLE_1 - value: - type: string - example: TEST_1 - protected: - type: boolean - masked: - type: boolean - raw: - type: boolean - environment_scope: - type: string - example: '*' - description: API_Entities_Ci_Variable model - API_Entities_Dictionary_Table: - type: object - properties: - table_name: - type: string - example: users - feature_categories: - type: array - items: - type: string - example: database - description: API_Entities_Dictionary_Table model - API_Entities_Cluster: - type: object - properties: - id: - type: string - name: - type: string - created_at: - type: string - domain: - type: string - enabled: - type: string - managed: - type: string - provider_type: - type: string - platform_type: - type: string - environment_scope: - type: string - cluster_type: - type: string - namespace_per_environment: - type: string - user: - $ref: '#/components/schemas/API_Entities_UserBasic' - platform_kubernetes: - $ref: '#/components/schemas/API_Entities_Platform_Kubernetes' - provider_gcp: - $ref: '#/components/schemas/API_Entities_Provider_Gcp' - management_project: - $ref: '#/components/schemas/API_Entities_ProjectIdentity' - description: API_Entities_Cluster model - API_Entities_UserBasic: - type: object - properties: - id: - type: integer - format: int32 - example: 1 - username: - type: string - example: admin - name: - type: string - example: Administrator - state: - type: string - example: active - avatar_url: - type: string - example: https://gravatar.com/avatar/1 - avatar_path: - type: string - example: /user/avatar/28/The-Big-Lebowski-400-400.png - custom_attributes: - type: array - items: - $ref: '#/components/schemas/API_Entities_CustomAttribute' - web_url: - type: string - example: https://gitlab.example.com/root - email: - type: string - API_Entities_Platform_Kubernetes: - type: object - properties: - api_url: - type: string - namespace: - type: string - authorization_type: - type: string - ca_cert: - type: string - API_Entities_Provider_Gcp: - type: object - properties: - cluster_id: - type: string - status_name: - type: string - gcp_project_id: - type: string - zone: - type: string - machine_type: - type: string - num_nodes: - type: string - endpoint: - type: string - API_Entities_ProjectIdentity: - type: object - properties: - id: - type: integer - format: int32 - example: 1 - description: - type: string - example: desc - name: - type: string - example: project1 - name_with_namespace: - type: string - example: John Doe / project1 - path: - type: string - example: project1 - path_with_namespace: - type: string - example: namespace1/project1 - created_at: - type: string - format: date-time - example: 2020-05-07T04:27:17.016Z - API_Entities_Application: - type: object - properties: - id: - type: string - application_id: - type: string - example: 5832fc6e14300a0d962240a8144466eef4ee93ef0d218477e55f11cf12fc3737 - application_name: - type: string - example: MyApplication - callback_url: - type: string - example: https://redirect.uri - confidential: - type: boolean - example: true - description: API_Entities_Application model - API_Entities_ApplicationWithSecret: - type: object - properties: - id: - type: string - application_id: - type: string - example: 5832fc6e14300a0d962240a8144466eef4ee93ef0d218477e55f11cf12fc3737 - application_name: - type: string - example: MyApplication - callback_url: - type: string - example: https://redirect.uri - confidential: - type: boolean - example: true - secret: - type: string - example: ee1dd64b6adc89cf7e2c23099301ccc2c61b441064e9324d963c46902a85ec34 - description: API_Entities_ApplicationWithSecret model - API_Entities_Avatar: - type: object - properties: - avatar_url: - type: string - description: API_Entities_Avatar model - API_Entities_BroadcastMessage: - type: object - properties: - id: - type: string - message: - type: string - starts_at: - type: string - ends_at: - type: string - color: - type: string - font: - type: string - target_access_levels: - type: string - target_path: - type: string - broadcast_type: - type: string - dismissable: - type: string - active: - type: string - description: API_Entities_BroadcastMessage model - API_Entities_BulkImports: - type: object - properties: - id: - type: integer - format: int32 - example: 1 - bulk_import_id: - type: integer - format: int32 - example: 1 - status: - type: string - example: created - enum: - - created - - started - - finished - - timeout - - failed - entity_type: - type: string - enum: - - group - - project - source_full_path: - type: string - example: source_group - destination_full_path: - type: string - example: some_group/source_project - destination_name: - type: string - example: destination_slug - destination_slug: - type: string - example: destination_slug - destination_namespace: - type: string - example: destination_path - parent_id: - type: integer - format: int32 - example: 1 - namespace_id: - type: integer - format: int32 - example: 1 - project_id: - type: integer - format: int32 - example: 1 - created_at: - type: string - format: date-time - example: 2012-05-28T04:42:42-07:00 - updated_at: - type: string - format: date-time - example: 2012-05-28T04:42:42-07:00 - failures: - type: array - items: - $ref: '#/components/schemas/API_Entities_BulkImports_EntityFailure' - migrate_projects: - type: boolean - example: true - description: API_Entities_BulkImports model - API_Entities_BulkImports_EntityFailure: - type: object - properties: - relation: - type: string - example: group - step: - type: string - example: extractor - exception_message: - type: string - example: error message - exception_class: - type: string - example: Exception - correlation_id_value: - type: string - example: dfcf583058ed4508e4c7c617bd7f0edd - created_at: - type: string - format: date-time - example: 2012-05-28T04:42:42-07:00 - pipeline_class: - type: string - example: BulkImports::Groups::Pipelines::GroupPipeline - pipeline_step: - type: string - example: extractor - API_Entities_BulkImport: - type: object - properties: - id: - type: integer - format: int32 - example: 1 - status: - type: string - example: finished - enum: - - created - - started - - finished - - timeout - - failed - source_type: - type: string - example: gitlab - created_at: - type: string - format: date-time - example: 2012-05-28T04:42:42-07:00 - updated_at: - type: string - format: date-time - example: 2012-05-28T04:42:42-07:00 - description: API_Entities_BulkImport model - API_Entities_Appearance: - type: object - properties: - title: - type: string - description: - type: string - pwa_name: - type: string - pwa_short_name: - type: string - pwa_description: - type: string - logo: - type: string - pwa_icon: - type: string - header_logo: - type: string - favicon: - type: string - new_project_guidelines: - type: string - profile_image_guidelines: - type: string - header_message: - type: string - footer_message: - type: string - message_background_color: - type: string - message_font_color: - type: string - email_header_and_footer_enabled: - type: string - description: API_Entities_Appearance model - API_Entities_PlanLimit: - type: object - properties: - ci_pipeline_size: - type: integer - format: int32 - example: 0 - ci_active_jobs: - type: integer - format: int32 - example: 0 - ci_project_subscriptions: - type: integer - format: int32 - example: 2 - ci_pipeline_schedules: - type: integer - format: int32 - example: 10 - ci_needs_size_limit: - type: integer - format: int32 - example: 50 - ci_registered_group_runners: - type: integer - format: int32 - example: 1000 - ci_registered_project_runners: - type: integer - format: int32 - example: 1000 - conan_max_file_size: - type: integer - format: int32 - example: 3221225472 - enforcement_limit: - type: integer - format: int32 - example: 15000 - generic_packages_max_file_size: - type: integer - format: int32 - example: 5368709120 - helm_max_file_size: - type: integer - format: int32 - example: 5242880 - limits_history: - type: object - properties: {} - example: |- - {"enforcement_limit"=>[{"timestamp"=>1686909124, "user_id"=>1, "username"=>"x", "value"=>5}], - "notification_limit"=>[{"timestamp"=>1686909124, "user_id"=>2, "username"=>"y", "value"=>7}]} - maven_max_file_size: - type: integer - format: int32 - example: 3221225472 - notification_limit: - type: integer - format: int32 - example: 15000 - npm_max_file_size: - type: integer - format: int32 - example: 524288000 - nuget_max_file_size: - type: integer - format: int32 - example: 524288000 - pipeline_hierarchy_size: - type: integer - format: int32 - example: 1000 - pypi_max_file_size: - type: integer - format: int32 - example: 3221225472 - terraform_module_max_file_size: - type: integer - format: int32 - example: 1073741824 - storage_size_limit: - type: integer - format: int32 - example: 15000 - description: API_Entities_PlanLimit model - API_Entities_Metadata: - type: object - properties: - version: - type: string - example: 15.2-pre - revision: - type: string - example: c401a659d0c - kas: - type: object - properties: - enabled: - type: boolean - externalUrl: - type: string - example: grpc://gitlab.example.com:8150 - version: - type: string - example: 15.0.0 - enterprise: - type: boolean - description: API_Entities_Metadata model - securitySchemes: - ApiKeyAuth: - type: apiKey - in: header - name: Private-Token diff --git a/tests/Cases/OpenApi/Schema/examples/link-example.yaml b/tests/Cases/OpenApi/Schema/examples/link-example.yaml deleted file mode 100755 index ea90bdcf..00000000 --- a/tests/Cases/OpenApi/Schema/examples/link-example.yaml +++ /dev/null @@ -1,203 +0,0 @@ -openapi: 3.0.0 -info: - title: Link Example - version: 1.0.0 -paths: - /2.0/users/{username}: - get: - operationId: getUserByName - parameters: - - name: username - in: path - required: true - schema: - type: string - responses: - '200': - description: The User - content: - application/json: - schema: - $ref: '#/components/schemas/user' - links: - userRepositories: - $ref: '#/components/links/UserRepositories' - /2.0/repositories/{username}: - get: - operationId: getRepositoriesByOwner - parameters: - - name: username - in: path - required: true - schema: - type: string - responses: - '200': - description: repositories owned by the supplied user - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/repository' - links: - userRepository: - $ref: '#/components/links/UserRepository' - /2.0/repositories/{username}/{slug}: - get: - operationId: getRepository - parameters: - - name: username - in: path - required: true - schema: - type: string - - name: slug - in: path - required: true - schema: - type: string - responses: - '200': - description: The repository - content: - application/json: - schema: - $ref: '#/components/schemas/repository' - links: - repositoryPullRequests: - $ref: '#/components/links/RepositoryPullRequests' - /2.0/repositories/{username}/{slug}/pullrequests: - get: - operationId: getPullRequestsByRepository - parameters: - - name: username - in: path - required: true - schema: - type: string - - name: slug - in: path - required: true - schema: - type: string - - name: state - in: query - schema: - type: string - enum: - - open - - merged - - declined - responses: - '200': - description: an array of pull request objects - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/pullrequest' - /2.0/repositories/{username}/{slug}/pullrequests/{pid}: - get: - operationId: getPullRequestsById - parameters: - - name: username - in: path - required: true - schema: - type: string - - name: slug - in: path - required: true - schema: - type: string - - name: pid - in: path - required: true - schema: - type: string - responses: - '200': - description: a pull request object - content: - application/json: - schema: - $ref: '#/components/schemas/pullrequest' - links: - pullRequestMerge: - $ref: '#/components/links/PullRequestMerge' - /2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge: - post: - operationId: mergePullRequest - parameters: - - name: username - in: path - required: true - schema: - type: string - - name: slug - in: path - required: true - schema: - type: string - - name: pid - in: path - required: true - schema: - type: string - responses: - '204': - description: the PR was successfully merged -components: - links: - UserRepositories: - # returns array of '#/components/schemas/repository' - operationId: getRepositoriesByOwner - parameters: - username: $response.body#/username - UserRepository: - # returns '#/components/schemas/repository' - operationId: getRepository - parameters: - username: $response.body#/owner/username - slug: $response.body#/slug - RepositoryPullRequests: - # returns '#/components/schemas/pullrequest' - operationId: getPullRequestsByRepository - parameters: - username: $response.body#/owner/username - slug: $response.body#/slug - PullRequestMerge: - # executes /2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge - operationId: mergePullRequest - parameters: - username: $response.body#/author/username - slug: $response.body#/repository/slug - pid: $response.body#/id - schemas: - user: - type: object - properties: - username: - type: string - uuid: - type: string - repository: - type: object - properties: - slug: - type: string - owner: - $ref: '#/components/schemas/user' - pullrequest: - type: object - properties: - id: - type: integer - title: - type: string - repository: - $ref: '#/components/schemas/repository' - author: - $ref: '#/components/schemas/user' diff --git a/tests/Cases/OpenApi/Schema/examples/petstore-expanded.yaml b/tests/Cases/OpenApi/Schema/examples/petstore-expanded.yaml deleted file mode 100755 index 1eac2465..00000000 --- a/tests/Cases/OpenApi/Schema/examples/petstore-expanded.yaml +++ /dev/null @@ -1,156 +0,0 @@ -openapi: "3.0.0" -info: - version: 1.0.0 - title: Swagger Petstore - description: A sample API that uses a petstore as an example to demonstrate features in the OpenAPI 3.0 specification - termsOfService: http://swagger.io/terms/ - contact: - name: Swagger API Team - email: apiteam@swagger.io - url: http://swagger.io - license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html -servers: - - url: http://petstore.swagger.io/api -paths: - /pets: - get: - description: | - Returns all pets from the system that the user has access to - Nam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis, pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor, consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis libero sed lacinia. - - Sed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu condimentum ligula luctus nec. Phasellus semper velit eget aliquet faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio. Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi. Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem. Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien. - operationId: findPets - parameters: - - name: tags - in: query - description: tags to filter by - style: form - schema: - type: array - items: - type: string - - name: limit - in: query - description: maximum number of results to return - schema: - type: integer - format: int32 - responses: - '200': - description: pet response - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Pet' - default: - description: unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - post: - description: Creates a new pet in the store. Duplicates are allowed - operationId: addPet - requestBody: - description: Pet to add to the store - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/NewPet' - responses: - '200': - description: pet response - content: - application/json: - schema: - $ref: '#/components/schemas/Pet' - default: - description: unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - /pets/{id}: - get: - description: Returns a user based on a single ID, if the user does not have access to the pet - operationId: find pet by id - parameters: - - name: id - in: path - description: ID of pet to fetch - required: true - schema: - type: integer - format: int64 - responses: - '200': - description: pet response - content: - application/json: - schema: - $ref: '#/components/schemas/Pet' - default: - description: unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - delete: - description: deletes a single pet based on the ID supplied - operationId: deletePet - parameters: - - name: id - in: path - description: ID of pet to delete - required: true - schema: - type: integer - format: int64 - responses: - '204': - description: pet deleted - default: - description: unexpected error - content: - application/json: - schema: - $ref: '#/components/schemas/Error' -components: - schemas: - Pet: - allOf: - - $ref: '#/components/schemas/NewPet' - - type: object - required: - - id - properties: - id: - type: integer - format: int64 - - NewPet: - type: object - required: - - name - properties: - name: - type: string - tag: - type: string - - Error: - type: object - required: - - code - - message - properties: - code: - type: integer - format: int32 - message: - type: string diff --git a/tests/Cases/OpenApi/Schema/examples/petstore.yaml b/tests/Cases/OpenApi/Schema/examples/petstore.yaml deleted file mode 100755 index c7526a94..00000000 --- a/tests/Cases/OpenApi/Schema/examples/petstore.yaml +++ /dev/null @@ -1,110 +0,0 @@ -openapi: "3.0.0" -info: - version: 1.0.0 - title: Swagger Petstore - license: - name: MIT -servers: - - url: http://petstore.swagger.io/v1 -paths: - /pets: - get: - summary: List all pets - operationId: listPets - tags: - - pets - parameters: - - name: limit - in: query - description: How many items to return at one time (max 100) - schema: - type: integer - format: int32 - responses: - '200': - description: A paged array of pets - headers: - x-next: - description: A link to the next page of responses - schema: - type: string - content: - application/json: - schema: - $ref: "#/components/schemas/Pets" - default: - description: unexpected error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - post: - summary: Create a pet - operationId: createPets - tags: - - pets - responses: - '201': - description: Null response - default: - description: unexpected error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /pets/{petId}: - get: - summary: Info for a specific pet - operationId: showPetById - tags: - - pets - parameters: - - name: petId - in: path - required: true - description: The id of the pet to retrieve - schema: - type: string - responses: - '200': - description: Expected response to a valid request - content: - application/json: - schema: - $ref: "#/components/schemas/Pet" - default: - description: unexpected error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" -components: - schemas: - Pet: - type: object - required: - - id - - name - properties: - id: - type: integer - format: int64 - name: - type: string - tag: - type: string - Pets: - type: array - items: - $ref: "#/components/schemas/Pet" - Error: - type: object - required: - - code - - message - properties: - code: - type: integer - format: int32 - message: - type: string diff --git a/tests/Cases/OpenApi/Schema/examples/uspto.yaml b/tests/Cases/OpenApi/Schema/examples/uspto.yaml deleted file mode 100755 index 8e9b159f..00000000 --- a/tests/Cases/OpenApi/Schema/examples/uspto.yaml +++ /dev/null @@ -1,210 +0,0 @@ -openapi: 3.0.1 -servers: - - url: '{scheme}://developer.uspto.gov/ds-api' - variables: - scheme: - description: 'The Data Set API is accessible via https and http' - enum: - - 'https' - - 'http' - default: 'https' -info: - description: >- - The Data Set API (DSAPI) allows the public users to discover and search - USPTO exported data sets. This is a generic API that allows USPTO users to - make any CSV based data files searchable through API. With the help of GET - call, it returns the list of data fields that are searchable. With the help - of POST call, data can be fetched based on the filters on the field names. - Please note that POST call is used to search the actual data. The reason for - the POST call is that it allows users to specify any complex search criteria - without worry about the GET size limitations as well as encoding of the - input parameters. - version: 1.0.0 - title: USPTO Data Set API - contact: - name: Open Data Portal - url: 'https://developer.uspto.gov' - email: developer@uspto.gov -tags: - - name: metadata - description: Find out about the data sets - - name: search - description: Search a data set -paths: - /: - get: - tags: - - metadata - operationId: list-data-sets - summary: List available data sets - responses: - '200': - description: Returns a list of data sets - content: - application/json: - schema: - $ref: '#/components/schemas/dataSetList' - example: - { - "total": 2, - "apis": [ - { - "apiKey": "oa_citations", - "apiVersionNumber": "v1", - "apiUrl": "https://developer.uspto.gov/ds-api/oa_citations/v1/fields", - "apiDocumentationUrl": "https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/oa_citations.json" - }, - { - "apiKey": "cancer_moonshot", - "apiVersionNumber": "v1", - "apiUrl": "https://developer.uspto.gov/ds-api/cancer_moonshot/v1/fields", - "apiDocumentationUrl": "https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/cancer_moonshot.json" - } - ] - } - /{dataset}/{version}/fields: - get: - tags: - - metadata - summary: >- - Provides the general information about the API and the list of fields - that can be used to query the dataset. - description: >- - This GET API returns the list of all the searchable field names that are - in the oa_citations. Please see the 'fields' attribute which returns an - array of field names. Each field or a combination of fields can be - searched using the syntax options shown below. - operationId: list-searchable-fields - parameters: - - name: dataset - in: path - description: 'Name of the dataset.' - required: true - example: "oa_citations" - schema: - type: string - - name: version - in: path - description: Version of the dataset. - required: true - example: "v1" - schema: - type: string - responses: - '200': - description: >- - The dataset API for the given version is found and it is accessible - to consume. - content: - application/json: - schema: - type: string - '404': - description: >- - The combination of dataset name and version is not found in the - system or it is not published yet to be consumed by public. - content: - application/json: - schema: - type: string - /{dataset}/{version}/records: - post: - tags: - - search - summary: >- - Provides search capability for the data set with the given search - criteria. - description: >- - This API is based on Solr/Lucense Search. The data is indexed using - SOLR. This GET API returns the list of all the searchable field names - that are in the Solr Index. Please see the 'fields' attribute which - returns an array of field names. Each field or a combination of fields - can be searched using the Solr/Lucene Syntax. Please refer - https://lucene.apache.org/core/3_6_2/queryparsersyntax.html#Overview for - the query syntax. List of field names that are searchable can be - determined using above GET api. - operationId: perform-search - parameters: - - name: version - in: path - description: Version of the dataset. - required: true - schema: - type: string - default: v1 - - name: dataset - in: path - description: 'Name of the dataset. In this case, the default value is oa_citations' - required: true - schema: - type: string - default: oa_citations - responses: - '200': - description: successful operation - content: - application/json: - schema: - type: array - items: - type: object - additionalProperties: - type: object - '404': - description: No matching record found for the given criteria. - requestBody: - content: - application/x-www-form-urlencoded: - schema: - type: object - properties: - criteria: - description: >- - Uses Lucene Query Syntax in the format of - propertyName:value, propertyName:[num1 TO num2] and date - range format: propertyName:[yyyyMMdd TO yyyyMMdd]. In the - response please see the 'docs' element which has the list of - record objects. Each record structure would consist of all - the fields and their corresponding values. - type: string - default: '*:*' - start: - description: Starting record number. Default value is 0. - type: integer - default: 0 - rows: - description: >- - Specify number of rows to be returned. If you run the search - with default values, in the response you will see 'numFound' - attribute which will tell the number of records available in - the dataset. - type: integer - default: 100 - required: - - criteria -components: - schemas: - dataSetList: - type: object - properties: - total: - type: integer - apis: - type: array - items: - type: object - properties: - apiKey: - type: string - description: To be used as a dataset parameter value - apiVersionNumber: - type: string - description: To be used as a version parameter value - apiUrl: - type: string - format: uriref - description: "The URL describing the dataset's fields" - apiDocumentationUrl: - type: string - format: uriref - description: A URL to the API console for each API diff --git a/tests/Cases/OpenApi/SchemaType/BaseSchemaTypeTest.php b/tests/Cases/OpenApi/SchemaType/BaseSchemaTypeTest.php index 8ca25176..9ab990fc 100644 --- a/tests/Cases/OpenApi/SchemaType/BaseSchemaTypeTest.php +++ b/tests/Cases/OpenApi/SchemaType/BaseSchemaTypeTest.php @@ -5,9 +5,9 @@ require_once __DIR__ . '/../../../bootstrap.php'; use Apitte\Core\Schema\EndpointParameter; -use Apitte\OpenApi\Schema\Schema; use Apitte\OpenApi\SchemaType\BaseSchemaType; use Apitte\OpenApi\SchemaType\ISchemaType; +use Contributte\OpenApi\Schema\Schema; use Tester\Assert; use Tester\TestCase;