├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── codecov.yml
├── composer.json
├── phpunit.baseline.xml
├── pmu.baseline
├── src
├── ApiResource
│ └── Error.php
├── Doctrine
│ ├── Common
│ │ ├── CollectionPaginator.php
│ │ ├── Filter
│ │ │ ├── BackedEnumFilterTrait.php
│ │ │ ├── BooleanFilterTrait.php
│ │ │ ├── DateFilterInterface.php
│ │ │ ├── DateFilterTrait.php
│ │ │ ├── ExistsFilterInterface.php
│ │ │ ├── ExistsFilterTrait.php
│ │ │ ├── ManagerRegistryAwareInterface.php
│ │ │ ├── NumericFilterTrait.php
│ │ │ ├── OrderFilterInterface.php
│ │ │ ├── OrderFilterTrait.php
│ │ │ ├── PropertyAwareFilterInterface.php
│ │ │ ├── PropertyPlaceholderOpenApiParameterTrait.php
│ │ │ ├── RangeFilterInterface.php
│ │ │ ├── RangeFilterTrait.php
│ │ │ ├── SearchFilterInterface.php
│ │ │ └── SearchFilterTrait.php
│ │ ├── LICENSE
│ │ ├── Messenger
│ │ │ └── DispatchTrait.php
│ │ ├── ParameterValueExtractorTrait.php
│ │ ├── PropertyHelperTrait.php
│ │ ├── README.md
│ │ ├── SelectablePaginator.php
│ │ ├── SelectablePartialPaginator.php
│ │ ├── State
│ │ │ ├── LinksHandlerLocatorTrait.php
│ │ │ ├── LinksHandlerTrait.php
│ │ │ ├── Options.php
│ │ │ ├── PersistProcessor.php
│ │ │ └── RemoveProcessor.php
│ │ └── composer.json
│ ├── Odm
│ │ ├── Extension
│ │ │ ├── AggregationCollectionExtensionInterface.php
│ │ │ ├── AggregationItemExtensionInterface.php
│ │ │ ├── AggregationResultCollectionExtensionInterface.php
│ │ │ ├── AggregationResultItemExtensionInterface.php
│ │ │ ├── FilterExtension.php
│ │ │ ├── OrderExtension.php
│ │ │ ├── PaginationExtension.php
│ │ │ └── ParameterExtension.php
│ │ ├── Filter
│ │ │ ├── AbstractFilter.php
│ │ │ ├── BooleanFilter.php
│ │ │ ├── DateFilter.php
│ │ │ ├── ExistsFilter.php
│ │ │ ├── FilterInterface.php
│ │ │ ├── NumericFilter.php
│ │ │ ├── OrderFilter.php
│ │ │ ├── RangeFilter.php
│ │ │ └── SearchFilter.php
│ │ ├── LICENSE
│ │ ├── Metadata
│ │ │ ├── Property
│ │ │ │ └── DoctrineMongoDbOdmPropertyMetadataFactory.php
│ │ │ └── Resource
│ │ │ │ └── DoctrineMongoDbOdmResourceCollectionMetadataFactory.php
│ │ ├── Paginator.php
│ │ ├── PropertyHelperTrait.php
│ │ ├── PropertyInfo
│ │ │ └── DoctrineExtractor.php
│ │ ├── README.md
│ │ ├── State
│ │ │ ├── CollectionProvider.php
│ │ │ ├── ItemProvider.php
│ │ │ ├── LinksHandler.php
│ │ │ ├── LinksHandlerInterface.php
│ │ │ ├── LinksHandlerTrait.php
│ │ │ └── Options.php
│ │ └── composer.json
│ └── Orm
│ │ ├── AbstractPaginator.php
│ │ ├── Extension
│ │ ├── DoctrinePaginatorFactory.php
│ │ ├── EagerLoadingExtension.php
│ │ ├── FilterEagerLoadingExtension.php
│ │ ├── FilterExtension.php
│ │ ├── OrderExtension.php
│ │ ├── PaginationExtension.php
│ │ ├── ParameterExtension.php
│ │ ├── QueryCollectionExtensionInterface.php
│ │ ├── QueryItemExtensionInterface.php
│ │ ├── QueryResultCollectionExtensionInterface.php
│ │ └── QueryResultItemExtensionInterface.php
│ │ ├── Filter
│ │ ├── AbstractFilter.php
│ │ ├── BackedEnumFilter.php
│ │ ├── BooleanFilter.php
│ │ ├── DateFilter.php
│ │ ├── ExistsFilter.php
│ │ ├── FilterInterface.php
│ │ ├── NumericFilter.php
│ │ ├── OrderFilter.php
│ │ ├── RangeFilter.php
│ │ └── SearchFilter.php
│ │ ├── LICENSE
│ │ ├── Metadata
│ │ ├── Property
│ │ │ └── DoctrineOrmPropertyMetadataFactory.php
│ │ └── Resource
│ │ │ ├── DoctrineOrmLinkFactory.php
│ │ │ └── DoctrineOrmResourceCollectionMetadataFactory.php
│ │ ├── Paginator.php
│ │ ├── PropertyHelperTrait.php
│ │ ├── QueryAwareInterface.php
│ │ ├── README.md
│ │ ├── State
│ │ ├── CollectionProvider.php
│ │ ├── ItemProvider.php
│ │ ├── LinksHandler.php
│ │ ├── LinksHandlerInterface.php
│ │ ├── LinksHandlerTrait.php
│ │ └── Options.php
│ │ ├── Util
│ │ ├── QueryBuilderHelper.php
│ │ ├── QueryChecker.php
│ │ ├── QueryNameGenerator.php
│ │ └── QueryNameGeneratorInterface.php
│ │ └── composer.json
├── Documentation
│ ├── Action
│ │ ├── DocumentationAction.php
│ │ └── EntrypointAction.php
│ ├── Documentation.php
│ ├── DocumentationInterface.php
│ ├── Entrypoint.php
│ ├── LICENSE
│ ├── README.md
│ └── composer.json
├── Elasticsearch
│ ├── Exception
│ │ ├── ExceptionInterface.php
│ │ ├── IndexNotFoundException.php
│ │ └── NonUniqueIdentifierException.php
│ ├── Extension
│ │ ├── AbstractFilterExtension.php
│ │ ├── ConstantScoreFilterExtension.php
│ │ ├── RequestBodySearchCollectionExtensionInterface.php
│ │ ├── SortExtension.php
│ │ └── SortFilterExtension.php
│ ├── Filter
│ │ ├── AbstractFilter.php
│ │ ├── AbstractSearchFilter.php
│ │ ├── ConstantScoreFilterInterface.php
│ │ ├── FilterInterface.php
│ │ ├── MatchFilter.php
│ │ ├── OrderFilter.php
│ │ ├── SortFilterInterface.php
│ │ └── TermFilter.php
│ ├── LICENSE
│ ├── Metadata
│ │ └── Resource
│ │ │ └── Factory
│ │ │ └── ElasticsearchProviderResourceMetadataCollectionFactory.php
│ ├── Paginator.php
│ ├── README.md
│ ├── Serializer
│ │ ├── DocumentNormalizer.php
│ │ ├── ItemNormalizer.php
│ │ └── NameConverter
│ │ │ └── InnerFieldsNameConverter.php
│ ├── State
│ │ ├── CollectionProvider.php
│ │ ├── ItemProvider.php
│ │ └── Options.php
│ ├── Util
│ │ └── FieldDatatypeTrait.php
│ └── composer.json
├── GraphQl
│ ├── Action
│ │ ├── EntrypointAction.php
│ │ ├── GraphQlPlaygroundAction.php
│ │ └── GraphiQlAction.php
│ ├── Error
│ │ ├── ErrorHandler.php
│ │ └── ErrorHandlerInterface.php
│ ├── Exception
│ │ └── InvalidTypeException.php
│ ├── Executor.php
│ ├── ExecutorInterface.php
│ ├── LICENSE
│ ├── Metadata
│ │ └── RuntimeOperationMetadataFactory.php
│ ├── README.md
│ ├── Resolver
│ │ ├── Factory
│ │ │ ├── ResolverFactory.php
│ │ │ └── ResolverFactoryInterface.php
│ │ ├── MutationResolverInterface.php
│ │ ├── QueryCollectionResolverInterface.php
│ │ ├── QueryItemResolverInterface.php
│ │ ├── ResourceFieldResolver.php
│ │ └── Util
│ │ │ └── IdentifierTrait.php
│ ├── Serializer
│ │ ├── Exception
│ │ │ ├── ErrorNormalizer.php
│ │ │ ├── HttpExceptionNormalizer.php
│ │ │ ├── RuntimeExceptionNormalizer.php
│ │ │ └── ValidationExceptionNormalizer.php
│ │ ├── ItemNormalizer.php
│ │ ├── ObjectNormalizer.php
│ │ ├── SerializerContextBuilder.php
│ │ └── SerializerContextBuilderInterface.php
│ ├── State
│ │ ├── Processor
│ │ │ ├── NormalizeProcessor.php
│ │ │ └── SubscriptionProcessor.php
│ │ └── Provider
│ │ │ ├── DenormalizeProvider.php
│ │ │ ├── NoopProvider.php
│ │ │ ├── ReadProvider.php
│ │ │ └── ResolverProvider.php
│ ├── Subscription
│ │ ├── MercureSubscriptionIriGenerator.php
│ │ ├── MercureSubscriptionIriGeneratorInterface.php
│ │ ├── OperationAwareSubscriptionManagerInterface.php
│ │ ├── SubscriptionIdentifierGenerator.php
│ │ ├── SubscriptionIdentifierGeneratorInterface.php
│ │ ├── SubscriptionManager.php
│ │ └── SubscriptionManagerInterface.php
│ ├── Type
│ │ ├── ContextAwareTypeBuilderInterface.php
│ │ ├── Definition
│ │ │ ├── IterableType.php
│ │ │ ├── TypeInterface.php
│ │ │ └── UploadType.php
│ │ ├── FieldsBuilder.php
│ │ ├── FieldsBuilderEnumInterface.php
│ │ ├── SchemaBuilder.php
│ │ ├── SchemaBuilderInterface.php
│ │ ├── TypeBuilder.php
│ │ ├── TypeConverter.php
│ │ ├── TypeConverterInterface.php
│ │ ├── TypeNotFoundException.php
│ │ ├── TypesContainer.php
│ │ ├── TypesContainerInterface.php
│ │ ├── TypesFactory.php
│ │ └── TypesFactoryInterface.php
│ ├── Util
│ │ └── ArrayTrait.php
│ └── composer.json
├── Hal
│ ├── JsonSchema
│ │ └── SchemaFactory.php
│ ├── README.md
│ ├── Serializer
│ │ ├── CollectionNormalizer.php
│ │ ├── EntrypointNormalizer.php
│ │ ├── ItemNormalizer.php
│ │ └── ObjectNormalizer.php
│ └── composer.json
├── HttpCache
│ ├── LICENSE
│ ├── PurgerInterface.php
│ ├── README.md
│ ├── SouinPurger.php
│ ├── State
│ │ ├── AddHeadersProcessor.php
│ │ └── AddTagsProcessor.php
│ ├── SurrogateKeysPurger.php
│ ├── VarnishPurger.php
│ ├── VarnishXKeyPurger.php
│ └── composer.json
├── Hydra
│ ├── JsonSchema
│ │ └── SchemaFactory.php
│ ├── LICENSE
│ ├── README.md
│ ├── Serializer
│ │ ├── CollectionFiltersNormalizer.php
│ │ ├── CollectionNormalizer.php
│ │ ├── ConstraintViolationListNormalizer.php
│ │ ├── DocumentationNormalizer.php
│ │ ├── EntrypointNormalizer.php
│ │ ├── HydraPrefixNameConverter.php
│ │ └── PartialCollectionViewNormalizer.php
│ ├── State
│ │ └── HydraLinkProcessor.php
│ └── composer.json
├── JsonApi
│ ├── Filter
│ │ ├── SparseFieldset.php
│ │ └── SparseFieldsetParameterProvider.php
│ ├── JsonSchema
│ │ └── SchemaFactory.php
│ ├── README.md
│ ├── Serializer
│ │ ├── CollectionNormalizer.php
│ │ ├── ConstraintViolationListNormalizer.php
│ │ ├── EntrypointNormalizer.php
│ │ ├── ErrorNormalizer.php
│ │ ├── ErrorNormalizerTrait.php
│ │ ├── ItemNormalizer.php
│ │ ├── ObjectNormalizer.php
│ │ └── ReservedAttributeNameConverter.php
│ ├── State
│ │ └── JsonApiProvider.php
│ └── composer.json
├── JsonLd
│ ├── Action
│ │ └── ContextAction.php
│ ├── AnonymousContextBuilderInterface.php
│ ├── ContextBuilder.php
│ ├── ContextBuilderInterface.php
│ ├── HydraContext.php
│ ├── README.md
│ ├── Serializer
│ │ ├── ErrorNormalizer.php
│ │ ├── HydraPrefixTrait.php
│ │ ├── ItemNormalizer.php
│ │ ├── JsonLdContextTrait.php
│ │ └── ObjectNormalizer.php
│ └── composer.json
├── JsonSchema
│ ├── BackwardCompatibleSchemaFactory.php
│ ├── Command
│ │ └── JsonSchemaGenerateCommand.php
│ ├── DefinitionNameFactory.php
│ ├── DefinitionNameFactoryInterface.php
│ ├── LICENSE
│ ├── Metadata
│ │ └── Property
│ │ │ └── Factory
│ │ │ └── SchemaPropertyMetadataFactory.php
│ ├── README.md
│ ├── ResourceMetadataTrait.php
│ ├── Schema.php
│ ├── SchemaFactory.php
│ ├── SchemaFactoryAwareInterface.php
│ ├── SchemaFactoryInterface.php
│ ├── SchemaUriPrefixTrait.php
│ └── composer.json
├── Laravel
│ ├── ApiPlatformDeferredProvider.php
│ ├── ApiPlatformMiddleware.php
│ ├── ApiPlatformProvider.php
│ ├── ApiResource
│ │ ├── Error.php
│ │ └── ValidationError.php
│ ├── CONTRIBUTING.md
│ ├── Console
│ │ ├── InstallCommand.php
│ │ └── Maker
│ │ │ ├── AbstractMakeStateCommand.php
│ │ │ ├── MakeStateProcessorCommand.php
│ │ │ ├── MakeStateProviderCommand.php
│ │ │ ├── Resources
│ │ │ └── skeleton
│ │ │ │ ├── StateProcessor.php.tpl
│ │ │ │ └── StateProvider.php.tpl
│ │ │ └── Utils
│ │ │ ├── AppServiceProviderTagger.php
│ │ │ ├── StateTemplateGenerator.php
│ │ │ ├── StateTypeEnum.php
│ │ │ └── SuccessMessageTrait.php
│ ├── Controller
│ │ ├── ApiPlatformController.php
│ │ ├── DocumentationController.php
│ │ └── EntrypointController.php
│ ├── Eloquent
│ │ ├── Extension
│ │ │ ├── FilterQueryExtension.php
│ │ │ └── QueryExtensionInterface.php
│ │ ├── Filter
│ │ │ ├── BooleanFilter.php
│ │ │ ├── DateFilter.php
│ │ │ ├── EndSearchFilter.php
│ │ │ ├── EqualsFilter.php
│ │ │ ├── FilterInterface.php
│ │ │ ├── JsonApi
│ │ │ │ ├── SortFilter.php
│ │ │ │ └── SortFilterParameterProvider.php
│ │ │ ├── OrFilter.php
│ │ │ ├── OrderFilter.php
│ │ │ ├── PartialSearchFilter.php
│ │ │ ├── QueryPropertyTrait.php
│ │ │ ├── RangeFilter.php
│ │ │ └── StartSearchFilter.php
│ │ ├── Metadata
│ │ │ ├── Factory
│ │ │ │ ├── Property
│ │ │ │ │ ├── EloquentAttributePropertyMetadataFactory.php
│ │ │ │ │ ├── EloquentPropertyMetadataFactory.php
│ │ │ │ │ └── EloquentPropertyNameCollectionMetadataFactory.php
│ │ │ │ └── Resource
│ │ │ │ │ └── EloquentResourceCollectionMetadataFactory.php
│ │ │ ├── IdentifiersExtractor.php
│ │ │ ├── ModelMetadata.php
│ │ │ └── ResourceClassResolver.php
│ │ ├── Paginator.php
│ │ ├── PartialPaginator.php
│ │ ├── PropertyAccess
│ │ │ └── PropertyAccessor.php
│ │ ├── Serializer
│ │ │ └── SerializerContextBuilder.php
│ │ └── State
│ │ │ ├── CollectionProvider.php
│ │ │ ├── ItemProvider.php
│ │ │ ├── LinksHandler.php
│ │ │ ├── LinksHandlerInterface.php
│ │ │ ├── LinksHandlerLocatorTrait.php
│ │ │ ├── Options.php
│ │ │ ├── PersistProcessor.php
│ │ │ └── RemoveProcessor.php
│ ├── Exception
│ │ └── ErrorHandler.php
│ ├── GraphQl
│ │ └── Controller
│ │ │ ├── EntrypointController.php
│ │ │ └── GraphiQlController.php
│ ├── JsonApi
│ │ └── State
│ │ │ └── JsonApiProvider.php
│ ├── LICENSE
│ ├── Metadata
│ │ ├── CachePropertyMetadataFactory.php
│ │ ├── CachePropertyNameCollectionMetadataFactory.php
│ │ ├── CacheResourceCollectionMetadataFactory.php
│ │ └── ParameterValidationResourceMetadataCollectionFactory.php
│ ├── README.md
│ ├── Routing
│ │ ├── IriConverter.php
│ │ ├── Router.php
│ │ └── SkolemIriConverter.php
│ ├── Security
│ │ └── ResourceAccessChecker.php
│ ├── ServiceLocator.php
│ ├── State
│ │ ├── AccessCheckerProvider.php
│ │ ├── ParameterValidatorProvider.php
│ │ ├── SwaggerUiProcessor.php
│ │ ├── SwaggerUiProvider.php
│ │ ├── ValidateProvider.php
│ │ └── ValidationErrorTrait.php
│ ├── Test
│ │ ├── ApiTestAssertionsTrait.php
│ │ └── Constraint
│ │ │ ├── ArraySubset.php
│ │ │ └── ArraySubsetTrait.php
│ ├── composer.json
│ ├── config
│ │ └── api-platform.php
│ ├── public
│ │ ├── 400.css
│ │ ├── 700.css
│ │ ├── car.svg
│ │ ├── es6-promise
│ │ │ └── es6-promise.auto.min.js
│ │ ├── fetch
│ │ │ └── fetch.js
│ │ ├── fonts
│ │ │ └── open-sans
│ │ │ │ ├── 400.css
│ │ │ │ ├── 700.css
│ │ │ │ └── files
│ │ │ │ ├── open-sans-cyrillic-400-normal.woff
│ │ │ │ ├── open-sans-cyrillic-400-normal.woff2
│ │ │ │ ├── open-sans-cyrillic-700-normal.woff
│ │ │ │ ├── open-sans-cyrillic-700-normal.woff2
│ │ │ │ ├── open-sans-cyrillic-ext-400-normal.woff
│ │ │ │ ├── open-sans-cyrillic-ext-400-normal.woff2
│ │ │ │ ├── open-sans-cyrillic-ext-700-normal.woff
│ │ │ │ ├── open-sans-cyrillic-ext-700-normal.woff2
│ │ │ │ ├── open-sans-greek-400-normal.woff
│ │ │ │ ├── open-sans-greek-400-normal.woff2
│ │ │ │ ├── open-sans-greek-700-normal.woff
│ │ │ │ ├── open-sans-greek-700-normal.woff2
│ │ │ │ ├── open-sans-greek-ext-400-normal.woff
│ │ │ │ ├── open-sans-greek-ext-400-normal.woff2
│ │ │ │ ├── open-sans-greek-ext-700-normal.woff
│ │ │ │ ├── open-sans-greek-ext-700-normal.woff2
│ │ │ │ ├── open-sans-hebrew-400-normal.woff
│ │ │ │ ├── open-sans-hebrew-400-normal.woff2
│ │ │ │ ├── open-sans-hebrew-700-normal.woff
│ │ │ │ ├── open-sans-hebrew-700-normal.woff2
│ │ │ │ ├── open-sans-latin-400-normal.woff
│ │ │ │ ├── open-sans-latin-400-normal.woff2
│ │ │ │ ├── open-sans-latin-700-normal.woff
│ │ │ │ ├── open-sans-latin-700-normal.woff2
│ │ │ │ ├── open-sans-latin-ext-400-normal.woff
│ │ │ │ ├── open-sans-latin-ext-400-normal.woff2
│ │ │ │ ├── open-sans-latin-ext-700-normal.woff
│ │ │ │ ├── open-sans-latin-ext-700-normal.woff2
│ │ │ │ ├── open-sans-math-400-normal.woff
│ │ │ │ ├── open-sans-math-400-normal.woff2
│ │ │ │ ├── open-sans-math-700-normal.woff
│ │ │ │ ├── open-sans-math-700-normal.woff2
│ │ │ │ ├── open-sans-symbols-400-normal.woff
│ │ │ │ ├── open-sans-symbols-400-normal.woff2
│ │ │ │ ├── open-sans-symbols-700-normal.woff
│ │ │ │ ├── open-sans-symbols-700-normal.woff2
│ │ │ │ ├── open-sans-vietnamese-400-normal.woff
│ │ │ │ ├── open-sans-vietnamese-400-normal.woff2
│ │ │ │ ├── open-sans-vietnamese-700-normal.woff
│ │ │ │ └── open-sans-vietnamese-700-normal.woff2
│ │ ├── graphiql-style.css
│ │ ├── graphiql
│ │ │ ├── graphiql.css
│ │ │ └── graphiql.min.js
│ │ ├── graphql-playground-style.css
│ │ ├── graphql-playground
│ │ │ ├── index.css
│ │ │ └── middleware.js
│ │ ├── init-common-ui.js
│ │ ├── init-graphiql.js
│ │ ├── init-graphql-playground.js
│ │ ├── init-redoc-ui.js
│ │ ├── init-swagger-ui.js
│ │ ├── logo-header.svg
│ │ ├── react
│ │ │ ├── react-dom.production.min.js
│ │ │ └── react.production.min.js
│ │ ├── redoc
│ │ │ └── redoc.standalone.js
│ │ ├── style.css
│ │ ├── swagger-ui-bundle.js
│ │ ├── swagger-ui-standalone-preset.js
│ │ ├── swagger-ui.css
│ │ ├── swagger-ui
│ │ │ ├── oauth2-redirect.html
│ │ │ ├── swagger-ui-bundle.js
│ │ │ ├── swagger-ui-standalone-preset.js
│ │ │ ├── swagger-ui.css
│ │ │ └── swagger-ui.css.map
│ │ ├── web.png
│ │ └── webby.png
│ ├── resources
│ │ └── views
│ │ │ ├── graphiql.blade.php
│ │ │ └── swagger-ui.blade.php
│ ├── routes
│ │ └── api.php
│ └── testbench.yaml
├── Metadata
│ ├── ApiFilter.php
│ ├── ApiProperty.php
│ ├── ApiResource.php
│ ├── CollectionOperationInterface.php
│ ├── Delete.php
│ ├── DeleteOperationInterface.php
│ ├── Error.php
│ ├── ErrorResource.php
│ ├── ErrorResourceInterface.php
│ ├── Exception
│ │ ├── ErrorCodeSerializableInterface.php
│ │ ├── ExceptionInterface.php
│ │ ├── HttpExceptionInterface.php
│ │ ├── InvalidArgumentException.php
│ │ ├── InvalidIdentifierException.php
│ │ ├── InvalidUriVariableException.php
│ │ ├── ItemNotFoundException.php
│ │ ├── NotExposedHttpException.php
│ │ ├── OperationNotFoundException.php
│ │ ├── ProblemExceptionInterface.php
│ │ ├── PropertyNotFoundException.php
│ │ ├── ResourceClassNotFoundException.php
│ │ ├── RuntimeException.php
│ │ ├── StatusAwareExceptionInterface.php
│ │ └── UnsupportedMediaTypeHttpException.php
│ ├── Extractor
│ │ ├── AbstractPropertyExtractor.php
│ │ ├── AbstractResourceExtractor.php
│ │ ├── PhpFileResourceExtractor.php
│ │ ├── PropertyExtractorInterface.php
│ │ ├── ResourceExtractorInterface.php
│ │ ├── ResourceExtractorTrait.php
│ │ ├── XmlPropertyExtractor.php
│ │ ├── XmlResourceExtractor.php
│ │ ├── YamlPropertyExtractor.php
│ │ ├── YamlResourceExtractor.php
│ │ └── schema
│ │ │ ├── properties.xsd
│ │ │ └── resources.xsd
│ ├── FilterInterface.php
│ ├── Get.php
│ ├── GetCollection.php
│ ├── GraphQl
│ │ ├── DeleteMutation.php
│ │ ├── Mutation.php
│ │ ├── Operation.php
│ │ ├── Query.php
│ │ ├── QueryCollection.php
│ │ └── Subscription.php
│ ├── HeaderParameter.php
│ ├── HeaderParameterInterface.php
│ ├── HttpOperation.php
│ ├── IdentifiersExtractor.php
│ ├── IdentifiersExtractorInterface.php
│ ├── InflectorInterface.php
│ ├── IriConverterInterface.php
│ ├── IsApiResource.php
│ ├── JsonSchemaFilterInterface.php
│ ├── LICENSE
│ ├── Link.php
│ ├── Metadata.php
│ ├── NotExposed.php
│ ├── OpenApiParameterFilterInterface.php
│ ├── Operation.php
│ ├── Operation
│ │ ├── DashPathSegmentNameGenerator.php
│ │ ├── Factory
│ │ │ ├── OperationMetadataFactory.php
│ │ │ └── OperationMetadataFactoryInterface.php
│ │ ├── PathSegmentNameGeneratorInterface.php
│ │ └── UnderscorePathSegmentNameGenerator.php
│ ├── Operations.php
│ ├── Parameter.php
│ ├── ParameterProviderFilterInterface.php
│ ├── Parameters.php
│ ├── Patch.php
│ ├── Post.php
│ ├── PropertiesAwareInterface.php
│ ├── Property
│ │ ├── Factory
│ │ │ ├── AttributePropertyMetadataFactory.php
│ │ │ ├── CachedPropertyMetadataFactory.php
│ │ │ ├── CachedPropertyNameCollectionFactory.php
│ │ │ ├── ClassLevelAttributePropertyNameCollectionFactory.php
│ │ │ ├── ConcernsPropertyNameCollectionMetadataFactory.php
│ │ │ ├── DefaultPropertyMetadataFactory.php
│ │ │ ├── ExtractorPropertyMetadataFactory.php
│ │ │ ├── ExtractorPropertyNameCollectionFactory.php
│ │ │ ├── IdentifierPropertyMetadataFactory.php
│ │ │ ├── PropertyInfoPropertyMetadataFactory.php
│ │ │ ├── PropertyInfoPropertyNameCollectionFactory.php
│ │ │ ├── PropertyMetadataFactoryInterface.php
│ │ │ ├── PropertyNameCollectionFactoryInterface.php
│ │ │ └── SerializerPropertyMetadataFactory.php
│ │ └── PropertyNameCollection.php
│ ├── Put.php
│ ├── QueryParameter.php
│ ├── QueryParameterInterface.php
│ ├── README.md
│ ├── Resource
│ │ ├── Factory
│ │ │ ├── AlternateUriResourceMetadataCollectionFactory.php
│ │ │ ├── AttributesResourceMetadataCollectionFactory.php
│ │ │ ├── AttributesResourceNameCollectionFactory.php
│ │ │ ├── BackedEnumResourceMetadataCollectionFactory.php
│ │ │ ├── CachedResourceMetadataCollectionFactory.php
│ │ │ ├── CachedResourceNameCollectionFactory.php
│ │ │ ├── ClassNameResourceNameCollectionFactory.php
│ │ │ ├── ConcernsResourceMetadataCollectionFactory.php
│ │ │ ├── ConcernsResourceNameCollectionFactory.php
│ │ │ ├── ExtractorResourceMetadataCollectionFactory.php
│ │ │ ├── ExtractorResourceNameCollectionFactory.php
│ │ │ ├── FiltersResourceMetadataCollectionFactory.php
│ │ │ ├── FormatsResourceMetadataCollectionFactory.php
│ │ │ ├── InputOutputResourceMetadataCollectionFactory.php
│ │ │ ├── LinkFactory.php
│ │ │ ├── LinkFactoryInterface.php
│ │ │ ├── LinkResourceMetadataCollectionFactory.php
│ │ │ ├── MainControllerResourceMetadataCollectionFactory.php
│ │ │ ├── MetadataCollectionFactoryTrait.php
│ │ │ ├── NotExposedOperationResourceMetadataCollectionFactory.php
│ │ │ ├── OperationDefaultsTrait.php
│ │ │ ├── OperationNameResourceMetadataCollectionFactory.php
│ │ │ ├── ParameterResourceMetadataCollectionFactory.php
│ │ │ ├── PhpDocResourceMetadataCollectionFactory.php
│ │ │ ├── PhpFileResourceMetadataCollectionFactory.php
│ │ │ ├── PhpFileResourceNameCollectionFactory.php
│ │ │ ├── PropertyLinkFactoryInterface.php
│ │ │ ├── ResourceMetadataCollectionFactoryInterface.php
│ │ │ ├── ResourceNameCollectionFactoryInterface.php
│ │ │ └── UriTemplateResourceMetadataCollectionFactory.php
│ │ ├── ResourceMetadataCollection.php
│ │ └── ResourceNameCollection.php
│ ├── ResourceAccessCheckerInterface.php
│ ├── ResourceClassResolver.php
│ ├── ResourceClassResolverInterface.php
│ ├── UriVariableTransformer
│ │ ├── DateTimeUriVariableTransformer.php
│ │ └── IntegerUriVariableTransformer.php
│ ├── UriVariableTransformerInterface.php
│ ├── UriVariablesConverter.php
│ ├── UriVariablesConverterInterface.php
│ ├── UrlGeneratorInterface.php
│ ├── Util
│ │ ├── AttributeFilterExtractorTrait.php
│ │ ├── AttributesExtractor.php
│ │ ├── CachedTrait.php
│ │ ├── CamelCaseToSnakeCaseNameConverter.php
│ │ ├── ClassInfoTrait.php
│ │ ├── CloneTrait.php
│ │ ├── CompositeIdentifierParser.php
│ │ ├── ContentNegotiationTrait.php
│ │ ├── Inflector.php
│ │ ├── IriHelper.php
│ │ ├── PropertyInfoToTypeInfoHelper.php
│ │ ├── Reflection.php
│ │ ├── ReflectionClassRecursiveIterator.php
│ │ ├── ResourceClassInfoTrait.php
│ │ ├── SortTrait.php
│ │ └── TypeHelper.php
│ ├── WithResourceTrait.php
│ └── composer.json
├── OpenApi
│ ├── Attributes
│ │ └── Webhook.php
│ ├── Command
│ │ └── OpenApiCommand.php
│ ├── Factory
│ │ ├── OpenApiFactory.php
│ │ ├── OpenApiFactoryInterface.php
│ │ └── TypeFactoryTrait.php
│ ├── LICENSE
│ ├── Model
│ │ ├── Components.php
│ │ ├── Contact.php
│ │ ├── Encoding.php
│ │ ├── Example.php
│ │ ├── ExtensionTrait.php
│ │ ├── ExternalDocumentation.php
│ │ ├── Header.php
│ │ ├── Info.php
│ │ ├── License.php
│ │ ├── Link.php
│ │ ├── MediaType.php
│ │ ├── OAuthFlow.php
│ │ ├── OAuthFlows.php
│ │ ├── Operation.php
│ │ ├── Parameter.php
│ │ ├── PathItem.php
│ │ ├── Paths.php
│ │ ├── Reference.php
│ │ ├── RequestBody.php
│ │ ├── Response.php
│ │ ├── Schema.php
│ │ ├── SecurityScheme.php
│ │ ├── Server.php
│ │ └── Tag.php
│ ├── OpenApi.php
│ ├── Options.php
│ ├── README.md
│ ├── Serializer
│ │ ├── ApiGatewayNormalizer.php
│ │ ├── LegacyOpenApiNormalizer.php
│ │ ├── NormalizeOperationNameTrait.php
│ │ ├── OpenApiNormalizer.php
│ │ └── SerializerContextBuilder.php
│ ├── State
│ │ └── OpenApiProvider.php
│ └── composer.json
├── Problem
│ └── Serializer
│ │ └── ConstraintViolationListNormalizer.php
├── RamseyUuid
│ ├── LICENSE
│ ├── README.md
│ ├── Serializer
│ │ └── UuidDenormalizer.php
│ ├── UriVariableTransformer
│ │ └── UuidUriVariableTransformer.php
│ └── composer.json
├── Serializer
│ ├── AbstractCollectionNormalizer.php
│ ├── AbstractConstraintViolationListNormalizer.php
│ ├── AbstractItemNormalizer.php
│ ├── CacheKeyTrait.php
│ ├── ConstraintViolationListNormalizer.php
│ ├── ContextTrait.php
│ ├── Filter
│ │ ├── FilterInterface.php
│ │ ├── GroupFilter.php
│ │ └── PropertyFilter.php
│ ├── InputOutputMetadataTrait.php
│ ├── ItemNormalizer.php
│ ├── JsonEncoder.php
│ ├── LICENSE
│ ├── Mapping
│ │ ├── Factory
│ │ │ └── ClassMetadataFactory.php
│ │ └── Loader
│ │ │ └── PropertyMetadataLoader.php
│ ├── OperationContextTrait.php
│ ├── Parameter
│ │ └── SerializerFilterParameterProvider.php
│ ├── README.md
│ ├── SerializerContextBuilder.php
│ ├── SerializerFilterContextBuilder.php
│ ├── TagCollectorInterface.php
│ ├── YamlEncoder.php
│ └── composer.json
├── State
│ ├── ApiResource
│ │ └── Error.php
│ ├── CallableProcessor.php
│ ├── CallableProvider.php
│ ├── CreateProvider.php
│ ├── ErrorProvider.php
│ ├── Exception
│ │ ├── ParameterNotSupportedException.php
│ │ └── ProviderNotFoundException.php
│ ├── LICENSE
│ ├── ObjectProvider.php
│ ├── OptionsInterface.php
│ ├── Pagination
│ │ ├── ArrayPaginator.php
│ │ ├── HasNextPagePaginatorInterface.php
│ │ ├── Pagination.php
│ │ ├── PaginationOptions.php
│ │ ├── PaginatorInterface.php
│ │ ├── PartialPaginatorInterface.php
│ │ └── TraversablePaginator.php
│ ├── ParameterNotFound.php
│ ├── ParameterProviderInterface.php
│ ├── Processor
│ │ ├── AddLinkHeaderProcessor.php
│ │ ├── RespondProcessor.php
│ │ ├── SerializeProcessor.php
│ │ └── WriteProcessor.php
│ ├── ProcessorInterface.php
│ ├── Provider
│ │ ├── BackedEnumProvider.php
│ │ ├── ContentNegotiationProvider.php
│ │ ├── DeserializeProvider.php
│ │ ├── ParameterProvider.php
│ │ ├── ReadProvider.php
│ │ └── SecurityParameterProvider.php
│ ├── ProviderInterface.php
│ ├── README.md
│ ├── ResourceList.php
│ ├── SerializerAwareProviderInterface.php
│ ├── SerializerAwareProviderTrait.php
│ ├── SerializerContextBuilderInterface.php
│ ├── UriVariablesResolverTrait.php
│ ├── Util
│ │ ├── CorsTrait.php
│ │ ├── OperationRequestInitiatorTrait.php
│ │ ├── ParameterParserTrait.php
│ │ ├── RequestAttributesExtractor.php
│ │ ├── RequestParser.php
│ │ └── StateOptionsTrait.php
│ └── composer.json
├── Symfony
│ ├── Action
│ │ ├── DocumentationAction.php
│ │ ├── EntrypointAction.php
│ │ ├── NotExposedAction.php
│ │ ├── NotFoundAction.php
│ │ └── PlaceholderAction.php
│ ├── Bundle
│ │ ├── ApiPlatformBundle.php
│ │ ├── ArgumentResolver
│ │ │ ├── CompatibleValueResolverInterface.php
│ │ │ └── PayloadArgumentResolver.php
│ │ ├── CacheWarmer
│ │ │ └── CachePoolClearerCacheWarmer.php
│ │ ├── Command
│ │ │ ├── DebugResourceCommand.php
│ │ │ └── GraphQlExportCommand.php
│ │ ├── DataCollector
│ │ │ ├── DataCollected.php
│ │ │ └── RequestDataCollector.php
│ │ ├── DependencyInjection
│ │ │ ├── ApiPlatformExtension.php
│ │ │ ├── Compiler
│ │ │ │ ├── AttributeFilterPass.php
│ │ │ │ ├── AttributeResourcePass.php
│ │ │ │ ├── AuthenticatorManagerPass.php
│ │ │ │ ├── DataProviderPass.php
│ │ │ │ ├── ElasticsearchClientPass.php
│ │ │ │ ├── FilterPass.php
│ │ │ │ ├── GraphQlMutationResolverPass.php
│ │ │ │ ├── GraphQlQueryResolverPass.php
│ │ │ │ ├── GraphQlResolverPass.php
│ │ │ │ ├── GraphQlTypePass.php
│ │ │ │ ├── MetadataAwareNameConverterPass.php
│ │ │ │ ├── SerializerMappingLoaderPass.php
│ │ │ │ ├── TestClientPass.php
│ │ │ │ └── TestMercureHubPass.php
│ │ │ └── Configuration.php
│ │ ├── Resources
│ │ │ ├── config
│ │ │ │ ├── api.xml
│ │ │ │ ├── argument_resolver.xml
│ │ │ │ ├── data_collector.xml
│ │ │ │ ├── debug.xml
│ │ │ │ ├── doctrine_mongodb_odm.xml
│ │ │ │ ├── doctrine_odm_mercure_publisher.xml
│ │ │ │ ├── doctrine_orm.xml
│ │ │ │ ├── doctrine_orm_http_cache_purger.xml
│ │ │ │ ├── doctrine_orm_mercure_publisher.xml
│ │ │ │ ├── elasticsearch.xml
│ │ │ │ ├── filter.xml
│ │ │ │ ├── graphql.xml
│ │ │ │ ├── graphql
│ │ │ │ │ ├── security.xml
│ │ │ │ │ └── validator.xml
│ │ │ │ ├── graphql_mercure.xml
│ │ │ │ ├── hal.xml
│ │ │ │ ├── http_cache.xml
│ │ │ │ ├── http_cache_purger.xml
│ │ │ │ ├── hydra.xml
│ │ │ │ ├── json_schema.xml
│ │ │ │ ├── jsonapi.xml
│ │ │ │ ├── jsonld.xml
│ │ │ │ ├── link_security.xml
│ │ │ │ ├── maker.xml
│ │ │ │ ├── messenger.xml
│ │ │ │ ├── metadata
│ │ │ │ │ ├── links.xml
│ │ │ │ │ ├── operation.xml
│ │ │ │ │ ├── php.xml
│ │ │ │ │ ├── php_doc.xml
│ │ │ │ │ ├── property.xml
│ │ │ │ │ ├── property_name.xml
│ │ │ │ │ ├── resource.xml
│ │ │ │ │ ├── resource_name.xml
│ │ │ │ │ ├── validator.xml
│ │ │ │ │ ├── xml.xml
│ │ │ │ │ └── yaml.xml
│ │ │ │ ├── openapi.xml
│ │ │ │ ├── openapi
│ │ │ │ │ └── yaml.xml
│ │ │ │ ├── problem.xml
│ │ │ │ ├── ramsey_uuid.xml
│ │ │ │ ├── routing
│ │ │ │ │ ├── api.xml
│ │ │ │ │ ├── docs.xml
│ │ │ │ │ ├── errors.xml
│ │ │ │ │ ├── genid.xml
│ │ │ │ │ ├── graphql
│ │ │ │ │ │ ├── graphiql.xml
│ │ │ │ │ │ ├── graphql.xml
│ │ │ │ │ │ └── graphql_playground.xml
│ │ │ │ │ └── jsonld.xml
│ │ │ │ ├── security.xml
│ │ │ │ ├── state
│ │ │ │ │ ├── http_cache_purger.xml
│ │ │ │ │ ├── hydra.xml
│ │ │ │ │ ├── jsonapi.xml
│ │ │ │ │ ├── jsonld.xml
│ │ │ │ │ ├── mercure.xml
│ │ │ │ │ ├── processor.xml
│ │ │ │ │ ├── provider.xml
│ │ │ │ │ ├── security.xml
│ │ │ │ │ ├── security_validator.xml
│ │ │ │ │ ├── state.xml
│ │ │ │ │ └── swagger_ui.xml
│ │ │ │ ├── swagger_ui.xml
│ │ │ │ ├── symfony
│ │ │ │ │ ├── controller.xml
│ │ │ │ │ ├── events.xml
│ │ │ │ │ ├── jsonld.xml
│ │ │ │ │ ├── swagger_ui.xml
│ │ │ │ │ ├── symfony.xml
│ │ │ │ │ └── uid.xml
│ │ │ │ └── validator
│ │ │ │ │ ├── events.xml
│ │ │ │ │ ├── state.xml
│ │ │ │ │ └── validator.xml
│ │ │ ├── public
│ │ │ │ ├── es6-promise
│ │ │ │ │ └── es6-promise.auto.min.js
│ │ │ │ ├── fetch
│ │ │ │ │ └── fetch.js
│ │ │ │ ├── fonts
│ │ │ │ │ └── open-sans
│ │ │ │ │ │ ├── 400.css
│ │ │ │ │ │ ├── 700.css
│ │ │ │ │ │ └── files
│ │ │ │ │ │ ├── open-sans-cyrillic-400-normal.woff
│ │ │ │ │ │ ├── open-sans-cyrillic-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-cyrillic-700-normal.woff
│ │ │ │ │ │ ├── open-sans-cyrillic-700-normal.woff2
│ │ │ │ │ │ ├── open-sans-cyrillic-ext-400-normal.woff
│ │ │ │ │ │ ├── open-sans-cyrillic-ext-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-cyrillic-ext-700-normal.woff
│ │ │ │ │ │ ├── open-sans-cyrillic-ext-700-normal.woff2
│ │ │ │ │ │ ├── open-sans-greek-400-normal.woff
│ │ │ │ │ │ ├── open-sans-greek-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-greek-700-normal.woff
│ │ │ │ │ │ ├── open-sans-greek-700-normal.woff2
│ │ │ │ │ │ ├── open-sans-greek-ext-400-normal.woff
│ │ │ │ │ │ ├── open-sans-greek-ext-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-greek-ext-700-normal.woff
│ │ │ │ │ │ ├── open-sans-greek-ext-700-normal.woff2
│ │ │ │ │ │ ├── open-sans-hebrew-400-normal.woff
│ │ │ │ │ │ ├── open-sans-hebrew-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-hebrew-700-normal.woff
│ │ │ │ │ │ ├── open-sans-hebrew-700-normal.woff2
│ │ │ │ │ │ ├── open-sans-latin-400-normal.woff
│ │ │ │ │ │ ├── open-sans-latin-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-latin-700-normal.woff
│ │ │ │ │ │ ├── open-sans-latin-700-normal.woff2
│ │ │ │ │ │ ├── open-sans-latin-ext-400-normal.woff
│ │ │ │ │ │ ├── open-sans-latin-ext-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-latin-ext-700-normal.woff
│ │ │ │ │ │ ├── open-sans-latin-ext-700-normal.woff2
│ │ │ │ │ │ ├── open-sans-math-400-normal.woff
│ │ │ │ │ │ ├── open-sans-math-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-math-700-normal.woff
│ │ │ │ │ │ ├── open-sans-math-700-normal.woff2
│ │ │ │ │ │ ├── open-sans-symbols-400-normal.woff
│ │ │ │ │ │ ├── open-sans-symbols-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-symbols-700-normal.woff
│ │ │ │ │ │ ├── open-sans-symbols-700-normal.woff2
│ │ │ │ │ │ ├── open-sans-vietnamese-400-normal.woff
│ │ │ │ │ │ ├── open-sans-vietnamese-400-normal.woff2
│ │ │ │ │ │ ├── open-sans-vietnamese-700-normal.woff
│ │ │ │ │ │ └── open-sans-vietnamese-700-normal.woff2
│ │ │ │ ├── graphiql-style.css
│ │ │ │ ├── graphiql
│ │ │ │ │ ├── graphiql.css
│ │ │ │ │ └── graphiql.min.js
│ │ │ │ ├── graphql-playground-style.css
│ │ │ │ ├── graphql-playground
│ │ │ │ │ ├── index.css
│ │ │ │ │ └── middleware.js
│ │ │ │ ├── init-common-ui.js
│ │ │ │ ├── init-graphiql.js
│ │ │ │ ├── init-graphql-playground.js
│ │ │ │ ├── init-redoc-ui.js
│ │ │ │ ├── init-swagger-ui.js
│ │ │ │ ├── logo-header.svg
│ │ │ │ ├── react
│ │ │ │ │ ├── react-dom.production.min.js
│ │ │ │ │ └── react.production.min.js
│ │ │ │ ├── redoc
│ │ │ │ │ └── redoc.standalone.js
│ │ │ │ ├── style.css
│ │ │ │ ├── swagger-ui
│ │ │ │ │ ├── oauth2-redirect.html
│ │ │ │ │ ├── swagger-ui-bundle.js
│ │ │ │ │ ├── swagger-ui-standalone-preset.js
│ │ │ │ │ ├── swagger-ui.css
│ │ │ │ │ └── swagger-ui.css.map
│ │ │ │ ├── web.png
│ │ │ │ └── webby.png
│ │ │ └── views
│ │ │ │ ├── DataCollector
│ │ │ │ ├── api-platform-icon.svg
│ │ │ │ ├── api-platform.svg
│ │ │ │ └── request.html.twig
│ │ │ │ ├── GraphQlPlayground
│ │ │ │ └── index.html.twig
│ │ │ │ ├── Graphiql
│ │ │ │ └── index.html.twig
│ │ │ │ └── SwaggerUi
│ │ │ │ └── index.html.twig
│ │ ├── SwaggerUi
│ │ │ ├── SwaggerUiAction.php
│ │ │ ├── SwaggerUiContext.php
│ │ │ ├── SwaggerUiProcessor.php
│ │ │ └── SwaggerUiProvider.php
│ │ └── Test
│ │ │ ├── ApiTestAssertionsTrait.php
│ │ │ ├── ApiTestCase.php
│ │ │ ├── Client.php
│ │ │ ├── ClientTrait.php
│ │ │ ├── Constraint
│ │ │ ├── ArraySubset.php
│ │ │ ├── ArraySubsetTrait.php
│ │ │ └── MatchesJsonSchema.php
│ │ │ └── Response.php
│ ├── Controller
│ │ └── MainController.php
│ ├── Doctrine
│ │ └── EventListener
│ │ │ ├── PublishMercureUpdatesListener.php
│ │ │ └── PurgeHttpCacheListener.php
│ ├── EventListener
│ │ ├── AddFormatListener.php
│ │ ├── DeserializeListener.php
│ │ ├── ErrorListener.php
│ │ ├── EventPriorities.php
│ │ ├── ExceptionListener.php
│ │ ├── JsonApi
│ │ │ ├── TransformFieldsetsParametersListener.php
│ │ │ ├── TransformFilteringParametersListener.php
│ │ │ ├── TransformPaginationParametersListener.php
│ │ │ └── TransformSortingParametersListener.php
│ │ ├── ReadListener.php
│ │ ├── RespondListener.php
│ │ ├── SerializeListener.php
│ │ ├── ValidateListener.php
│ │ └── WriteListener.php
│ ├── GraphQl
│ │ └── Resolver
│ │ │ └── Factory
│ │ │ └── DataCollectorResolverFactory.php
│ ├── LICENSE
│ ├── Maker
│ │ ├── MakeStateProcessor.php
│ │ ├── MakeStateProvider.php
│ │ └── Resources
│ │ │ ├── help
│ │ │ ├── MakeStateProcessor.txt
│ │ │ └── MakeStateProvider.txt
│ │ │ └── skeleton
│ │ │ ├── StateProcessor.php.tpl
│ │ │ └── StateProvider.php.tpl
│ ├── Messenger
│ │ ├── ContextStamp.php
│ │ ├── DispatchTrait.php
│ │ ├── Metadata
│ │ │ └── MessengerResourceMetadataCollectionFactory.php
│ │ ├── Processor.php
│ │ └── RemoveStamp.php
│ ├── README.md
│ ├── Routing
│ │ ├── ApiLoader.php
│ │ ├── IriConverter.php
│ │ ├── Router.php
│ │ └── SkolemIriConverter.php
│ ├── Security
│ │ ├── Core
│ │ │ └── Authorization
│ │ │ │ └── ExpressionLanguageProvider.php
│ │ ├── Exception
│ │ │ └── AccessDeniedException.php
│ │ ├── ResourceAccessChecker.php
│ │ ├── ResourceAccessCheckerInterface.php
│ │ └── State
│ │ │ ├── AccessCheckerProvider.php
│ │ │ ├── LinkAccessCheckerProvider.php
│ │ │ └── LinkedReadProvider.php
│ ├── State
│ │ └── MercureLinkProcessor.php
│ ├── UriVariableTransformer
│ │ ├── UlidUriVariableTransformer.php
│ │ └── UuidUriVariableTransformer.php
│ ├── Util
│ │ ├── FormatMatcher.php
│ │ └── RequestAttributesExtractor.php
│ ├── Validator
│ │ ├── Metadata
│ │ │ └── Property
│ │ │ │ ├── Restriction
│ │ │ │ ├── PropertySchemaChoiceRestriction.php
│ │ │ │ ├── PropertySchemaCollectionRestriction.php
│ │ │ │ ├── PropertySchemaCountRestriction.php
│ │ │ │ ├── PropertySchemaFormat.php
│ │ │ │ ├── PropertySchemaGreaterThanOrEqualRestriction.php
│ │ │ │ ├── PropertySchemaGreaterThanRestriction.php
│ │ │ │ ├── PropertySchemaLengthRestriction.php
│ │ │ │ ├── PropertySchemaLessThanOrEqualRestriction.php
│ │ │ │ ├── PropertySchemaLessThanRestriction.php
│ │ │ │ ├── PropertySchemaOneOfRestriction.php
│ │ │ │ ├── PropertySchemaRangeRestriction.php
│ │ │ │ ├── PropertySchemaRegexRestriction.php
│ │ │ │ ├── PropertySchemaRestrictionMetadataInterface.php
│ │ │ │ └── PropertySchemaUniqueRestriction.php
│ │ │ │ └── ValidatorPropertyMetadataFactory.php
│ │ ├── Serializer
│ │ │ └── ValidationExceptionNormalizer.php
│ │ ├── State
│ │ │ ├── ErrorProvider.php
│ │ │ ├── ParameterValidatorProvider.php
│ │ │ └── ValidateProvider.php
│ │ ├── ValidationGroupsGeneratorInterface.php
│ │ └── Validator.php
│ └── composer.json
└── Validator
│ ├── Exception
│ ├── ConstraintViolationListAwareExceptionInterface.php
│ └── ValidationException.php
│ ├── LICENSE
│ ├── Metadata
│ └── Resource
│ │ └── Factory
│ │ └── ParameterValidationResourceMetadataCollectionFactory.php
│ ├── README.md
│ ├── ValidatorInterface.php
│ └── composer.json
└── update-hydra-context.php
/codecov.yml:
--------------------------------------------------------------------------------
1 | ignore:
2 | - "src/**/Tests/"
3 |
--------------------------------------------------------------------------------
/phpunit.baseline.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/pmu.baseline:
--------------------------------------------------------------------------------
1 | Class "ApiPlatform\Serializer\SerializerContextBuilder" uses "ApiPlatform\Doctrine\Orm\State\Options" but it is not declared as dependency.
2 |
--------------------------------------------------------------------------------
/src/ApiResource/Error.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\ApiResource;
15 |
16 | use ApiPlatform\State\ApiResource\Error as ApiResourceError;
17 |
18 | class Error extends ApiResourceError
19 | {
20 | }
21 |
--------------------------------------------------------------------------------
/src/Doctrine/Common/Filter/ExistsFilterInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Common\Filter;
15 |
16 | /**
17 | * Interface for filtering the collection by whether a property value exists or not.
18 | *
19 | * @author Teoh Han Hui
20 | * @author Alan Poulain
21 | */
22 | interface ExistsFilterInterface
23 | {
24 | public const QUERY_PARAMETER_KEY = 'exists';
25 | }
26 |
--------------------------------------------------------------------------------
/src/Doctrine/Common/Filter/ManagerRegistryAwareInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Common\Filter;
15 |
16 | use Doctrine\Persistence\ManagerRegistry;
17 |
18 | interface ManagerRegistryAwareInterface
19 | {
20 | public function hasManagerRegistry(): bool;
21 |
22 | public function getManagerRegistry(): ManagerRegistry;
23 |
24 | public function setManagerRegistry(ManagerRegistry $managerRegistry): void;
25 | }
26 |
--------------------------------------------------------------------------------
/src/Doctrine/Common/Filter/PropertyAwareFilterInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Common\Filter;
15 |
16 | /**
17 | * @author Antoine Bluchet
18 | *
19 | * @experimental
20 | */
21 | interface PropertyAwareFilterInterface
22 | {
23 | /**
24 | * @param string[] $properties
25 | */
26 | public function setProperties(array $properties): void;
27 | }
28 |
--------------------------------------------------------------------------------
/src/Doctrine/Common/Filter/RangeFilterInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Common\Filter;
15 |
16 | /**
17 | * Interface for filtering the collection by range.
18 | *
19 | * @author Lee Siong Chan
20 | * @author Alan Poulain
21 | */
22 | interface RangeFilterInterface
23 | {
24 | public const PARAMETER_BETWEEN = 'between';
25 | public const PARAMETER_GREATER_THAN = 'gt';
26 | public const PARAMETER_GREATER_THAN_OR_EQUAL = 'gte';
27 | public const PARAMETER_LESS_THAN = 'lt';
28 | public const PARAMETER_LESS_THAN_OR_EQUAL = 'lte';
29 | }
30 |
--------------------------------------------------------------------------------
/src/Doctrine/Common/ParameterValueExtractorTrait.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Common;
15 |
16 | use ApiPlatform\Metadata\Parameter;
17 |
18 | trait ParameterValueExtractorTrait
19 | {
20 | /**
21 | * @return array
22 | */
23 | private function extractParameterValue(Parameter $parameter, mixed $value): array
24 | {
25 | $key = $parameter->getProperty() ?? $parameter->getKey();
26 | if (!str_contains($key, ':property')) {
27 | return [$key => $value];
28 | }
29 |
30 | return [str_replace('[:property]', '', $key) => $value];
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/Doctrine/Common/README.md:
--------------------------------------------------------------------------------
1 | # API Platform - Doctrine Common Support
2 |
3 | Integration for [Doctrine](https://www.doctrine-project.org) with the [API Platform](https://api-platform.com) framework.
4 |
5 | [Documentation](https://api-platform.com/docs/core/getting-started/)
6 |
7 | > [!CAUTION]
8 | >
9 | > This is a read-only sub split of `api-platform/core`, please
10 | > [report issues](https://github.com/api-platform/core/issues) and
11 | > [send Pull Requests](https://github.com/api-platform/core/pulls)
12 | > in the [core API Platform repository](https://github.com/api-platform/core).
13 |
--------------------------------------------------------------------------------
/src/Doctrine/Common/State/Options.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Common\State;
15 |
16 | use ApiPlatform\State\OptionsInterface;
17 |
18 | class Options implements OptionsInterface
19 | {
20 | /**
21 | * @param mixed $handleLinks experimental callable, typed mixed as we may want a service name in the future
22 | */
23 | public function __construct(
24 | protected mixed $handleLinks = null,
25 | ) {
26 | }
27 |
28 | public function getHandleLinks(): mixed
29 | {
30 | return $this->handleLinks;
31 | }
32 |
33 | public function withHandleLinks(mixed $handleLinks): self
34 | {
35 | $self = clone $this;
36 | $self->handleLinks = $handleLinks;
37 |
38 | return $self;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/Doctrine/Odm/Extension/AggregationCollectionExtensionInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Odm\Extension;
15 |
16 | use ApiPlatform\Metadata\Operation;
17 | use Doctrine\ODM\MongoDB\Aggregation\Builder;
18 |
19 | /**
20 | * Interface of Doctrine MongoDB ODM aggregation extensions for collection aggregations.
21 | *
22 | * @author Alan Poulain
23 | */
24 | interface AggregationCollectionExtensionInterface
25 | {
26 | public function applyToCollection(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void;
27 | }
28 |
--------------------------------------------------------------------------------
/src/Doctrine/Odm/Extension/AggregationItemExtensionInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Odm\Extension;
15 |
16 | use ApiPlatform\Metadata\Operation;
17 | use Doctrine\ODM\MongoDB\Aggregation\Builder;
18 |
19 | /**
20 | * Interface of Doctrine MongoDB ODM aggregation extensions for item aggregations.
21 | *
22 | * @author Alan Poulain
23 | */
24 | interface AggregationItemExtensionInterface
25 | {
26 | public function applyToItem(Builder $aggregationBuilder, string $resourceClass, array $identifiers, ?Operation $operation = null, array &$context = []): void;
27 | }
28 |
--------------------------------------------------------------------------------
/src/Doctrine/Odm/Extension/AggregationResultItemExtensionInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Odm\Extension;
15 |
16 | use ApiPlatform\Metadata\Operation;
17 | use Doctrine\ODM\MongoDB\Aggregation\Builder;
18 |
19 | /**
20 | * Interface of Doctrine MongoDB ODM aggregation extensions that supports result production
21 | * for specific cases such as Aggregation alteration.
22 | *
23 | * @author Alan Poulain
24 | */
25 | interface AggregationResultItemExtensionInterface extends AggregationItemExtensionInterface
26 | {
27 | public function supportsResult(string $resourceClass, ?Operation $operation = null, array $context = []): bool;
28 |
29 | public function getResult(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array $context = []): ?object;
30 | }
31 |
--------------------------------------------------------------------------------
/src/Doctrine/Odm/Filter/FilterInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Odm\Filter;
15 |
16 | use ApiPlatform\Metadata\FilterInterface as BaseFilterInterface;
17 | use ApiPlatform\Metadata\Operation;
18 | use Doctrine\ODM\MongoDB\Aggregation\Builder;
19 |
20 | /**
21 | * Doctrine MongoDB ODM filter interface.
22 | *
23 | * @author Alan Poulain
24 | */
25 | interface FilterInterface extends BaseFilterInterface
26 | {
27 | /**
28 | * Applies the filter.
29 | */
30 | public function apply(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void;
31 | }
32 |
--------------------------------------------------------------------------------
/src/Doctrine/Odm/README.md:
--------------------------------------------------------------------------------
1 | # API Platform - Doctrine MongoDB ODM Support
2 |
3 | Integration for [Doctrine MongoDB ODM](https://www.doctrine-project.org/projects/doctrine-mongodb-odm/en/current/index.html) with the [API Platform](https://api-platform.com) framework.
4 |
5 | [Documentation](https://api-platform.com/docs/core/mongodb/)
6 |
7 | > [!CAUTION]
8 | >
9 | > This is a read-only sub split of `api-platform/core`, please
10 | > [report issues](https://github.com/api-platform/core/issues) and
11 | > [send Pull Requests](https://github.com/api-platform/core/pulls)
12 | > in the [core API Platform repository](https://github.com/api-platform/core).
13 |
--------------------------------------------------------------------------------
/src/Doctrine/Odm/State/LinksHandlerInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Odm\State;
15 |
16 | use ApiPlatform\Metadata\Operation;
17 | use Doctrine\ODM\MongoDB\Aggregation\Builder;
18 |
19 | /**
20 | * @experimental
21 | */
22 | interface LinksHandlerInterface
23 | {
24 | /**
25 | * Handle Doctrine ORM links.
26 | *
27 | * @see LinksHandlerTrait
28 | *
29 | * @param array $uriVariables
30 | * @param array{documentClass: string, operation: Operation}&array $context
31 | */
32 | public function handleLinks(Builder $aggregationBuilder, array $uriVariables, array $context): void;
33 | }
34 |
--------------------------------------------------------------------------------
/src/Doctrine/Orm/Extension/DoctrinePaginatorFactory.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Orm\Extension;
15 |
16 | use Doctrine\ORM\Tools\Pagination\Paginator;
17 |
18 | class DoctrinePaginatorFactory
19 | {
20 | public function getPaginator($query, $fetchJoinCollection): Paginator
21 | {
22 | return new Paginator($query, $fetchJoinCollection);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/Doctrine/Orm/Extension/QueryResultItemExtensionInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Orm\Extension;
15 |
16 | use ApiPlatform\Metadata\Operation;
17 | use Doctrine\ORM\QueryBuilder;
18 |
19 | /**
20 | * Interface of Doctrine ORM query extensions that supports result production
21 | * for specific cases such as Query alteration.
22 | *
23 | * @author Antoine BLUCHET
24 | *
25 | * @template T of object
26 | */
27 | interface QueryResultItemExtensionInterface extends QueryItemExtensionInterface
28 | {
29 | public function supportsResult(string $resourceClass, ?Operation $operation = null, array $context = []): bool;
30 |
31 | public function getResult(QueryBuilder $queryBuilder, ?string $resourceClass = null, ?Operation $operation = null, array $context = []): ?object;
32 | }
33 |
--------------------------------------------------------------------------------
/src/Doctrine/Orm/Filter/FilterInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Orm\Filter;
15 |
16 | use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
17 | use ApiPlatform\Metadata\FilterInterface as BaseFilterInterface;
18 | use ApiPlatform\Metadata\Operation;
19 | use Doctrine\ORM\QueryBuilder;
20 |
21 | /**
22 | * Doctrine ORM filter interface.
23 | *
24 | * @author Kévin Dunglas
25 | */
26 | interface FilterInterface extends BaseFilterInterface
27 | {
28 | /**
29 | * Applies the filter.
30 | */
31 | public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, ?Operation $operation = null, array $context = []): void;
32 | }
33 |
--------------------------------------------------------------------------------
/src/Doctrine/Orm/QueryAwareInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Orm;
15 |
16 | use Doctrine\ORM\Query;
17 |
18 | interface QueryAwareInterface
19 | {
20 | /**
21 | * Gets the Query object that will actually be executed.
22 | *
23 | * This should allow configuring options which could only be set on the Query
24 | * object itself.
25 | */
26 | public function getQuery(): Query;
27 | }
28 |
--------------------------------------------------------------------------------
/src/Doctrine/Orm/README.md:
--------------------------------------------------------------------------------
1 | # API Platform - Doctrine ORM Support
2 |
3 | Integration for [Doctrine ORM](https://www.doctrine-project.org/projects/doctrine-orm/en/current/index.html) with the [API Platform](https://api-platform.com) framework.
4 |
5 | [Documentation](https://api-platform.com/docs/core/getting-started/)
6 |
7 | > [!CAUTION]
8 | >
9 | > This is a read-only sub split of `api-platform/core`, please
10 | > [report issues](https://github.com/api-platform/core/issues) and
11 | > [send Pull Requests](https://github.com/api-platform/core/pulls)
12 | > in the [core API Platform repository](https://github.com/api-platform/core).
13 |
--------------------------------------------------------------------------------
/src/Doctrine/Orm/State/LinksHandlerInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Orm\State;
15 |
16 | use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
17 | use ApiPlatform\Metadata\Operation;
18 | use Doctrine\ORM\QueryBuilder;
19 |
20 | /**
21 | * @experimental
22 | */
23 | interface LinksHandlerInterface
24 | {
25 | /**
26 | * Handle Doctrine ORM links.
27 | *
28 | * @see LinksHandlerTrait
29 | *
30 | * @param array $uriVariables
31 | * @param array{entityClass: string, operation: Operation}&array $context
32 | */
33 | public function handleLinks(QueryBuilder $queryBuilder, array $uriVariables, QueryNameGeneratorInterface $queryNameGenerator, array $context): void;
34 | }
35 |
--------------------------------------------------------------------------------
/src/Doctrine/Orm/Util/QueryNameGeneratorInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Doctrine\Orm\Util;
15 |
16 | /**
17 | * @author Amrouche Hamza
18 | */
19 | interface QueryNameGeneratorInterface
20 | {
21 | /**
22 | * Generates a cacheable alias for DQL join.
23 | */
24 | public function generateJoinAlias(string $association): string;
25 |
26 | /**
27 | * Generates a cacheable parameter name for DQL query.
28 | */
29 | public function generateParameterName(string $name): string;
30 | }
31 |
--------------------------------------------------------------------------------
/src/Documentation/DocumentationInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Documentation;
15 |
16 | /**
17 | * An API documentation.
18 | */
19 | interface DocumentationInterface
20 | {
21 | }
22 |
--------------------------------------------------------------------------------
/src/Documentation/Entrypoint.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Documentation;
15 |
16 | use ApiPlatform\Metadata\Resource\ResourceNameCollection;
17 |
18 | /**
19 | * The first path you will see in the API.
20 | *
21 | * @author Amrouche Hamza
22 | */
23 | final class Entrypoint
24 | {
25 | public function __construct(private readonly ResourceNameCollection $resourceNameCollection)
26 | {
27 | }
28 |
29 | public function getResourceNameCollection(): ResourceNameCollection
30 | {
31 | return $this->resourceNameCollection;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/Documentation/README.md:
--------------------------------------------------------------------------------
1 | # API Platform - Documentation
2 |
3 | The API documentation component of the [API Platform](https://api-platform.com) framework.
4 |
5 | [Documentation](https://api-platform.com/docs/core/)
6 |
7 | > [!CAUTION]
8 | >
9 | > This is a read-only sub split of `api-platform/core`, please
10 | > [report issues](https://github.com/api-platform/core/issues) and
11 | > [send Pull Requests](https://github.com/api-platform/core/pulls)
12 | > in the [core API Platform repository](https://github.com/api-platform/core).
13 |
--------------------------------------------------------------------------------
/src/Elasticsearch/Exception/ExceptionInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Elasticsearch\Exception;
15 |
16 | /**
17 | * Base exception interface.
18 | *
19 | * @author Kévin Dunglas
20 | */
21 | interface ExceptionInterface extends \Throwable
22 | {
23 | }
24 |
--------------------------------------------------------------------------------
/src/Elasticsearch/Exception/IndexNotFoundException.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Elasticsearch\Exception;
15 |
16 | /**
17 | * Index not found exception.
18 | *
19 | * @experimental
20 | *
21 | * @author Baptiste Meyer
22 | */
23 | final class IndexNotFoundException extends \Exception implements ExceptionInterface
24 | {
25 | }
26 |
--------------------------------------------------------------------------------
/src/Elasticsearch/Exception/NonUniqueIdentifierException.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Elasticsearch\Exception;
15 |
16 | /**
17 | * Non unique identifier exception.
18 | *
19 | * @experimental
20 | *
21 | * @author Baptiste Meyer
22 | */
23 | final class NonUniqueIdentifierException extends \Exception implements ExceptionInterface
24 | {
25 | }
26 |
--------------------------------------------------------------------------------
/src/Elasticsearch/Extension/RequestBodySearchCollectionExtensionInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Elasticsearch\Extension;
15 |
16 | use ApiPlatform\Metadata\Operation;
17 |
18 | /**
19 | * Interface of Elasticsearch request body search extensions for collection queries.
20 | *
21 | * @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html
22 | *
23 | * @experimental
24 | *
25 | * @author Baptiste Meyer
26 | */
27 | interface RequestBodySearchCollectionExtensionInterface
28 | {
29 | public function applyToCollection(array $requestBody, string $resourceClass, ?Operation $operation = null, array $context = []): array;
30 | }
31 |
--------------------------------------------------------------------------------
/src/Elasticsearch/Filter/ConstantScoreFilterInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Elasticsearch\Filter;
15 |
16 | /**
17 | * Elasticsearch filter interface for a constant score query.
18 | *
19 | * @experimental
20 | *
21 | * @author Baptiste Meyer
22 | */
23 | interface ConstantScoreFilterInterface extends FilterInterface
24 | {
25 | }
26 |
--------------------------------------------------------------------------------
/src/Elasticsearch/Filter/FilterInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Elasticsearch\Filter;
15 |
16 | use ApiPlatform\Metadata\FilterInterface as BaseFilterInterface;
17 | use ApiPlatform\Metadata\Operation;
18 |
19 | /**
20 | * Elasticsearch filter interface.
21 | *
22 | * @experimental
23 | *
24 | * @author Baptiste Meyer
25 | */
26 | interface FilterInterface extends BaseFilterInterface
27 | {
28 | public function apply(array $clauseBody, string $resourceClass, ?Operation $operation = null, array $context = []): array;
29 | }
30 |
--------------------------------------------------------------------------------
/src/Elasticsearch/Filter/SortFilterInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\Elasticsearch\Filter;
15 |
16 | /**
17 | * Elasticsearch filter interface for sorting.
18 | *
19 | * @experimental
20 | *
21 | * @author Baptiste Meyer
22 | */
23 | interface SortFilterInterface extends FilterInterface
24 | {
25 | }
26 |
--------------------------------------------------------------------------------
/src/Elasticsearch/README.md:
--------------------------------------------------------------------------------
1 | # API Platform - Elasticsearch Support
2 |
3 | Integration for [Elasticsearch](https://www.elastic.co/elasticsearch) with the [API Platform](https://api-platform.com) framework.
4 |
5 | [Documentation](https://api-platform.com/docs/core/elasticsearch/)
6 |
7 | > [!CAUTION]
8 | >
9 | > This is a read-only sub split of `api-platform/core`, please
10 | > [report issues](https://github.com/api-platform/core/issues) and
11 | > [send Pull Requests](https://github.com/api-platform/core/pulls)
12 | > in the [core API Platform repository](https://github.com/api-platform/core).
13 |
--------------------------------------------------------------------------------
/src/GraphQl/Error/ErrorHandler.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\GraphQl\Error;
15 |
16 | /**
17 | * Handles the errors thrown by the GraphQL library by applying the formatter to them (default behavior).
18 | *
19 | * @author Ollie Harridge
20 | */
21 | final class ErrorHandler implements ErrorHandlerInterface
22 | {
23 | /**
24 | * {@inheritdoc}
25 | */
26 | public function __invoke(array $errors, callable $formatter): array
27 | {
28 | return array_map($formatter, $errors);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/GraphQl/Error/ErrorHandlerInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\GraphQl\Error;
15 |
16 | use GraphQL\Error\Error;
17 |
18 | /**
19 | * Handles the errors thrown by the GraphQL library.
20 | * It is responsible for applying the formatter to the errors and can be used for filtering or logging them.
21 | *
22 | * @author Ollie Harridge
23 | */
24 | interface ErrorHandlerInterface
25 | {
26 | /**
27 | * @param Error[] $errors
28 | */
29 | public function __invoke(array $errors, callable $formatter): array;
30 | }
31 |
--------------------------------------------------------------------------------
/src/GraphQl/Exception/InvalidTypeException.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\GraphQl\Exception;
15 |
16 | final class InvalidTypeException extends \RuntimeException
17 | {
18 | }
19 |
--------------------------------------------------------------------------------
/src/GraphQl/ExecutorInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\GraphQl;
15 |
16 | use GraphQL\Executor\ExecutionResult;
17 | use GraphQL\Type\Schema;
18 |
19 | /**
20 | * Wrapper for the GraphQL facade.
21 | *
22 | * @author Alan Poulain
23 | */
24 | interface ExecutorInterface
25 | {
26 | /**
27 | * @see http://webonyx.github.io/graphql-php/executing-queries/#using-facade-method
28 | */
29 | public function executeQuery(Schema $schema, $source, mixed $rootValue = null, mixed $context = null, ?array $variableValues = null, ?string $operationName = null, ?callable $fieldResolver = null, ?array $validationRules = null): ExecutionResult;
30 | }
31 |
--------------------------------------------------------------------------------
/src/GraphQl/README.md:
--------------------------------------------------------------------------------
1 | # API Platform - GraphQL
2 |
3 | The [GraphQL](https://graphql.org/) component of the [API Platform](https://api-platform.com) framework.
4 |
5 | [Documentation](https://api-platform.com/docs/core/graphql/)
6 |
7 | > [!CAUTION]
8 | >
9 | > This is a read-only sub split of `api-platform/core`, please
10 | > [report issues](https://github.com/api-platform/core/issues) and
11 | > [send Pull Requests](https://github.com/api-platform/core/pulls)
12 | > in the [core API Platform repository](https://github.com/api-platform/core).
13 |
--------------------------------------------------------------------------------
/src/GraphQl/Resolver/Factory/ResolverFactoryInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\GraphQl\Resolver\Factory;
15 |
16 | use ApiPlatform\Metadata\GraphQl\Operation;
17 | use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface;
18 |
19 | /**
20 | * Builds a GraphQL resolver.
21 | *
22 | * @author Kévin Dunglas
23 | */
24 | interface ResolverFactoryInterface
25 | {
26 | public function __invoke(?string $resourceClass = null, ?string $rootClass = null, ?Operation $operation = null, ?PropertyMetadataFactoryInterface $propertyMetadataFactory = null): callable;
27 | }
28 |
--------------------------------------------------------------------------------
/src/GraphQl/Resolver/MutationResolverInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\GraphQl\Resolver;
15 |
16 | /**
17 | * A function resolving a GraphQL mutation.
18 | *
19 | * @author Raoul Clais
20 | */
21 | interface MutationResolverInterface
22 | {
23 | public function __invoke(?object $item, array $context): ?object;
24 | }
25 |
--------------------------------------------------------------------------------
/src/GraphQl/Resolver/QueryCollectionResolverInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | declare(strict_types=1);
13 |
14 | namespace ApiPlatform\GraphQl\Resolver;
15 |
16 | /**
17 | * A function resolving a GraphQL query of a collection.
18 | *
19 | * @author Alan Poulain
20 | */
21 | interface QueryCollectionResolverInterface
22 | {
23 | /**
24 | * @param iterable