jsonapi.services.yml

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

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