decidim-api 0.31.3 → 0.32.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -13
  3. data/app/controllers/decidim/api/sessions_controller.rb +1 -1
  4. data/app/models/decidim/api/api_user.rb +5 -1
  5. data/config/locales/ca-IT.yml +7 -0
  6. data/config/locales/ca.yml +7 -0
  7. data/config/locales/cs.yml +13 -0
  8. data/config/locales/el.yml +11 -0
  9. data/config/locales/en.yml +7 -0
  10. data/config/locales/es-MX.yml +7 -0
  11. data/config/locales/es-PY.yml +7 -0
  12. data/config/locales/es.yml +7 -0
  13. data/config/locales/eu.yml +7 -0
  14. data/config/locales/fi-plain.yml +7 -0
  15. data/config/locales/fi.yml +7 -0
  16. data/config/locales/fr-CA.yml +4 -0
  17. data/config/locales/fr.yml +4 -0
  18. data/config/locales/ja.yml +7 -0
  19. data/config/locales/no.yml +1 -0
  20. data/config/locales/pt-BR.yml +7 -0
  21. data/config/locales/ro-RO.yml +7 -0
  22. data/config/locales/sv.yml +7 -0
  23. data/decidim-api.gemspec +12 -15
  24. data/docs/usage.md +3 -634
  25. data/lib/decidim/api/component_mutation_type.rb +1 -2
  26. data/lib/decidim/api/errors/attribute_validation_error.rb +73 -0
  27. data/lib/decidim/api/errors/invalid_locale_error.rb +14 -0
  28. data/lib/decidim/api/errors/locale_error.rb +14 -0
  29. data/lib/decidim/api/errors/mutation_not_authorized_error.rb +14 -0
  30. data/lib/decidim/api/errors/not_found_error.rb +14 -0
  31. data/lib/decidim/api/errors/permission_not_set_error.rb +14 -0
  32. data/lib/decidim/api/errors/unauthorized_field_error.rb +14 -0
  33. data/lib/decidim/api/errors/unauthorized_object_error.rb +14 -0
  34. data/lib/decidim/api/errors/validation_error.rb +13 -0
  35. data/lib/decidim/api/graphiql/config.rb +1 -1
  36. data/lib/decidim/api/graphql_permissions.rb +17 -12
  37. data/lib/decidim/api/query_type.rb +91 -0
  38. data/lib/decidim/api/schema.rb +27 -1
  39. data/lib/decidim/api/test/component_context.rb +59 -51
  40. data/lib/decidim/api/test/shared_examples/commentable_interface_examples.rb +46 -0
  41. data/lib/decidim/api/test/shared_examples/followable_interface_examples.rb +12 -1
  42. data/lib/decidim/api/test/shared_examples/statistics_examples.rb +0 -2
  43. data/lib/decidim/api/test/type_context.rb +10 -2
  44. data/lib/decidim/api/test.rb +1 -0
  45. data/lib/decidim/api/types/access_mode_enum.rb +15 -0
  46. data/lib/decidim/api/types/base_mutation.rb +28 -0
  47. data/lib/decidim/api/types/base_object.rb +12 -0
  48. data/lib/decidim/api/types.rb +12 -1
  49. data/lib/decidim/api/version.rb +1 -1
  50. data/lib/decidim/api.rb +22 -32
  51. metadata +59 -34
  52. /data/lib/decidim/api/test/{mutation_context.rb → shared_examples/mutation_context.rb} +0 -0
data/lib/decidim/api.rb CHANGED
@@ -11,54 +11,44 @@ module Decidim
11
11
  # This module holds all business logic related to exposing a Public API for
12
12
  # decidim.
13
13
  module Api
14
- include ActiveSupport::Configurable
14
+ class << self
15
+ def config = self
15
16
 
16
- # defines the schema max_per_page to configure GraphQL pagination
17
- config_accessor :schema_max_per_page do
18
- Decidim::Env.new("API_SCHEMA_MAX_PER_PAGE", 50).to_i
17
+ def configure
18
+ yield self
19
+ end
19
20
  end
20
21
 
22
+ # defines the schema max_per_page to configure GraphQL pagination
23
+ mattr_accessor :schema_max_per_page, default: Decidim::Env.new("API_SCHEMA_MAX_PER_PAGE", 50).to_i
24
+
21
25
  # defines the schema max_complexity to configure GraphQL query complexity
22
- config_accessor :schema_max_complexity do
23
- Decidim::Env.new("API_SCHEMA_MAX_COMPLEXITY", 5000).to_i
24
- end
26
+ mattr_accessor :schema_max_complexity, default: Decidim::Env.new("API_SCHEMA_MAX_COMPLEXITY", 5000).to_i
25
27
 
26
28
  # defines how many aliases are permitted in a query
27
- config_accessor :max_aliases do
28
- Decidim::Env.new("API_SCHEMA_MAX_ALIASES", 5).to_i
29
- end
29
+ mattr_accessor :max_aliases, default: Decidim::Env.new("API_SCHEMA_MAX_ALIASES", 5).to_i
30
30
 
31
31
  # defines the schema max_depth to configure GraphQL query max_depth
32
- config_accessor :schema_max_depth do
33
- Decidim::Env.new("API_SCHEMA_MAX_DEPTH", 15).to_i
34
- end
32
+ mattr_accessor :schema_max_depth, default: Decidim::Env.new("API_SCHEMA_MAX_DEPTH", 15).to_i
35
33
 
36
- config_accessor :disclose_system_version do
37
- Decidim::Env.new("DECIDIM_API_DISCLOSE_SYSTEM_VERSION").present?
38
- end
34
+ mattr_accessor :disclose_system_version, default: Decidim::Env.new("DECIDIM_API_DISCLOSE_SYSTEM_VERSION").present?
39
35
 
40
36
  # makes the API authentication necessary in order to access it
37
+ # access it.
38
+ mattr_accessor :force_api_authentication, default: Decidim::Env.new("DECIDIM_API_FORCE_API_AUTHENTICATION", nil).present?
41
39
 
42
- config_accessor :force_api_authentication do
43
- Decidim::Env.new("DECIDIM_API_FORCE_API_AUTHENTICATION", nil).present?
44
- end
45
-
46
- # Allows anonymous introspection queries.
47
- # If you are not sure, leave it set to false. In this way, only administrator users will be able to access the introspection query.
48
- # Otherwise, anyone can access it, which may cause security issues.
49
- config_accessor :enable_anonymous_introspection do
50
- Decidim::Env.new("DECIDIM_API_ENABLE_ANONYMOUS_INTROSPECTION", nil).present?
51
- end
40
+ # allows anonymous introspection queries
41
+ # If you are not sure, leave it set to false. In this way only administrator users will be able to access the introspection query.
42
+ # Otherwise, anyone can access it, causing security issues.
43
+ mattr_accessor :enable_anonymous_introspection, default: Decidim::Env.new("DECIDIM_API_ENABLE_ANONYMOUS_INTROSPECTION", nil).present?
52
44
 
53
45
  # The expiration time of the JWT tokens, after which issued token will
54
46
  # expire. Recommended to match the value of
55
47
  # `DECIDIM_OAUTH_ACCESS_TOKEN_EXPIRES_IN`.
56
- config_accessor :jwt_expires_in do
57
- Decidim::Env.new(
58
- "DECIDIM_API_JWT_EXPIRES_IN",
59
- Decidim::Env.new("DECIDIM_OAUTH_ACCESS_TOKEN_EXPIRES_IN", "120").value
60
- ).to_i
61
- end
48
+ mattr_accessor :jwt_expires_in, default: Decidim::Env.new(
49
+ "DECIDIM_API_JWT_EXPIRES_IN",
50
+ Decidim::Env.new("DECIDIM_OAUTH_ACCESS_TOKEN_EXPIRES_IN", "120").value
51
+ ).to_i
62
52
 
63
53
  # This declares all the types an interface or union can resolve to. This needs
64
54
  # to be done in order to be able to have them found. This is a shortcoming of
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.31.3
4
+ version: 0.32.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
8
8
  - Marc Riera Casals
9
9
  - Oriol Gual Oliva
10
- autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2026-03-26 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: decidim-core
@@ -18,132 +17,150 @@ dependencies:
18
17
  requirements:
19
18
  - - '='
20
19
  - !ruby/object:Gem::Version
21
- version: 0.31.3
20
+ version: 0.32.0.rc1
22
21
  type: :runtime
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
24
  requirements:
26
25
  - - '='
27
26
  - !ruby/object:Gem::Version
28
- version: 0.31.3
27
+ version: 0.32.0.rc1
29
28
  - !ruby/object:Gem::Dependency
30
29
  name: devise-jwt
31
30
  requirement: !ruby/object:Gem::Requirement
32
31
  requirements:
33
- - - "~>"
32
+ - - ">="
34
33
  - !ruby/object:Gem::Version
35
34
  version: 0.12.1
35
+ - - "<"
36
+ - !ruby/object:Gem::Version
37
+ version: 0.14.0
36
38
  type: :runtime
37
39
  prerelease: false
38
40
  version_requirements: !ruby/object:Gem::Requirement
39
41
  requirements:
40
- - - "~>"
42
+ - - ">="
41
43
  - !ruby/object:Gem::Version
42
44
  version: 0.12.1
45
+ - - "<"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.14.0
43
48
  - !ruby/object:Gem::Dependency
44
49
  name: graphql
45
50
  requirement: !ruby/object:Gem::Requirement
46
51
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: 2.4.0
50
52
  - - ">="
51
53
  - !ruby/object:Gem::Version
52
54
  version: 2.4.17
55
+ - - "<"
56
+ - !ruby/object:Gem::Version
57
+ version: '2.6'
53
58
  type: :runtime
54
59
  prerelease: false
55
60
  version_requirements: !ruby/object:Gem::Requirement
56
61
  requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: 2.4.0
60
62
  - - ">="
61
63
  - !ruby/object:Gem::Version
62
64
  version: 2.4.17
65
+ - - "<"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.6'
63
68
  - !ruby/object:Gem::Dependency
64
69
  name: graphql-docs
65
70
  requirement: !ruby/object:Gem::Requirement
66
71
  requirements:
67
- - - "~>"
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '5'
75
+ - - "<"
68
76
  - !ruby/object:Gem::Version
69
- version: '5.0'
77
+ version: '7'
70
78
  type: :runtime
71
79
  prerelease: false
72
80
  version_requirements: !ruby/object:Gem::Requirement
73
81
  requirements:
74
- - - "~>"
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '5'
85
+ - - "<"
75
86
  - !ruby/object:Gem::Version
76
- version: '5.0'
87
+ version: '7'
77
88
  - !ruby/object:Gem::Dependency
78
89
  name: rack-cors
79
90
  requirement: !ruby/object:Gem::Requirement
80
91
  requirements:
81
- - - "~>"
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '1'
95
+ - - "<"
82
96
  - !ruby/object:Gem::Version
83
- version: '1.0'
97
+ version: '4'
84
98
  type: :runtime
85
99
  prerelease: false
86
100
  version_requirements: !ruby/object:Gem::Requirement
87
101
  requirements:
88
- - - "~>"
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '1'
105
+ - - "<"
89
106
  - !ruby/object:Gem::Version
90
- version: '1.0'
107
+ version: '4'
91
108
  - !ruby/object:Gem::Dependency
92
109
  name: decidim-assemblies
93
110
  requirement: !ruby/object:Gem::Requirement
94
111
  requirements:
95
112
  - - '='
96
113
  - !ruby/object:Gem::Version
97
- version: 0.31.3
114
+ version: 0.32.0.rc1
98
115
  type: :development
99
116
  prerelease: false
100
117
  version_requirements: !ruby/object:Gem::Requirement
101
118
  requirements:
102
119
  - - '='
103
120
  - !ruby/object:Gem::Version
104
- version: 0.31.3
121
+ version: 0.32.0.rc1
105
122
  - !ruby/object:Gem::Dependency
106
123
  name: decidim-comments
107
124
  requirement: !ruby/object:Gem::Requirement
108
125
  requirements:
109
126
  - - '='
110
127
  - !ruby/object:Gem::Version
111
- version: 0.31.3
128
+ version: 0.32.0.rc1
112
129
  type: :development
113
130
  prerelease: false
114
131
  version_requirements: !ruby/object:Gem::Requirement
115
132
  requirements:
116
133
  - - '='
117
134
  - !ruby/object:Gem::Version
118
- version: 0.31.3
135
+ version: 0.32.0.rc1
119
136
  - !ruby/object:Gem::Dependency
120
137
  name: decidim-dev
121
138
  requirement: !ruby/object:Gem::Requirement
122
139
  requirements:
123
140
  - - '='
124
141
  - !ruby/object:Gem::Version
125
- version: 0.31.3
142
+ version: 0.32.0.rc1
126
143
  type: :development
127
144
  prerelease: false
128
145
  version_requirements: !ruby/object:Gem::Requirement
129
146
  requirements:
130
147
  - - '='
131
148
  - !ruby/object:Gem::Version
132
- version: 0.31.3
149
+ version: 0.32.0.rc1
133
150
  - !ruby/object:Gem::Dependency
134
151
  name: decidim-participatory_processes
135
152
  requirement: !ruby/object:Gem::Requirement
136
153
  requirements:
137
154
  - - '='
138
155
  - !ruby/object:Gem::Version
139
- version: 0.31.3
156
+ version: 0.32.0.rc1
140
157
  type: :development
141
158
  prerelease: false
142
159
  version_requirements: !ruby/object:Gem::Requirement
143
160
  requirements:
144
161
  - - '='
145
162
  - !ruby/object:Gem::Version
146
- version: 0.31.3
163
+ version: 0.32.0.rc1
147
164
  description: API engine for decidim
148
165
  email:
149
166
  - josepjaume@gmail.com
@@ -247,9 +264,18 @@ files:
247
264
  - lib/decidim/api/component_mutation_type.rb
248
265
  - lib/decidim/api/devise.rb
249
266
  - lib/decidim/api/engine.rb
267
+ - lib/decidim/api/errors/attribute_validation_error.rb
250
268
  - lib/decidim/api/errors/introspection_disabled_error.rb
269
+ - lib/decidim/api/errors/invalid_locale_error.rb
270
+ - lib/decidim/api/errors/locale_error.rb
271
+ - lib/decidim/api/errors/mutation_not_authorized_error.rb
272
+ - lib/decidim/api/errors/not_found_error.rb
273
+ - lib/decidim/api/errors/permission_not_set_error.rb
251
274
  - lib/decidim/api/errors/recursion_limit_exceeded_error.rb
252
275
  - lib/decidim/api/errors/too_many_aliases_error.rb
276
+ - lib/decidim/api/errors/unauthorized_field_error.rb
277
+ - lib/decidim/api/errors/unauthorized_object_error.rb
278
+ - lib/decidim/api/errors/validation_error.rb
253
279
  - lib/decidim/api/graphiql-initial-query.txt
254
280
  - lib/decidim/api/graphiql/config.rb
255
281
  - lib/decidim/api/graphql_permissions.rb
@@ -262,7 +288,6 @@ files:
262
288
  - lib/decidim/api/test.rb
263
289
  - lib/decidim/api/test/component_context.rb
264
290
  - lib/decidim/api/test/factories.rb
265
- - lib/decidim/api/test/mutation_context.rb
266
291
  - lib/decidim/api/test/shared_examples/amendable_interface_examples.rb
267
292
  - lib/decidim/api/test/shared_examples/amendable_proposals_interface_examples.rb
268
293
  - lib/decidim/api/test/shared_examples/attachable_interface_examples.rb
@@ -277,6 +302,7 @@ files:
277
302
  - lib/decidim/api/test/shared_examples/input_sort_examples.rb
278
303
  - lib/decidim/api/test/shared_examples/likeable_interface_examples.rb
279
304
  - lib/decidim/api/test/shared_examples/localizable_interface_examples.rb
305
+ - lib/decidim/api/test/shared_examples/mutation_context.rb
280
306
  - lib/decidim/api/test/shared_examples/participatory_space_resourcable_interface_examples.rb
281
307
  - lib/decidim/api/test/shared_examples/referable_interface_examples.rb
282
308
  - lib/decidim/api/test/shared_examples/scopable_interface_examples.rb
@@ -286,6 +312,7 @@ files:
286
312
  - lib/decidim/api/test/shared_examples/traceable_interface_examples.rb
287
313
  - lib/decidim/api/test/type_context.rb
288
314
  - lib/decidim/api/types.rb
315
+ - lib/decidim/api/types/access_mode_enum.rb
289
316
  - lib/decidim/api/types/base_argument.rb
290
317
  - lib/decidim/api/types/base_enum.rb
291
318
  - lib/decidim/api/types/base_field.rb
@@ -309,7 +336,6 @@ metadata:
309
336
  funding_uri: https://opencollective.com/decidim
310
337
  homepage_uri: https://decidim.org
311
338
  source_code_uri: https://github.com/decidim/decidim
312
- post_install_message:
313
339
  rdoc_options: []
314
340
  require_paths:
315
341
  - lib
@@ -317,15 +343,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
317
343
  requirements:
318
344
  - - "~>"
319
345
  - !ruby/object:Gem::Version
320
- version: 3.3.0
346
+ version: 3.4.0
321
347
  required_rubygems_version: !ruby/object:Gem::Requirement
322
348
  requirements:
323
349
  - - ">="
324
350
  - !ruby/object:Gem::Version
325
351
  version: '0'
326
352
  requirements: []
327
- rubygems_version: 3.5.11
328
- signing_key:
353
+ rubygems_version: 3.6.9
329
354
  specification_version: 4
330
355
  summary: Decidim API module
331
356
  test_files: []