You are here

jsonapi.services.yml in JSON:API 8.2

Same filename and directory in other branches
  1. 8 jsonapi.services.yml

File

jsonapi.services.yml
View source
  1. parameters:
  2. jsonapi.base_path: /jsonapi
  3. services:
  4. jsonapi.serializer:
  5. class: Drupal\jsonapi\Serializer\Serializer
  6. calls:
  7. - [setFallbackNormalizer, ['@serializer']]
  8. arguments: [{ }, { }]
  9. serializer.normalizer.http_exception.jsonapi:
  10. class: Drupal\jsonapi\Normalizer\HttpExceptionNormalizer
  11. arguments: ['@current_user']
  12. tags:
  13. - { name: jsonapi_normalizer }
  14. serializer.normalizer.unprocessable_entity_exception.jsonapi:
  15. class: Drupal\jsonapi\Normalizer\UnprocessableHttpEntityExceptionNormalizer
  16. arguments: ['@current_user']
  17. tags:
  18. # This must have a higher priority than the 'serializer.normalizer.http_exception.jsonapi' to take effect.
  19. - { name: jsonapi_normalizer, priority: 1 }
  20. serializer.normalizer.entity_access_exception.jsonapi:
  21. class: Drupal\jsonapi\Normalizer\EntityAccessDeniedHttpExceptionNormalizer
  22. arguments: ['@current_user']
  23. tags:
  24. # This must have a higher priority than the 'serializer.normalizer.http_exception.jsonapi' to take effect.
  25. - { name: jsonapi_normalizer, priority: 1 }
  26. serializer.normalizer.field_item.jsonapi:
  27. class: Drupal\jsonapi\Normalizer\FieldItemNormalizer
  28. arguments: ['@entity_type.manager']
  29. tags:
  30. - { name: jsonapi_normalizer }
  31. serializer.normalizer.field.jsonapi:
  32. class: Drupal\jsonapi\Normalizer\FieldNormalizer
  33. tags:
  34. - { name: jsonapi_normalizer }
  35. serializer.normalizer.resource_identifier.jsonapi:
  36. class: Drupal\jsonapi\Normalizer\ResourceIdentifierNormalizer
  37. arguments: ['@entity_field.manager']
  38. tags:
  39. - { name: jsonapi_normalizer }
  40. serializer.normalizer.data.jsonapi:
  41. class: Drupal\jsonapi\Normalizer\DataNormalizer
  42. tags:
  43. - { name: jsonapi_normalizer }
  44. serializer.normalizer.resource_object.jsonapi:
  45. class: Drupal\jsonapi\Normalizer\ResourceObjectNormalizer
  46. tags:
  47. - { name: jsonapi_normalizer }
  48. serializer.normalizer.content_entity.jsonapi:
  49. class: Drupal\jsonapi\Normalizer\ContentEntityDenormalizer
  50. arguments: ['@entity_type.manager', '@entity_field.manager', '@plugin.manager.field.field_type']
  51. tags:
  52. - { name: jsonapi_normalizer }
  53. serializer.normalizer.config_entity.jsonapi:
  54. class: Drupal\jsonapi\Normalizer\ConfigEntityDenormalizer
  55. arguments: ['@entity_type.manager', '@entity_field.manager', '@plugin.manager.field.field_type']
  56. tags:
  57. - { name: jsonapi_normalizer }
  58. serializer.normalizer.jsonapi_document_toplevel.jsonapi:
  59. class: Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer
  60. arguments: ['@entity_type.manager', '@jsonapi.resource_type.repository']
  61. tags:
  62. - { name: jsonapi_normalizer }
  63. serializer.normalizer.link_collection.jsonapi:
  64. class: Drupal\jsonapi\Normalizer\LinkCollectionNormalizer
  65. tags:
  66. - { name: jsonapi_normalizer }
  67. serializer.normalizer.entity_reference_field.jsonapi:
  68. class: Drupal\jsonapi\Normalizer\EntityReferenceFieldNormalizer
  69. tags:
  70. # This must have a higher priority than the 'serializer.normalizer.field.jsonapi' to take effect.
  71. - { name: jsonapi_normalizer, priority: 1 }
  72. serializer.encoder.jsonapi:
  73. class: Drupal\jsonapi\Encoder\JsonEncoder
  74. tags:
  75. - { name: jsonapi_encoder, format: 'api_json' }
  76. jsonapi.resource_type.repository:
  77. class: Drupal\jsonapi\ResourceType\ResourceTypeRepository
  78. arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@cache.jsonapi_resource_types']
  79. jsonapi.route_enhancer:
  80. class: Drupal\jsonapi\Routing\RouteEnhancer
  81. tags:
  82. - { name: route_enhancer }
  83. jsonapi.field_resolver:
  84. class: Drupal\jsonapi\Context\FieldResolver
  85. arguments: ['@entity_type.manager', '@entity_field.manager', '@entity_type.bundle.info', '@jsonapi.resource_type.repository', '@module_handler']
  86. jsonapi.include_resolver:
  87. class: Drupal\jsonapi\IncludeResolver
  88. arguments:
  89. - '@entity_type.manager'
  90. - '@jsonapi.entity_access_checker'
  91. paramconverter.jsonapi.entity_uuid:
  92. parent: paramconverter.entity
  93. class: Drupal\jsonapi\ParamConverter\EntityUuidConverter
  94. calls:
  95. - [setLanguageManager, ['@language_manager']]
  96. tags:
  97. # Priority 10, to ensure it runs before @paramconverter.entity.
  98. - { name: paramconverter, priority: 10 }
  99. paramconverter.jsonapi.resource_type:
  100. class: Drupal\jsonapi\ParamConverter\ResourceTypeConverter
  101. arguments: ['@jsonapi.resource_type.repository']
  102. tags:
  103. - { name: paramconverter }
  104. jsonapi.exception_subscriber:
  105. class: Drupal\jsonapi\EventSubscriber\DefaultExceptionSubscriber
  106. tags:
  107. - { name: event_subscriber }
  108. arguments: ['@jsonapi.serializer', '%serializer.formats%']
  109. logger.channel.jsonapi:
  110. parent: logger.channel_base
  111. arguments: ['jsonapi']
  112. # Cache.
  113. cache.jsonapi_resource_types:
  114. class: Drupal\Core\Cache\MemoryCache\MemoryCache
  115. # We need this to add this to the Drupal's cache_tags.invalidator service.
  116. # This way it can invalidate the data in here based on tags.
  117. tags: [{ name: cache.bin }]
  118. # Middleware.
  119. jsonapi.http_middleware.format_setter:
  120. class: Drupal\jsonapi\StackMiddleware\FormatSetter
  121. tags:
  122. # Set priority to 201 so it happens right before the page cache
  123. # middleware (priority 200) has the opportunity to respond.
  124. - { name: http_middleware, priority: 201 }
  125. # Access Control
  126. jsonapi.entity_access_checker:
  127. class: Drupal\jsonapi\Access\EntityAccessChecker
  128. public: false
  129. arguments: ['@jsonapi.resource_type.repository', '@router.no_access_checks', '@current_user', '@entity.repository']
  130. calls:
  131. - [setNodeRevisionAccessCheck, ['@?access_check.node.revision']] # This is only injected when the service is available.
  132. - [setMediaRevisionAccessCheck, ['@?access_check.media.revision']] # This is only injected when the service is available.
  133. # This is a temporary measure. JSON:API should not need to be aware of the Content Moderation module.
  134. - [setLatestRevisionCheck, ['@?access_check.latest_revision']] # This is only injected when the service is available.
  135. access_check.jsonapi.relationship_field_access:
  136. class: Drupal\jsonapi\Access\RelationshipFieldAccess
  137. arguments: ['@jsonapi.entity_access_checker']
  138. tags:
  139. - { name: access_check, applies_to: _jsonapi_relationship_field_access, needs_incoming_request: TRUE }
  140. # Route filters.
  141. method_filter.jsonapi:
  142. public: false
  143. class: Drupal\jsonapi\Routing\ReadOnlyModeMethodFilter
  144. decorates: method_filter
  145. arguments: ['@method_filter.jsonapi.inner', '@config.factory']
  146. # Controller.
  147. jsonapi.entity_resource:
  148. class: Drupal\jsonapi\Controller\EntityResource
  149. arguments:
  150. - '@entity_type.manager'
  151. - '@entity_field.manager'
  152. - '@jsonapi.resource_type.repository'
  153. - '@renderer'
  154. - '@entity.repository'
  155. - '@jsonapi.include_resolver'
  156. - '@jsonapi.entity_access_checker'
  157. - '@jsonapi.field_resolver'
  158. - '@jsonapi.serializer'
  159. - '@datetime.time'
  160. - '@current_user'
  161. jsonapi.file_upload:
  162. class: Drupal\jsonapi\Controller\FileUpload
  163. arguments:
  164. - '@current_user'
  165. - '@entity_field.manager'
  166. - '@jsonapi.file.uploader.field'
  167. - '@http_kernel'
  168. # Event subscribers.
  169. jsonapi.custom_query_parameter_names_validator.subscriber:
  170. class: Drupal\jsonapi\EventSubscriber\JsonApiRequestValidator
  171. tags:
  172. - { name: event_subscriber }
  173. jsonapi.resource_response.subscriber:
  174. class: Drupal\jsonapi\EventSubscriber\ResourceResponseSubscriber
  175. arguments: ['@jsonapi.serializer']
  176. tags:
  177. - { name: event_subscriber }
  178. jsonapi.resource_response_validator.subscriber:
  179. class: Drupal\jsonapi\EventSubscriber\ResourceResponseValidator
  180. arguments: ['@jsonapi.serializer', '@logger.channel.jsonapi', '@module_handler', '@app.root']
  181. calls:
  182. - [setValidator, []]
  183. - [setSchemaFactory, ['@?schemata.schema_factory']] # This is only injected when the service is available.
  184. tags:
  185. - { name: event_subscriber, priority: 1000 }
  186. # Revision management.
  187. jsonapi.version_negotiator:
  188. class: Drupal\jsonapi\Revisions\VersionNegotiator
  189. public: false
  190. tags:
  191. - { name: service_collector, tag: jsonapi_version_negotiator, call: addVersionNegotiator }
  192. jsonapi.version_negotiator.default:
  193. arguments: ['@entity_type.manager']
  194. public: false
  195. abstract: true
  196. jsonapi.version_negotiator.id:
  197. class: Drupal\jsonapi\Revisions\VersionById
  198. parent: jsonapi.version_negotiator.default
  199. tags:
  200. - { name: jsonapi_version_negotiator, negotiator_name: 'id' }
  201. jsonapi.version_negotiator.rel:
  202. class: Drupal\jsonapi\Revisions\VersionByRel
  203. parent: jsonapi.version_negotiator.default
  204. tags:
  205. - { name: jsonapi_version_negotiator, negotiator_name: 'rel' }
  206. jsonapi.resource_version.route_enhancer:
  207. class: Drupal\jsonapi\Revisions\ResourceVersionRouteEnhancer
  208. public: false
  209. arguments:
  210. - '@jsonapi.version_negotiator'
  211. tags:
  212. - { name: route_enhancer }
  213. # Deprecated services.
  214. serializer.normalizer.htt_exception.jsonapi:
  215. alias: serializer.normalizer.http_exception.jsonapi
  216. deprecated: The "%service_id%" service is deprecated. You should use the 'serializer.normalizer.http_exception.jsonapi' service instead.
  217. # Forward compatibility.
  218. # @todo Remove in Drupal 8.6 (assuming it contains https://www.drupal.org/project/drupal/issues/2926508).
  219. serializer.normalizer.timestamp.jsonapi:
  220. class: \Drupal\jsonapi\ForwardCompatibility\Normalizer\TimestampNormalizer
  221. tags:
  222. # Priority must be higher than serializer.normalizer.primitive_data.
  223. - { name: normalizer, priority: 20, bc: bc_timestamp_normalizer_unix, bc_config_name: 'serialization.settings' }
  224. serializer.normalizer.datetimeiso8601.jsonapi:
  225. class: \Drupal\jsonapi\ForwardCompatibility\Normalizer\DateTimeIso8601Normalizer
  226. tags:
  227. # Priority must be higher than serializer.normalizer.primitive_data.
  228. - { name: normalizer, priority: 20 }
  229. # @todo Remove once https://www.drupal.org/project/drupal/issues/2940383 lands.
  230. jsonapi.file.uploader.field:
  231. class: Drupal\jsonapi\Controller\TemporaryJsonapiFileFieldUploader
  232. public: false
  233. arguments: ['@logger.channel.file', '@file_system', '@file.mime_type.guesser', '@token', '@lock', '@config.factory']

Services

Namesort descending Description
access_check.jsonapi.relationship_field_access Drupal\jsonapi\Access\RelationshipFieldAccess
cache.jsonapi_resource_types Drupal\Core\Cache\MemoryCache\MemoryCache
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.uploader.field Drupal\jsonapi\Controller\TemporaryJsonapiFileFieldUploader
jsonapi.file_upload Drupal\jsonapi\Controller\FileUpload
jsonapi.http_middleware.format_setter Drupal\jsonapi\StackMiddleware\FormatSetter
jsonapi.include_resolver Drupal\jsonapi\IncludeResolver
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.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.datetimeiso8601.jsonapi \Drupal\jsonapi\ForwardCompatibility\Normalizer\DateTimeIso8601Normalizer
serializer.normalizer.entity_access_exception.jsonapi Drupal\jsonapi\Normalizer\EntityAccessDeniedHttpExceptionNormalizer
serializer.normalizer.entity_reference_field.jsonapi Drupal\jsonapi\Normalizer\EntityReferenceFieldNormalizer
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.htt_exception.jsonapi Alias of serializer.normalizer.http_exception.jsonapi
serializer.normalizer.jsonapi_document_toplevel.jsonapi Drupal\jsonapi\Normalizer\JsonApiDocumentTopLevelNormalizer
serializer.normalizer.link_collection.jsonapi Drupal\jsonapi\Normalizer\LinkCollectionNormalizer
serializer.normalizer.resource_identifier.jsonapi Drupal\jsonapi\Normalizer\ResourceIdentifierNormalizer
serializer.normalizer.resource_object.jsonapi Drupal\jsonapi\Normalizer\ResourceObjectNormalizer
serializer.normalizer.timestamp.jsonapi \Drupal\jsonapi\ForwardCompatibility\Normalizer\TimestampNormalizer
serializer.normalizer.unprocessable_entity_exception.jsonapi Drupal\jsonapi\Normalizer\UnprocessableHttpEntityExceptionNormalizer