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