jsonapi.services.yml

Same filename and directory in other branches
  1. 9 core/modules/jsonapi/jsonapi.services.yml
  2. 8.9.x core/modules/jsonapi/jsonapi.services.yml
  3. 11.x core/modules/jsonapi/jsonapi.services.yml
core/modules/jsonapi/jsonapi.services.yml

File

core/modules/jsonapi/jsonapi.services.yml

View source
  1. parameters:
  2. jsonapi.base_path: /jsonapi
  3. services:
  4. _defaults:
  5. autoconfigure: true
  6. jsonapi.serializer:
  7. class: Drupal\jsonapi\Serializer\Serializer
  8. calls:
  9. - [setFallbackNormalizer, ['@serializer']]
  10. arguments: [{ }, { }]
  11. serializer.normalizer.http_exception.jsonapi:
  12. class: Drupal\jsonapi\Normalizer\HttpExceptionNormalizer
  13. arguments: ['@current_user']
  14. tags:
  15. - { name: jsonapi_normalizer }
  16. serializer.normalizer.unprocessable_entity_exception.jsonapi:
  17. class: Drupal\jsonapi\Normalizer\UnprocessableHttpEntityExceptionNormalizer
  18. arguments: ['@current_user']
  19. tags:
  20. # This must have a higher priority than the 'serializer.normalizer.http_exception.jsonapi' to take effect.
  21. - { name: jsonapi_normalizer, priority: 1 }
  22. serializer.normalizer.entity_access_exception.jsonapi:
  23. class: Drupal\jsonapi\Normalizer\EntityAccessDeniedHttpExceptionNormalizer
  24. arguments: ['@current_user']
  25. tags:
  26. # This must have a higher priority than the 'serializer.normalizer.http_exception.jsonapi' to take effect.
  27. - { name: jsonapi_normalizer, priority: 1 }
  28. serializer.normalizer.field_item.jsonapi:
  29. class: Drupal\jsonapi\Normalizer\FieldItemNormalizer
  30. arguments: ['@entity_type.manager']
  31. tags:
  32. - { name: jsonapi_normalizer }
  33. serializer.normalizer.field.jsonapi:
  34. class: Drupal\jsonapi\Normalizer\FieldNormalizer
  35. tags:
  36. - { name: jsonapi_normalizer }
  37. serializer.normalizer.resource_identifier.jsonapi:
  38. class: Drupal\jsonapi\Normalizer\ResourceIdentifierNormalizer
  39. arguments: ['@entity_field.manager']
  40. tags:
  41. - { name: jsonapi_normalizer }
  42. serializer.normalizer.data.jsonapi:
  43. class: Drupal\jsonapi\Normalizer\DataNormalizer
  44. tags:
  45. - { name: jsonapi_normalizer }
  46. serializer.normalizer.resource_object.jsonapi:
  47. class: Drupal\jsonapi\Normalizer\ResourceObjectNormalizer
  48. arguments: ['@jsonapi.normalization_cacher']
  49. tags:
  50. - { name: jsonapi_normalizer }
  51. jsonapi.normalization_cacher:
  52. class: Drupal\jsonapi\EventSubscriber\ResourceObjectNormalizationCacher
  53. calls:
  54. - ['setVariationCache', ['@variation_cache.jsonapi_normalizations']]
  55. - ['setRequestStack', ['@request_stack']]
  56. serializer.normalizer.content_entity.jsonapi:
  57. class: Drupal\jsonapi\Normalizer\ContentEntityDenormalizer
  58. arguments: ['@entity_type.manager', '@entity_field.manager', '@plugin.manager.field.field_type']
  59. tags:
  60. - { name: jsonapi_normalizer }
  61. serializer.normalizer.config_entity.jsonapi:
  62. class: Drupal\jsonapi\Normalizer\ConfigEntityDenormalizer
  63. arguments: ['@entity_type.manager', '@entity_field.manager', '@plugin.manager.field.field_type']
  64. tags:
  65. - { name: jsonapi_normalizer }
  66. serializer.normalizer.jsonapi_document_toplevel.jsonapi:
  67. class: Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer
  68. arguments: ['@entity_type.manager', '@jsonapi.resource_type.repository']
  69. tags:
  70. - { name: jsonapi_normalizer }
  71. serializer.normalizer.link_collection.jsonapi:
  72. class: Drupal\jsonapi\Normalizer\LinkCollectionNormalizer
  73. arguments: ['@current_user']
  74. tags:
  75. - { name: jsonapi_normalizer }
  76. serializer.normalizer.relationship.jsonapi:
  77. class: Drupal\jsonapi\Normalizer\RelationshipNormalizer
  78. tags:
  79. - { name: jsonapi_normalizer }
  80. serializer.encoder.jsonapi:
  81. class: Drupal\jsonapi\Encoder\JsonEncoder
  82. tags:
  83. - { name: jsonapi_encoder, format: 'api_json' }
  84. jsonapi.resource_type.repository:
  85. class: Drupal\jsonapi\ResourceType\ResourceTypeRepository
  86. arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@cache.jsonapi_resource_types', '@event_dispatcher']
  87. Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface: '@jsonapi.resource_type.repository'
  88. jsonapi.route_enhancer:
  89. class: Drupal\jsonapi\Routing\RouteEnhancer
  90. tags:
  91. - { name: route_enhancer }
  92. jsonapi.field_resolver:
  93. class: Drupal\jsonapi\Context\FieldResolver
  94. arguments: ['@entity_type.manager', '@entity_field.manager', '@entity_type.bundle.info', '@jsonapi.resource_type.repository', '@module_handler', '@current_user']
  95. Drupal\jsonapi\Context\FieldResolver: '@jsonapi.field_resolver'
  96. jsonapi.include_resolver:
  97. class: Drupal\jsonapi\IncludeResolver
  98. arguments:
  99. - '@entity_type.manager'
  100. - '@jsonapi.entity_access_checker'
  101. Drupal\jsonapi\IncludeResolver: '@jsonapi.include_resolver'
  102. paramconverter.jsonapi.entity_uuid:
  103. parent: paramconverter.entity
  104. class: Drupal\jsonapi\ParamConverter\EntityUuidConverter
  105. calls:
  106. - [setLanguageManager, ['@language_manager']]
  107. tags:
  108. # Priority 10, to ensure it runs before @paramconverter.entity.
  109. - { name: paramconverter, priority: 10 }
  110. paramconverter.jsonapi.resource_type:
  111. class: Drupal\jsonapi\ParamConverter\ResourceTypeConverter
  112. arguments: ['@jsonapi.resource_type.repository']
  113. tags:
  114. - { name: paramconverter }
  115. jsonapi.exception_subscriber:
  116. class: Drupal\jsonapi\EventSubscriber\DefaultExceptionSubscriber
  117. arguments: ['@jsonapi.serializer', '%serializer.formats%']
  118. logger.channel.jsonapi:
  119. parent: logger.channel_base
  120. arguments: ['jsonapi']
  121. # Cache.
  122. cache.jsonapi_memory:
  123. class: Drupal\Core\Cache\MemoryCache\MemoryCacheInterface
  124. tags:
  125. - { name: cache.bin.memory, default_backend: cache.backend.memory.memory }
  126. factory: ['@cache_factory', 'get']
  127. arguments: [jsonapi_memory]
  128. # A chained cache with an in-memory cache as the first layer and a database-
  129. # backed cache as the fallback is used. The first layer (memory) is necessary
  130. # because ResourceType value objects are retrieved many times during a
  131. # request. The second layer (by default a database) is necessary to avoid
  132. # recomputing the ResourceType value objects on every request.
  133. cache.jsonapi_resource_types:
  134. class: Drupal\Core\Cache\BackendChain
  135. calls:
  136. - [appendBackend, ['@cache.jsonapi_memory']]
  137. - [appendBackend, ['@cache.default']]
  138. tags: [{ name: cache.bin.memory }]
  139. cache.jsonapi_normalizations:
  140. class: Drupal\Core\Cache\CacheBackendInterface
  141. tags:
  142. - { name: cache.bin }
  143. factory: ['@cache_factory', 'get']
  144. arguments: [jsonapi_normalizations]
  145. variation_cache.jsonapi_normalizations:
  146. class: Drupal\Core\Cache\VariationCacheInterface
  147. factory: ['@variation_cache_factory', 'get']
  148. arguments: [jsonapi_normalizations]
  149. # Route filter.
  150. jsonapi.route_filter.format_setter:
  151. class: Drupal\jsonapi\Routing\EarlyFormatSetter
  152. tags:
  153. # Set to a high priority so it runs before content_type_header_matcher
  154. # and other filters that might throw exceptions.
  155. - { name: route_filter, priority: 100 }
  156. # Access Control
  157. jsonapi.entity_access_checker:
  158. class: Drupal\jsonapi\Access\EntityAccessChecker
  159. public: false
  160. arguments: ['@jsonapi.resource_type.repository', '@router.no_access_checks', '@current_user', '@entity.repository']
  161. calls:
  162. # This is a temporary measure. JSON:API should not need to be aware of the Content Moderation module.
  163. - [setLatestRevisionCheck, ['@?access_check.latest_revision']] # This is only injected when the service is available.
  164. Drupal\jsonapi\Access\EntityAccessChecker: '@jsonapi.entity_access_checker'
  165. access_check.jsonapi.relationship_route_access:
  166. class: Drupal\jsonapi\Access\RelationshipRouteAccessCheck
  167. arguments: ['@jsonapi.entity_access_checker']
  168. tags:
  169. - { name: access_check, applies_to: _jsonapi_relationship_route_access }
  170. # Route filters.
  171. method_filter.jsonapi:
  172. public: false
  173. class: Drupal\jsonapi\Routing\ReadOnlyModeMethodFilter
  174. decorates: method_filter
  175. arguments: ['@method_filter.jsonapi.inner', '@config.factory']
  176. # Controller.
  177. jsonapi.entity_resource:
  178. class: Drupal\jsonapi\Controller\EntityResource
  179. arguments:
  180. - '@entity_type.manager'
  181. - '@entity_field.manager'
  182. - '@jsonapi.resource_type.repository'
  183. - '@renderer'
  184. - '@entity.repository'
  185. - '@jsonapi.include_resolver'
  186. - '@jsonapi.entity_access_checker'
  187. - '@jsonapi.field_resolver'
  188. - '@jsonapi.serializer'
  189. - '@datetime.time'
  190. - '@current_user'
  191. Drupal\jsonapi\Controller\EntityResource: '@jsonapi.entity_resource'
  192. jsonapi.file_upload:
  193. class: Drupal\jsonapi\Controller\FileUpload
  194. arguments:
  195. - '@current_user'
  196. - '@entity_field.manager'
  197. - '@file.upload_handler'
  198. - '@http_kernel'
  199. - '@file.input_stream_file_writer'
  200. - '@file_system'
  201. Drupal\jsonapi\Controller\FileUpload: '@jsonapi.file_upload'
  202. # Event subscribers.
  203. jsonapi.custom_query_parameter_names_validator.subscriber:
  204. class: Drupal\jsonapi\EventSubscriber\JsonApiRequestValidator
  205. jsonapi.resource_response.subscriber:
  206. class: Drupal\jsonapi\EventSubscriber\ResourceResponseSubscriber
  207. arguments: ['@jsonapi.serializer']
  208. jsonapi.resource_response_validator.subscriber:
  209. class: Drupal\jsonapi\EventSubscriber\ResourceResponseValidator
  210. arguments: ['@logger.channel.jsonapi', '@module_handler', '%app.root%']
  211. calls:
  212. - [setValidator, []]
  213. jsonapi.maintenance_mode_subscriber:
  214. class: Drupal\jsonapi\EventSubscriber\JsonapiMaintenanceModeSubscriber
  215. arguments: ['@maintenance_mode', '@config.factory']
  216. # Revision management.
  217. jsonapi.version_negotiator:
  218. class: Drupal\jsonapi\Revisions\VersionNegotiator
  219. public: false
  220. tags:
  221. - { name: service_collector, tag: jsonapi_version_negotiator, call: addVersionNegotiator }
  222. Drupal\jsonapi\Revisions\VersionNegotiator: '@jsonapi.version_negotiator'
  223. jsonapi.version_negotiator.default:
  224. arguments: ['@entity_type.manager']
  225. public: false
  226. abstract: true
  227. jsonapi.version_negotiator.id:
  228. class: Drupal\jsonapi\Revisions\VersionById
  229. parent: jsonapi.version_negotiator.default
  230. tags:
  231. - { name: jsonapi_version_negotiator, negotiator_name: 'id' }
  232. jsonapi.version_negotiator.rel:
  233. class: Drupal\jsonapi\Revisions\VersionByRel
  234. parent: jsonapi.version_negotiator.default
  235. tags:
  236. - { name: jsonapi_version_negotiator, negotiator_name: 'rel' }
  237. jsonapi.resource_version.route_enhancer:
  238. class: Drupal\jsonapi\Revisions\ResourceVersionRouteEnhancer
  239. public: false
  240. arguments:
  241. - '@jsonapi.version_negotiator'
  242. tags:
  243. - { name: route_enhancer }

Services

Title Deprecated Summary
access_check.jsonapi.relationship_route_access Drupal\jsonapi\Access\RelationshipRouteAccessCheck
cache.jsonapi_memory Drupal\Core\Cache\MemoryCache\MemoryCacheInterface
cache.jsonapi_normalizations Drupal\Core\Cache\CacheBackendInterface
cache.jsonapi_resource_types Drupal\Core\Cache\BackendChain
Drupal\jsonapi\Access\EntityAccessChecker
Drupal\jsonapi\Context\FieldResolver
Drupal\jsonapi\Controller\EntityResource
Drupal\jsonapi\Controller\FileUpload
Drupal\jsonapi\IncludeResolver
Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface
Drupal\jsonapi\Revisions\VersionNegotiator
jsonapi.custom_query_parameter_names_validator.subscriber Drupal\jsonapi\EventSubscriber\JsonApiRequestValidator
jsonapi.entity_access_checker Drupal\jsonapi\Access\EntityAccessChecker
jsonapi.entity_resource Drupal\jsonapi\Controller\EntityResource
jsonapi.exception_subscriber Drupal\jsonapi\EventSubscriber\DefaultExceptionSubscriber
jsonapi.field_resolver Drupal\jsonapi\Context\FieldResolver
jsonapi.file_upload Drupal\jsonapi\Controller\FileUpload
jsonapi.include_resolver Drupal\jsonapi\IncludeResolver
jsonapi.maintenance_mode_subscriber Drupal\jsonapi\EventSubscriber\JsonapiMaintenanceModeSubscriber
jsonapi.normalization_cacher Drupal\jsonapi\EventSubscriber\ResourceObjectNormalizationCacher
jsonapi.resource_response.subscriber Drupal\jsonapi\EventSubscriber\ResourceResponseSubscriber
jsonapi.resource_response_validator.subscriber Drupal\jsonapi\EventSubscriber\ResourceResponseValidator
jsonapi.resource_type.repository Drupal\jsonapi\ResourceType\ResourceTypeRepository
jsonapi.resource_version.route_enhancer Drupal\jsonapi\Revisions\ResourceVersionRouteEnhancer
jsonapi.route_enhancer Drupal\jsonapi\Routing\RouteEnhancer
jsonapi.route_filter.format_setter Drupal\jsonapi\Routing\EarlyFormatSetter
jsonapi.serializer Drupal\jsonapi\Serializer\Serializer
jsonapi.version_negotiator Drupal\jsonapi\Revisions\VersionNegotiator
jsonapi.version_negotiator.default Abstract
jsonapi.version_negotiator.id Drupal\jsonapi\Revisions\VersionById
jsonapi.version_negotiator.rel Drupal\jsonapi\Revisions\VersionByRel
logger.channel.jsonapi
method_filter.jsonapi Drupal\jsonapi\Routing\ReadOnlyModeMethodFilter
paramconverter.jsonapi.entity_uuid Drupal\jsonapi\ParamConverter\EntityUuidConverter
paramconverter.jsonapi.resource_type Drupal\jsonapi\ParamConverter\ResourceTypeConverter
serializer.encoder.jsonapi Drupal\jsonapi\Encoder\JsonEncoder
serializer.normalizer.config_entity.jsonapi Drupal\jsonapi\Normalizer\ConfigEntityDenormalizer
serializer.normalizer.content_entity.jsonapi Drupal\jsonapi\Normalizer\ContentEntityDenormalizer
serializer.normalizer.data.jsonapi Drupal\jsonapi\Normalizer\DataNormalizer
serializer.normalizer.entity_access_exception.jsonapi Drupal\jsonapi\Normalizer\EntityAccessDeniedHttpExceptionNormalizer
serializer.normalizer.field.jsonapi Drupal\jsonapi\Normalizer\FieldNormalizer
serializer.normalizer.field_item.jsonapi Drupal\jsonapi\Normalizer\FieldItemNormalizer
serializer.normalizer.http_exception.jsonapi Drupal\jsonapi\Normalizer\HttpExceptionNormalizer
serializer.normalizer.jsonapi_document_toplevel.jsonapi Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer
serializer.normalizer.link_collection.jsonapi Drupal\jsonapi\Normalizer\LinkCollectionNormalizer
serializer.normalizer.relationship.jsonapi Drupal\jsonapi\Normalizer\RelationshipNormalizer
serializer.normalizer.resource_identifier.jsonapi Drupal\jsonapi\Normalizer\ResourceIdentifierNormalizer
serializer.normalizer.resource_object.jsonapi Drupal\jsonapi\Normalizer\ResourceObjectNormalizer
serializer.normalizer.unprocessable_entity_exception.jsonapi Drupal\jsonapi\Normalizer\UnprocessableHttpEntityExceptionNormalizer
variation_cache.jsonapi_normalizations Drupal\Core\Cache\VariationCacheInterface

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.