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.
- checksums.yaml +4 -4
- data/README.md +3 -13
- data/app/controllers/decidim/api/sessions_controller.rb +1 -1
- data/app/models/decidim/api/api_user.rb +5 -1
- data/config/locales/ca-IT.yml +7 -0
- data/config/locales/ca.yml +7 -0
- data/config/locales/cs.yml +13 -0
- data/config/locales/el.yml +11 -0
- data/config/locales/en.yml +7 -0
- data/config/locales/es-MX.yml +7 -0
- data/config/locales/es-PY.yml +7 -0
- data/config/locales/es.yml +7 -0
- data/config/locales/eu.yml +7 -0
- data/config/locales/fi-plain.yml +7 -0
- data/config/locales/fi.yml +7 -0
- data/config/locales/fr-CA.yml +4 -0
- data/config/locales/fr.yml +4 -0
- data/config/locales/ja.yml +7 -0
- data/config/locales/no.yml +1 -0
- data/config/locales/pt-BR.yml +7 -0
- data/config/locales/ro-RO.yml +7 -0
- data/config/locales/sv.yml +7 -0
- data/decidim-api.gemspec +12 -15
- data/docs/usage.md +3 -634
- data/lib/decidim/api/component_mutation_type.rb +1 -2
- data/lib/decidim/api/errors/attribute_validation_error.rb +73 -0
- data/lib/decidim/api/errors/invalid_locale_error.rb +14 -0
- data/lib/decidim/api/errors/locale_error.rb +14 -0
- data/lib/decidim/api/errors/mutation_not_authorized_error.rb +14 -0
- data/lib/decidim/api/errors/not_found_error.rb +14 -0
- data/lib/decidim/api/errors/permission_not_set_error.rb +14 -0
- data/lib/decidim/api/errors/unauthorized_field_error.rb +14 -0
- data/lib/decidim/api/errors/unauthorized_object_error.rb +14 -0
- data/lib/decidim/api/errors/validation_error.rb +13 -0
- data/lib/decidim/api/graphiql/config.rb +1 -1
- data/lib/decidim/api/graphql_permissions.rb +17 -12
- data/lib/decidim/api/query_type.rb +91 -0
- data/lib/decidim/api/schema.rb +27 -1
- data/lib/decidim/api/test/component_context.rb +59 -51
- data/lib/decidim/api/test/shared_examples/commentable_interface_examples.rb +46 -0
- data/lib/decidim/api/test/shared_examples/followable_interface_examples.rb +12 -1
- data/lib/decidim/api/test/shared_examples/statistics_examples.rb +0 -2
- data/lib/decidim/api/test/type_context.rb +10 -2
- data/lib/decidim/api/test.rb +1 -0
- data/lib/decidim/api/types/access_mode_enum.rb +15 -0
- data/lib/decidim/api/types/base_mutation.rb +28 -0
- data/lib/decidim/api/types/base_object.rb +12 -0
- data/lib/decidim/api/types.rb +12 -1
- data/lib/decidim/api/version.rb +1 -1
- data/lib/decidim/api.rb +22 -32
- metadata +59 -34
- /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
|
-
|
|
14
|
+
class << self
|
|
15
|
+
def config = self
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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.
|
|
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:
|
|
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.
|
|
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.
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
328
|
-
signing_key:
|
|
353
|
+
rubygems_version: 3.6.9
|
|
329
354
|
specification_version: 4
|
|
330
355
|
summary: Decidim API module
|
|
331
356
|
test_files: []
|
|
File without changes
|