Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
f894d29
WIP
tischsoic Jul 1, 2024
46988e4
improvements, cleanup etc
tischsoic Jul 1, 2024
454fb78
Remove unnecessary controller
tischsoic Jul 2, 2024
7dcc833
Read schemas from yaml files
tischsoic Jul 17, 2024
9569755
ci workflow
tischsoic Jul 19, 2024
a6c5307
Adjust language openapi data
tischsoic Aug 13, 2024
9a7624c
adjust schemas and annotations
tischsoic Aug 27, 2024
acbe7e1
Composer update
barw4 Feb 25, 2025
2de8715
WIP
tischsoic Jul 1, 2024
44ca092
improvements, cleanup etc
tischsoic Jul 1, 2024
2a730da
Remove unnecessary controller
tischsoic Jul 2, 2024
872fb85
fix doc route
tischsoic Jul 4, 2024
abf3cee
Read schemas from yaml files
tischsoic Jul 17, 2024
d3efe0b
IBX-8778: Introduce API Platform attributes with schemas
tischsoic Aug 27, 2024
8e042e6
Missing attribues, & Introduce x-ibexa-example-file
tischsoic Sep 4, 2024
86fb75c
fixes in Location /content/locations/{path}/children
tischsoic Sep 14, 2024
3c1cc45
split controllers - one action per controller: Bookmark,Content,Contn…
tischsoic Sep 16, 2024
0bbc363
split controllers - one action per controller: ObjectState without se…
tischsoic Sep 16, 2024
72dacb1
split controllers - one action per controller: User without services
tischsoic Sep 17, 2024
dd8f919
split controllers - one action per controller: Role without services
tischsoic Sep 17, 2024
b928532
Add Head Api Platform operation
tischsoic Sep 17, 2024
ba40a9d
Fix Head operation import in BookmarkIsBookmarkedController
tischsoic Sep 17, 2024
a9e1a25
split controllers - one action per controller: Language without services
tischsoic Sep 17, 2024
480d4a1
split controllers - one action per controller: Location without services
tischsoic Sep 17, 2024
4f0e722
split controllers - one action per controller: Section without services
tischsoic Sep 17, 2024
308911c
split controllers - one action per controller: Session without services
tischsoic Sep 17, 2024
1aa05c3
add missing Api Platform attributes in Location/ and ObjectState/
tischsoic Sep 17, 2024
618b449
split controllers - one action per controller: Trash without services
tischsoic Sep 17, 2024
3c2c53f
split controllers - one action per controller: URLAlias without services
tischsoic Sep 17, 2024
eb03daf
split controllers - one action per controller: URLWildcard without se…
tischsoic Sep 17, 2024
da5a856
delete old controllers which methods were split
tischsoic Sep 17, 2024
8fd3538
fix-cs after controllers splitting
tischsoic Sep 18, 2024
54a4ab8
Role policy attributes fixes
tischsoic Sep 19, 2024
0c92b46
update services config
tischsoic Sep 19, 2024
5346724
Move schemas to common folder to separate them from examples
tischsoic Sep 26, 2024
920c919
Rollback
barw4 Feb 28, 2025
db405e2
Rector
barw4 Feb 28, 2025
b74d170
CS
barw4 Feb 28, 2025
c03d915
PHPStan
barw4 Mar 3, 2025
e909007
PHPStan
barw4 Mar 3, 2025
43944bc
Integration test fixup
barw4 Mar 4, 2025
af22da2
Integration test fixup
barw4 Mar 4, 2025
746176d
Fix services
barw4 Mar 4, 2025
590f110
Fixups
barw4 Mar 4, 2025
e014e35
Fixup
barw4 Mar 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
760 changes: 2 additions & 758 deletions phpstan-baseline.neon

Large diffs are not rendered by default.

185 changes: 185 additions & 0 deletions src/bundle/ApiPlatform/Head.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
<?php

/**
* @copyright Copyright (C) Ibexa AS. All rights reserved.
* @license For full copyright and license information view LICENSE file distributed with this source code.
*/
declare(strict_types=1);

namespace Ibexa\Bundle\Rest\ApiPlatform;

use ApiPlatform\Metadata\HttpOperation;
use ApiPlatform\Metadata\Parameters;
use ApiPlatform\OpenApi\Attributes\Webhook;
use ApiPlatform\OpenApi\Model\Operation as OpenApiOperation;
use ApiPlatform\State\OptionsInterface;

#[\Attribute(\Attribute::TARGET_CLASS | \Attribute::IS_REPEATABLE)]
final class Head extends HttpOperation
{
/**
* @param array<string, mixed>|null $defaults
* @param array<string, mixed>|null $denormalizationContext
* @param array<string, mixed>|null $exceptionToStatus
* @param array<string, mixed> $extraProperties
* @param array<string, mixed>|null $hydraContext
* @param array<string, mixed>|null $mercure
* @param array<string, mixed>|null $normalizationContext
* @param array<string, mixed>|null $options
* @param array<string, mixed>|null $requirements
* @param array<string, mixed>|null $schemes
* @param array<string, mixed>|null $validationContext
*/
public function __construct(
?string $uriTemplate = null,
?array $types = null,
$formats = null,
$inputFormats = null,
$outputFormats = null,
$uriVariables = null,
?string $routePrefix = null,
?string $routeName = null,
?array $defaults = null,
?array $requirements = null,
?array $options = null,
?bool $stateless = null,
?string $sunset = null,
?string $acceptPatch = null,
$status = null,
?string $host = null,
?array $schemes = null,
?string $condition = null,
?string $controller = null,
?array $headers = null,
?array $cacheHeaders = null,
?array $paginationViaCursor = null,
?array $hydraContext = null,
bool|OpenApiOperation|Webhook|null $openapi = null,
?array $exceptionToStatus = null,
?bool $queryParameterValidationEnabled = null,
?array $links = null,
?string $shortName = null,
?string $class = null,
?bool $paginationEnabled = null,
?string $paginationType = null,
?int $paginationItemsPerPage = null,
?int $paginationMaximumItemsPerPage = null,
?bool $paginationPartial = null,
?bool $paginationClientEnabled = null,
?bool $paginationClientItemsPerPage = null,
?bool $paginationClientPartial = null,
?bool $paginationFetchJoinCollection = null,
?bool $paginationUseOutputWalkers = null,
?array $order = null,
?string $description = null,
?array $normalizationContext = null,
?array $denormalizationContext = null,
?bool $collectDenormalizationErrors = null,
string|\Stringable|null $security = null,
?string $securityMessage = null,
string|\Stringable|null $securityPostDenormalize = null,
?string $securityPostDenormalizeMessage = null,
string|\Stringable|null $securityPostValidation = null,
?string $securityPostValidationMessage = null,
?string $deprecationReason = null,
?array $filters = null,
?array $validationContext = null,
$input = null,
$output = null,
$mercure = null,
$messenger = null,
?bool $elasticsearch = null,
?int $urlGenerationStrategy = null,
?bool $read = null,
?bool $deserialize = null,
?bool $validate = null,
?bool $write = null,
?bool $serialize = null,
?bool $fetchPartial = null,
?bool $forceEager = null,
?int $priority = null,
?string $name = null,
$provider = null,
$processor = null,
?OptionsInterface $stateOptions = null,
array|Parameters|null $parameters = null,
array $extraProperties = [],
) {
parent::__construct(
method: self::METHOD_HEAD,
uriTemplate: $uriTemplate,
types: $types,
formats: $formats,
inputFormats: $inputFormats,
outputFormats: $outputFormats,
uriVariables: $uriVariables,
routePrefix: $routePrefix,
routeName: $routeName,
defaults: $defaults,
requirements: $requirements,
options: $options,
stateless: $stateless,
sunset: $sunset,
acceptPatch: $acceptPatch,
status: $status,
host: $host,
schemes: $schemes,
condition: $condition,
controller: $controller,
headers: $headers,
cacheHeaders: $cacheHeaders,
paginationViaCursor: $paginationViaCursor,
hydraContext: $hydraContext,
openapi: $openapi,
exceptionToStatus: $exceptionToStatus,
queryParameterValidationEnabled: $queryParameterValidationEnabled,
links: $links,
shortName: $shortName,
class: $class,
paginationEnabled: $paginationEnabled,
paginationType: $paginationType,
paginationItemsPerPage: $paginationItemsPerPage,
paginationMaximumItemsPerPage: $paginationMaximumItemsPerPage,
paginationPartial: $paginationPartial,
paginationClientEnabled: $paginationClientEnabled,
paginationClientItemsPerPage: $paginationClientItemsPerPage,
paginationClientPartial: $paginationClientPartial,
paginationFetchJoinCollection: $paginationFetchJoinCollection,
paginationUseOutputWalkers: $paginationUseOutputWalkers,
order: $order,
description: $description,
normalizationContext: $normalizationContext,
denormalizationContext: $denormalizationContext,
collectDenormalizationErrors: $collectDenormalizationErrors,
security: $security,
securityMessage: $securityMessage,
securityPostDenormalize: $securityPostDenormalize,
securityPostDenormalizeMessage: $securityPostDenormalizeMessage,
securityPostValidation: $securityPostValidation,
securityPostValidationMessage: $securityPostValidationMessage,
deprecationReason: $deprecationReason,
filters: $filters,
validationContext: $validationContext,
input: $input,
output: $output,
mercure: $mercure,
messenger: $messenger,
elasticsearch: $elasticsearch,
urlGenerationStrategy: $urlGenerationStrategy,
read: $read,
deserialize: $deserialize,
validate: $validate,
write: $write,
serialize: $serialize,
fetchPartial: $fetchPartial,
forceEager: $forceEager,
priority: $priority,
name: $name,
provider: $provider,
processor: $processor,
stateOptions: $stateOptions,
parameters: $parameters,
extraProperties: $extraProperties,
);
}
}
11 changes: 11 additions & 0 deletions src/bundle/Resources/api_platform/base.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
schemas:
BaseObject:
type: object
required:
- _media-type
- _href
properties:
_media-type:
type: string
_href:
type: string
93 changes: 93 additions & 0 deletions src/bundle/Resources/api_platform/examples/GET/Root.json.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
{
"Root": {
"_media-type": "application/vnd.ibexa.api.Root+json",
"content": {
"_href": "/api/ibexa/v2/content/objects",
"_media-type": ""
},
"contentByRemoteId": {
"_href": "/api/ibexa/v2/content/objects{?remoteId}",
"_media-type": ""
},
"contentTypeByIdentifier": {
"_href": "/api/ibexa/v2/content/types{?identifier}",
"_media-type": ""
},
"contentTypeGroupByIdentifier": {
"_href": "/api/ibexa/v2/content/typegroups{?identifier}",
"_media-type": ""
},
"contentTypeGroups": {
"_href": "/api/ibexa/v2/content/typegroups",
"_media-type": "application/vnd.ibexa.api.ContentTypeGroupList+json"
},
"contentTypes": {
"_href": "/api/ibexa/v2/content/types",
"_media-type": "application/vnd.ibexa.api.ContentTypeInfoList+json"
},
"createSession": {
"_href": "/api/ibexa/v2/user/sessions",
"_media-type": "application/vnd.ibexa.api.UserSession+json"
},
"globalUrlAliases": {
"_href": "/api/ibexa/v2/content/urlaliases",
"_media-type": "application/vnd.ibexa.api.UrlAliasRefList+json"
},
"locationByPath": {
"_href": "/api/ibexa/v2/content/locations{?locationPath}",
"_media-type": ""
},
"locationByRemoteId": {
"_href": "/api/ibexa/v2/content/locations{?remoteId}",
"_media-type": ""
},
"objectStateGroups": {
"_href": "/api/ibexa/v2/content/objectstategroups",
"_media-type": "application/vnd.ibexa.api.ObjectStateGroupList+json"
},
"objectStates": {
"_href": "/api/ibexa/v2/content/objectstategroups/{objectStateGroupId}/objectstates",
"_media-type": "application/vnd.ibexa.api.ObjectStateList+json"
},
"roles": {
"_href": "/api/ibexa/v2/user/roles",
"_media-type": "application/vnd.ibexa.api.RoleList+json"
},
"rootLocation": {
"_href": "/api/ibexa/v2/content/locations/1/2",
"_media-type": "application/vnd.ibexa.api.Location+json"
},
"rootMediaFolder": {
"_href": "/api/ibexa/v2/content/locations/1/43",
"_media-type": "application/vnd.ibexa.api.Location+json"
},
"rootUserGroup": {
"_href": "/api/ibexa/v2/user/groups/1/5",
"_media-type": "application/vnd.ibexa.api.UserGroup+json"
},
"sections": {
"_href": "/api/ibexa/v2/content/sections",
"_media-type": "application/vnd.ibexa.api.SectionList+json"
},
"trash": {
"_href": "/api/ibexa/v2/content/trash",
"_media-type": "application/vnd.ibexa.api.Trash+json"
},
"urlWildcards": {
"_href": "/api/ibexa/v2/content/urlwildcards",
"_media-type": "application/vnd.ibexa.api.UrlWildcardList+json"
},
"users": {
"_href": "/api/ibexa/v2/user/users",
"_media-type": "application/vnd.ibexa.api.UserRefList+json"
},
"views": {
"_href": "/api/ibexa/v2/views",
"_media-type": "application/vnd.ibexa.api.RefList+json"
},
"refreshSession": {
"_media-type": "application\/vnd.ibexa.api.UserSession+json",
"_href": "\/api\/ezp\/v2\/user\/sessions\/{sessionId}\/refresh"
}
}
}
25 changes: 25 additions & 0 deletions src/bundle/Resources/api_platform/examples/GET/Root.xml.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Root media-type="application/vnd.ibexa.api.Root+xml">
<content media-type="" href="/api/ibexa/v2/content/objects"/>
<contentByRemoteId media-type="" href="/api/ibexa/v2/content/objects{?remoteId}"/>
<contentTypes media-type="application/vnd.ibexa.api.ContentTypeInfoList+xml" href="/api/ibexa/v2/content/types"/>
<contentTypeByIdentifier media-type="" href="/api/ibexa/v2/content/types{?identifier}"/>
<contentTypeGroups media-type="application/vnd.ibexa.api.ContentTypeGroupList+xml" href="/api/ibexa/v2/content/typegroups"/>
<contentTypeGroupByIdentifier media-type="" href="/api/ibexa/v2/content/typegroups{?identifier}"/>
<users media-type="application/vnd.ibexa.api.UserRefList+xml" href="/api/ibexa/v2/user/users"/>
<roles media-type="application/vnd.ibexa.api.RoleList+xml" href="/api/ibexa/v2/user/roles"/>
<rootLocation media-type="application/vnd.ibexa.api.Location+xml" href="/api/ibexa/v2/content/locations/1/2"/>
<rootUserGroup media-type="application/vnd.ibexa.api.UserGroup+xml" href="/api/ibexa/v2/user/groups/1/5"/>
<rootMediaFolder media-type="application/vnd.ibexa.api.Location+xml" href="/api/ibexa/v2/content/locations/1/43"/>
<locationByRemoteId media-type="" href="/api/ibexa/v2/content/locations{?remoteId}"/>
<locationByPath media-type="" href="/api/ibexa/v2/content/locations{?locationPath}"/>
<trash media-type="application/vnd.ibexa.api.Trash+xml" href="/api/ibexa/v2/content/trash"/>
<sections media-type="application/vnd.ibexa.api.SectionList+xml" href="/api/ibexa/v2/content/sections"/>
<views media-type="application/vnd.ibexa.api.RefList+xml" href="/api/ibexa/v2/views"/>
<objectStateGroups media-type="application/vnd.ibexa.api.ObjectStateGroupList+xml" href="/api/ibexa/v2/content/objectstategroups"/>
<objectStates media-type="application/vnd.ibexa.api.ObjectStateList+xml" href="/api/ibexa/v2/content/objectstategroups/{objectStateGroupId}/objectstates"/>
<globalUrlAliases media-type="application/vnd.ibexa.api.UrlAliasRefList+xml" href="/api/ibexa/v2/content/urlaliases"/>
<urlWildcards media-type="application/vnd.ibexa.api.UrlWildcardList+xml" href="/api/ibexa/v2/content/urlwildcards"/>
<createSession media-type="application/vnd.ibexa.api.UserSession+xml" href="/api/ibexa/v2/user/sessions"/>
<refreshSession media-type="application/vnd.ibexa.api.UserSession+xml" href="/api/ibexa/v2/user/sessions/{sessionId}/refresh"/>
</Root>
Loading
Loading