jsonapi.services.yml

Same filename in other branches
  1. 9 core/modules/jsonapi/jsonapi.services.yml
  2. 8.9.x core/modules/jsonapi/jsonapi.services.yml
  3. 10 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:
  49. - '@jsonapi.normalization_cacher'
  50. - '@event_dispatcher'
  51. - '@entity_field.manager'
  52. - '@entity_type.manager'
  53. tags:
  54. - { name: jsonapi_normalizer }
  55. jsonapi.normalization_cacher:
  56. class: Drupal\jsonapi\EventSubscriber\ResourceObjectNormalizationCacher
  57. calls:
  58. - ['setVariationCache', ['@variation_cache.jsonapi_normalizations']]
  59. - ['setRequestStack', ['@request_stack']]
  60. serializer.normalizer.content_entity.jsonapi:
  61. class: Drupal\jsonapi\Normalizer\ContentEntityDenormalizer
  62. arguments: ['@entity_type.manager', '@entity_field.manager', '@plugin.manager.field.field_type']
  63. tags:
  64. - { name: jsonapi_normalizer }
  65. serializer.normalizer.config_entity.jsonapi:
  66. class: Drupal\jsonapi\Normalizer\ConfigEntityDenormalizer
  67. arguments: ['@entity_type.manager', '@entity_field.manager', '@plugin.manager.field.field_type']
  68. tags:
  69. - { name: jsonapi_normalizer }
  70. serializer.normalizer.jsonapi_document_toplevel.jsonapi:
  71. class: Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer
  72. arguments: ['@entity_type.manager', '@jsonapi.resource_type.repository']
  73. tags:
  74. - { name: jsonapi_normalizer }
  75. serializer.normalizer.link_collection.jsonapi:
  76. class: Drupal\jsonapi\Normalizer\LinkCollectionNormalizer
  77. arguments: ['@current_user']
  78. tags:
  79. - { name: jsonapi_normalizer }
  80. serializer.normalizer.relationship.jsonapi:
  81. class: Drupal\jsonapi\Normalizer\RelationshipNormalizer
  82. tags:
  83. - { name: jsonapi_normalizer }
  84. arguments: ['@jsonapi.resource_type.repository']
  85. serializer.encoder.jsonapi:
  86. class: Drupal\jsonapi\Encoder\JsonEncoder
  87. tags:
  88. - { name: jsonapi_encoder, format: 'api_json' }
  89. jsonapi.resource_type.repository:
  90. class: Drupal\jsonapi\ResourceType\ResourceTypeRepository
  91. arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@cache.jsonapi_resource_types', '@event_dispatcher']
  92. Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface: '@jsonapi.resource_type.repository'
  93. jsonapi.route_enhancer:
  94. class: Drupal\jsonapi\Routing\RouteEnhancer
  95. tags:
  96. - { name: route_enhancer }
  97. jsonapi.field_resolver:
  98. class: Drupal\jsonapi\Context\FieldResolver
  99. arguments: ['@entity_type.manager', '@entity_field.manager', '@entity_type.bundle.info', '@jsonapi.resource_type.repository', '@module_handler', '@current_user']
  100. Drupal\jsonapi\Context\FieldResolver: '@jsonapi.field_resolver'
  101. jsonapi.include_resolver:
  102. class: Drupal\jsonapi\IncludeResolver
  103. arguments:
  104. - '@entity_type.manager'
  105. - '@jsonapi.entity_access_checker'
  106. Drupal\jsonapi\IncludeResolver: '@jsonapi.include_resolver'
  107. paramconverter.jsonapi.entity_uuid:
  108. parent: paramconverter.entity
  109. class: Drupal\jsonapi\ParamConverter\EntityUuidConverter
  110. calls:
  111. - [setLanguageManager, ['@language_manager']]
  112. tags:
  113. # Priority 10, to ensure it runs before @paramconverter.entity.
  114. - { name: paramconverter, priority: 10 }
  115. paramconverter.jsonapi.resource_type:
  116. class: Drupal\jsonapi\ParamConverter\ResourceTypeConverter
  117. arguments: ['@jsonapi.resource_type.repository']
  118. tags:
  119. - { name: paramconverter }
  120. jsonapi.exception_subscriber:
  121. class: Drupal\jsonapi\EventSubscriber\DefaultExceptionSubscriber
  122. arguments: ['@jsonapi.serializer', '%serializer.formats%']
  123. logger.channel.jsonapi:
  124. parent: logger.channel_base
  125. arguments: ['jsonapi']
  126. # Cache.
  127. cache.jsonapi_memory:
  128. class: Drupal\Core\Cache\MemoryCache\MemoryCacheInterface
  129. tags:
  130. - { name: cache.bin.memory, default_backend: cache.backend.memory.memory }
  131. factory: ['@cache_factory', 'get']
  132. arguments: [jsonapi_memory]
  133. # A chained cache with an in-memory cache as the first layer and a database-
  134. # backed cache as the fallback is used. The first layer (memory) is necessary
  135. # because ResourceType value objects are retrieved many times during a
  136. # request. The second layer (by default a database) is necessary to avoid
  137. # recomputing the ResourceType value objects on every request.
  138. cache.jsonapi_resource_types:
  139. class: Drupal\Core\Cache\BackendChain
  140. calls:
  141. - [appendBackend, ['@cache.jsonapi_memory']]
  142. - [appendBackend, ['@cache.default']]
  143. tags: [{ name: cache.bin.memory }]
  144. cache.jsonapi_normalizations:
  145. class: Drupal\Core\Cache\CacheBackendInterface
  146. tags:
  147. - { name: cache.bin }
  148. factory: ['@cache_factory', 'get']
  149. arguments: [jsonapi_normalizations]
  150. variation_cache.jsonapi_normalizations:
  151. class: Drupal\Core\Cache\VariationCacheInterface
  152. factory: ['@variation_cache_factory', 'get']
  153. arguments: [jsonapi_normalizations]
  154. # Route filter.
  155. jsonapi.route_filter.format_setter:
  156. class: Drupal\jsonapi\Routing\EarlyFormatSetter
  157. tags:
  158. # Set to a high priority so it runs before content_type_header_matcher
  159. # and other filters that might throw exceptions.
  160. - { name: route_filter, priority: 100 }
  161. # Access Control
  162. jsonapi.entity_access_checker:
  163. class: Drupal\jsonapi\Access\EntityAccessChecker
  164. public: false
  165. arguments: ['@jsonapi.resource_type.repository', '@router.no_access_checks', '@current_user', '@entity.repository']
  166. calls:
  167. # This is a temporary measure. JSON:API should not need to be aware of the Content Moderation module.
  168. - [setLatestRevisionCheck, ['@?access_check.latest_revision']] # This is only injected when the service is available.
  169. Drupal\jsonapi\Access\EntityAccessChecker: '@jsonapi.entity_access_checker'
  170. access_check.jsonapi.relationship_route_access:
  171. class: Drupal\jsonapi\Access\RelationshipRouteAccessCheck
  172. arguments: ['@jsonapi.entity_access_checker']
  173. tags:
  174. - { name: access_check, applies_to: _jsonapi_relationship_route_access }
  175. # Route filters.
  176. method_filter.jsonapi:
  177. public: false
  178. class: Drupal\jsonapi\Routing\ReadOnlyModeMethodFilter
  179. decorates: method_filter
  180. arguments: ['@method_filter.jsonapi.inner', '@config.factory']
  181. # Controller.
  182. jsonapi.entity_resource:
  183. class: Drupal\jsonapi\Controller\EntityResource
  184. arguments:
  185. - '@entity_type.manager'
  186. - '@entity_field.manager'
  187. - '@jsonapi.resource_type.repository'
  188. - '@renderer'
  189. - '@entity.repository'
  190. - '@jsonapi.include_resolver'
  191. - '@jsonapi.entity_access_checker'
  192. - '@jsonapi.field_resolver'
  193. - '@jsonapi.serializer'
  194. - '@datetime.time'
  195. - '@current_user'
  196. - '@event_dispatcher'
  197. Drupal\jsonapi\Controller\EntityResource: '@jsonapi.entity_resource'
  198. jsonapi.file_upload:
  199. class: Drupal\jsonapi\Controller\FileUpload
  200. autowire: true
  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.