contentful-management 2.10.0 → 2.13.1

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +34 -0
  3. data/README.md +30 -13
  4. data/contentful-management.gemspec +4 -3
  5. data/lib/contentful/management/asset.rb +2 -0
  6. data/lib/contentful/management/client.rb +10 -12
  7. data/lib/contentful/management/{client_usage_period_methods_factory.rb → client_organization_periodic_usage_methods_factory.rb} +3 -4
  8. data/lib/contentful/management/{client_api_usage_methods_factory.rb → client_space_periodic_usage_methods_factory.rb} +4 -11
  9. data/lib/contentful/management/entry.rb +16 -12
  10. data/lib/contentful/management/field.rb +3 -1
  11. data/lib/contentful/management/organization.rb +18 -8
  12. data/lib/contentful/management/{api_usage.rb → organization_periodic_usage.rb} +13 -18
  13. data/lib/contentful/management/organization_user_methods_factory.rb +18 -0
  14. data/lib/contentful/management/resource.rb +3 -2
  15. data/lib/contentful/management/resource/metadata.rb +48 -0
  16. data/lib/contentful/management/resource_builder.rb +8 -6
  17. data/lib/contentful/management/space.rb +10 -0
  18. data/lib/contentful/management/{usage_period.rb → space_periodic_usage.rb} +12 -9
  19. data/lib/contentful/management/space_user_methods_factory.rb +19 -0
  20. data/lib/contentful/management/tag.rb +14 -0
  21. data/lib/contentful/management/user.rb +7 -1
  22. data/lib/contentful/management/validation.rb +6 -1
  23. data/lib/contentful/management/version.rb +1 -1
  24. data/spec/fixtures/vcr_cassettes/asset/issue_219.yml +442 -0
  25. data/spec/fixtures/vcr_cassettes/entry/issue_215_1.yml +905 -0
  26. data/spec/fixtures/vcr_cassettes/entry/issue_215_2.yml +899 -0
  27. data/spec/fixtures/vcr_cassettes/entry/issue_215_3.yml +893 -0
  28. data/spec/fixtures/vcr_cassettes/entry/issue_219.yml +535 -0
  29. data/spec/fixtures/vcr_cassettes/organization/user.yml +238 -0
  30. data/spec/fixtures/vcr_cassettes/organization_periodic_usage/all.yml +368 -0
  31. data/spec/fixtures/vcr_cassettes/organization_periodic_usage/filters.yml +167 -0
  32. data/spec/fixtures/vcr_cassettes/space/user.yml +254 -0
  33. data/spec/fixtures/vcr_cassettes/space_periodic_usage/all.yml +6800 -0
  34. data/spec/fixtures/vcr_cassettes/space_periodic_usage/filters.yml +1976 -0
  35. data/spec/lib/contentful/management/asset_spec.rb +31 -0
  36. data/spec/lib/contentful/management/entry_spec.rb +77 -0
  37. data/spec/lib/contentful/management/organization_periodic_usage_spec.rb +36 -0
  38. data/spec/lib/contentful/management/organization_spec.rb +20 -0
  39. data/spec/lib/contentful/management/space_periodic_usage_spec.rb +36 -0
  40. data/spec/lib/contentful/management/space_spec.rb +20 -0
  41. metadata +60 -30
  42. data/spec/fixtures/vcr_cassettes/api_usage/all.yml +0 -155
  43. data/spec/fixtures/vcr_cassettes/usage_period/all.yml +0 -114
  44. data/spec/lib/contentful/management/api_usage_spec.rb +0 -28
  45. data/spec/lib/contentful/management/usage_period_spec.rb +0 -27
@@ -237,8 +237,9 @@ module Contentful
237
237
  # @param [String] resource_id
238
238
  #
239
239
  # @return [Contentful::Management::Resource]
240
- def find(client, space_id, environment_id = nil, resource_id = nil)
241
- ResourceRequester.new(client, self).find(space_id: space_id, environment_id: environment_id, resource_id: resource_id)
240
+ def find(client, space_id, environment_id = nil, resource_id = nil, organization_id = nil)
241
+ ResourceRequester.new(client, self).find(space_id: space_id, environment_id: environment_id,
242
+ resource_id: resource_id, organization_id: organization_id)
242
243
  end
243
244
 
244
245
  # Creates a resource.
@@ -0,0 +1,48 @@
1
+ module Contentful
2
+ module Management
3
+ module Resource
4
+ # Adds metadata logic for [Resource] classes
5
+ module Metadata
6
+ # Returns the metadata hash
7
+ #
8
+ # @return [Hash] Metadata
9
+ def metadata
10
+ @metadata
11
+ end
12
+
13
+ # @private
14
+ def initialize(object = nil, *)
15
+ super
16
+ @metadata = {}
17
+ extract_metadata_from_object! object if object
18
+ end
19
+
20
+ # @private
21
+ def inspect(info = nil)
22
+ if metadata.empty?
23
+ super(info)
24
+ else
25
+ super("#{info} @metadata=#{metadata.inspect}")
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def extract_metadata_from_object!(object)
32
+ return unless object.key?('metadata')
33
+ object['metadata'].each do |key, value|
34
+ @metadata[key.to_sym] = if key == 'tags'
35
+ coerce_tags(value)
36
+ else
37
+ value
38
+ end
39
+ end
40
+ end
41
+
42
+ def coerce_tags(tags)
43
+ tags.map { |tag| Contentful::Management::Link.new(tag) }
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,3 +1,4 @@
1
+ require_relative 'tag'
1
2
  require_relative 'link'
2
3
  require_relative 'user'
3
4
  require_relative 'role'
@@ -12,9 +13,7 @@ require_relative 'webhook'
12
13
  require_relative 'api_key'
13
14
  require_relative 'resource'
14
15
  require_relative 'snapshot'
15
- require_relative 'api_usage'
16
16
  require_relative 'environment'
17
- require_relative 'usage_period'
18
17
  require_relative 'organization'
19
18
  require_relative 'content_type'
20
19
  require_relative 'webhook_call'
@@ -24,7 +23,9 @@ require_relative 'webhook_health'
24
23
  require_relative 'preview_api_key'
25
24
  require_relative 'space_membership'
26
25
  require_relative 'editor_interface'
26
+ require_relative 'space_periodic_usage'
27
27
  require_relative 'personal_access_token'
28
+ require_relative 'organization_periodic_usage'
28
29
 
29
30
  module Contentful
30
31
  module Management
@@ -37,8 +38,8 @@ module Contentful
37
38
  'Space' => Contentful::Management::Space,
38
39
  'SpaceMembership' => Contentful::Management::SpaceMembership,
39
40
  'Organization' => Contentful::Management::Organization,
40
- 'ApiUsage' => Contentful::Management::ApiUsage,
41
- 'UsagePeriod' => Contentful::Management::UsagePeriod,
41
+ 'SpacePeriodicUsage' => Contentful::Management::SpacePeriodicUsage,
42
+ 'OrganizationPeriodicUsage' => Contentful::Management::OrganizationPeriodicUsage,
42
43
  'User' => Contentful::Management::User,
43
44
  'Environment' => Contentful::Management::Environment,
44
45
  'ContentType' => Contentful::Management::ContentType,
@@ -58,7 +59,8 @@ module Contentful
58
59
  'Extension' => Contentful::Management::UIExtension,
59
60
  'EditorInterface' => Contentful::Management::EditorInterface,
60
61
  'Snapshot' => Contentful::Management::Snapshot,
61
- 'Upload' => Contentful::Management::Upload
62
+ 'Upload' => Contentful::Management::Upload,
63
+ 'Tag' => Contentful::Management::Tag
62
64
  }.freeze
63
65
 
64
66
  # Default Entry Mapping
@@ -214,7 +216,7 @@ module Contentful
214
216
  detect_child_objects(potential_objects).each do |child_name, child_object|
215
217
  res.public_send(name)[child_name.to_sym] = create_resource(child_object)
216
218
  end
217
- next if name == 'includes'
219
+ next if %w[includes metadata].include?(name)
218
220
  detect_child_arrays(potential_objects).each do |child_name, _child_array|
219
221
  replace_child_array res.public_send(name)[child_name.to_sym]
220
222
  end
@@ -6,6 +6,7 @@ require_relative 'resource'
6
6
  require_relative 'environment'
7
7
  require_relative 'space_membership'
8
8
  require_relative 'space_role_methods_factory'
9
+ require_relative 'space_user_methods_factory'
9
10
  require_relative 'space_webhook_methods_factory'
10
11
  require_relative 'space_api_key_methods_factory'
11
12
  require_relative 'space_environment_methods_factory'
@@ -155,6 +156,15 @@ module Contentful
155
156
  SpaceRoleMethodsFactory.new(self)
156
157
  end
157
158
 
159
+ # Allows viewing of users in context of the current space
160
+ # Allows listing all users of space, and finding one by ID.
161
+ # @see _ README for details.
162
+ #
163
+ # @return [Contentful::Management::SpaceUserMethodsFactory]
164
+ def users
165
+ SpaceUserMethodsFactory.new(self)
166
+ end
167
+
158
168
  # Allows manipulation of webhooks in context of the current space
159
169
  # Allows listing all webhooks for space and finding one by ID.
160
170
  # @see _ README for details.
@@ -2,32 +2,35 @@ require_relative 'resource'
2
2
 
3
3
  module Contentful
4
4
  module Management
5
- # Resource class for UsagePeriod.
6
- # @see _ https://www.contentful.com/developers/docs/references/content-management-api/#/reference/api-usages
7
- class UsagePeriod
5
+ # Resource class for SpacePeriodicUsage.
6
+ # @see _ https://www.contentful.com/developers/docs/references/content-management-api/#/reference/usage/space-usage/get-space-usage/console/curl
7
+ class SpacePeriodicUsage
8
8
  include Contentful::Management::Resource
9
9
  include Contentful::Management::Resource::Refresher
10
10
  include Contentful::Management::Resource::SystemProperties
11
11
 
12
- property :startDate, :date
13
- property :endDate, :date
12
+ property :metric, :string
13
+ property :usage, :integer
14
+ property :usagePerDay, :object
15
+ property :unitOfMeasure, :string
16
+ property :dateRange, :object
14
17
 
15
18
  # @private
16
19
  def self.build_endpoint(endpoint_options)
17
20
  organization_id = endpoint_options[:organization_id]
18
21
 
19
- "organizations/#{organization_id}/usage_periods"
22
+ "organizations/#{organization_id}/space_periodic_usages"
20
23
  end
21
24
 
22
- # Gets all usage periods for a given organization.
25
+ # Gets all space periodic usages for a given organization.
23
26
  #
24
27
  # @param [Contentful::Management::Client] client
25
28
  # @param [String] organization_id
26
29
  # @param [Hash] params
27
30
  #
28
- # @return [Contentful::Management::Array<Contentful::Management::UsagePeriod>]
31
+ # @return [Contentful::Management::Array<Contentful::Management::SpacePeriodicUsage>]
29
32
  def self.all(client, organization_id, params = {})
30
- ClientUsagePeriodMethodsFactory.new(client, organization_id).all(params)
33
+ ClientSpacePeriodicUsageMethodsFactory.new(client, organization_id).all(params)
31
34
  end
32
35
 
33
36
  # Not supported
@@ -0,0 +1,19 @@
1
+ require_relative 'space_association_methods_factory'
2
+
3
+ module Contentful
4
+ module Management
5
+ # Wrapper for User API for usage from within Space
6
+ # @private
7
+ class SpaceUserMethodsFactory
8
+ attr_reader :space
9
+
10
+ def initialize(space)
11
+ @space = space
12
+ end
13
+
14
+ def find(id)
15
+ User.find(space.client, space.id, nil, id)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'resource'
2
+
3
+ module Contentful
4
+ module Management
5
+ # Resource Class for Tags
6
+ # https://www.contentful.com/developers/docs/references/content-management-api/#/reference/content-tags
7
+ class Tag
8
+ include Contentful::Management::Resource
9
+ include Contentful::Management::Resource::SystemProperties
10
+
11
+ property :name
12
+ end
13
+ end
14
+ end
@@ -19,7 +19,13 @@ module Contentful
19
19
 
20
20
  # @private
21
21
  def self.build_endpoint(endpoint_options)
22
- endpoint = 'users'
22
+ endpoint = if endpoint_options[:space_id]
23
+ "spaces/#{endpoint_options[:space_id]}/users"
24
+ elsif endpoint_options[:organization_id]
25
+ "organizations/#{endpoint_options[:organization_id]}/users"
26
+ else
27
+ 'users'
28
+ end
23
29
  endpoint = "#{endpoint}/#{endpoint_options[:resource_id]}" if endpoint_options[:resource_id]
24
30
  endpoint
25
31
  end
@@ -4,6 +4,9 @@ module Contentful
4
4
  module Management
5
5
  # A ContentType's validations schema
6
6
  class Validation
7
+ # Properties not specific to a field type validation
8
+ NON_TYPE_PROPERTIES = %i[validations message].freeze
9
+
7
10
  include Contentful::Management::Resource
8
11
 
9
12
  property :in, :array
@@ -19,6 +22,8 @@ module Contentful
19
22
  property :assetImageDimensions, :hash
20
23
  property :enabledNodeTypes, :array
21
24
  property :enabledMarks, :array
25
+ property :nodes, :hash
26
+ property :message, :string
22
27
 
23
28
  # @private
24
29
  def properties_to_hash
@@ -30,7 +35,7 @@ module Contentful
30
35
  # Returns type of validation
31
36
  # @return [Symbol]
32
37
  def type
33
- properties.keys.reject { |key| key == :validations }.each do |type|
38
+ properties.keys.reject { |key| NON_TYPE_PROPERTIES.include?(key) }.each do |type|
34
39
  value = send(Support.snakify(type))
35
40
  return type if !value.nil? && value
36
41
  end
@@ -3,6 +3,6 @@ module Contentful
3
3
  # Management Namespace
4
4
  module Management
5
5
  # Gem Version
6
- VERSION = '2.10.0'.freeze
6
+ VERSION = '2.13.1'.freeze
7
7
  end
8
8
  end
@@ -0,0 +1,442 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.contentful.com/spaces/2l3j7k267g9k
6
+ body:
7
+ encoding: UTF-8
8
+ string: ''
9
+ headers:
10
+ X-Contentful-User-Agent:
11
+ - sdk contentful-management.rb/2.13.0; platform ruby/2.6.3; os macOS/18;
12
+ Authorization:
13
+ - Bearer <ACCESS_TOKEN>
14
+ Content-Type:
15
+ - application/vnd.contentful.management.v1+json
16
+ Connection:
17
+ - close
18
+ Host:
19
+ - api.contentful.com
20
+ User-Agent:
21
+ - http.rb/4.4.1
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Accept-Ranges:
28
+ - bytes
29
+ Access-Control-Allow-Headers:
30
+ - Accept,Accept-Language,Authorization,Cache-Control,Content-Length,Content-Range,Content-Type,DNT,Destination,Expires,If-Match,If-Modified-Since,If-None-Match,Keep-Alive,Last-Modified,Origin,Pragma,Range,User-Agent,X-Http-Method-Override,X-Mx-ReqToken,X-Requested-With,X-Contentful-Version,X-Contentful-Content-Type,X-Contentful-Organization,X-Contentful-Skip-Transformation,X-Contentful-User-Agent,X-Contentful-Enable-Alpha-Feature,X-Contentful-Source-Environment,X-Contentful-Team,X-Contentful-Parent-Id,x-contentful-validate-only,X-Contentful-Skip-UI-Draft-Validation,X-Contentful-Marketplace,X-Contentful-UI-Content-Auto-Save,cf-trace
31
+ Access-Control-Allow-Methods:
32
+ - DELETE,GET,HEAD,POST,PUT,PATCH,OPTIONS
33
+ Access-Control-Allow-Origin:
34
+ - "*"
35
+ Access-Control-Expose-Headers:
36
+ - Etag
37
+ Access-Control-Max-Age:
38
+ - '1728000'
39
+ Cache-Control:
40
+ - no-store
41
+ Cf-Organization-Id:
42
+ - 1VcAE6naLx3WZBNNUIMMZE
43
+ Cf-Space-Id:
44
+ - 2l3j7k267g9k
45
+ Content-Type:
46
+ - application/vnd.contentful.management.v1+json
47
+ Contentful-Api:
48
+ - cma
49
+ Date:
50
+ - Thu, 07 Jan 2021 11:06:34 GMT
51
+ Etag:
52
+ - W/"659d95ef36a17e58e2737034fa6383c8"
53
+ Referrer-Policy:
54
+ - strict-origin-when-cross-origin
55
+ Server:
56
+ - Contentful
57
+ Strict-Transport-Security:
58
+ - max-age=15768000
59
+ X-Content-Type-Options:
60
+ - nosniff
61
+ X-Contentful-Ratelimit-Hour-Limit:
62
+ - '36000'
63
+ X-Contentful-Ratelimit-Hour-Remaining:
64
+ - '35999'
65
+ X-Contentful-Ratelimit-Reset:
66
+ - '0'
67
+ X-Contentful-Ratelimit-Second-Limit:
68
+ - '10'
69
+ X-Contentful-Ratelimit-Second-Remaining:
70
+ - '9'
71
+ X-Contentful-Request-Id:
72
+ - ec8d18ce16f490826aa9fad2da805fab
73
+ X-Contentful-Route:
74
+ - "/spaces/:id"
75
+ X-Download-Options:
76
+ - noopen
77
+ X-Frame-Options:
78
+ - ALLOWALL
79
+ X-Permitted-Cross-Domain-Policies:
80
+ - none
81
+ X-Xss-Protection:
82
+ - 1; mode=block
83
+ Content-Length:
84
+ - '615'
85
+ Connection:
86
+ - Close
87
+ Set-Cookie:
88
+ - incap_ses_1209_673446=YVZmXgaaL1nUoYajdzvHEDnr9l8AAAAA9AANvTqheZgll2XY47/SVw==;
89
+ path=/; Domain=.contentful.com
90
+ - nlbi_673446=TEfpMs2gcV4tuBwBKsJtVwAAAADqY9XHcdiGX3TdLGbT6y5/; path=/; Domain=.contentful.com
91
+ - visid_incap_673446=Tu9GqOaLRImlZ3thm9+RNznr9l8AAAAAQUIPAAAAAAA1c9Y1VFXr0Jkj3riEyjEx;
92
+ expires=Fri, 07 Jan 2022 10:05:00 GMT; HttpOnly; path=/; Domain=.contentful.com
93
+ X-Cdn:
94
+ - Incapsula
95
+ X-Iinfo:
96
+ - 6-1974143-1974145 NNNN CT(159 160 0) RT(1610017593403 47) q(0 0 3 -1) r(5
97
+ 5) U5
98
+ body:
99
+ encoding: ASCII-8BIT
100
+ string: |+
101
+ {
102
+ "name":"Colorful-Demo-Dev-workflow",
103
+ "sys":{
104
+ "type":"Space",
105
+ "id":"2l3j7k267g9k",
106
+ "version":3,
107
+ "createdBy":{
108
+ "sys":{
109
+ "type":"Link",
110
+ "linkType":"User",
111
+ "id":"0PCYk22mt1xD7gTKZhHycN"
112
+ }
113
+ },
114
+ "createdAt":"2019-09-09T14:37:05Z",
115
+ "updatedBy":{
116
+ "sys":{
117
+ "type":"Link",
118
+ "linkType":"User",
119
+ "id":"0PCYk22mt1xD7gTKZhHycN"
120
+ }
121
+ },
122
+ "updatedAt":"2019-10-25T15:17:48Z",
123
+ "organization":{
124
+ "sys":{
125
+ "type":"Link",
126
+ "linkType":"Organization",
127
+ "id":"1VcAE6naLx3WZBNNUIMMZE"
128
+ }
129
+ }
130
+ }
131
+ }
132
+
133
+ http_version:
134
+ recorded_at: Thu, 07 Jan 2021 11:06:32 GMT
135
+ - request:
136
+ method: get
137
+ uri: https://api.contentful.com/spaces/2l3j7k267g9k/environments/master
138
+ body:
139
+ encoding: UTF-8
140
+ string: ''
141
+ headers:
142
+ X-Contentful-User-Agent:
143
+ - sdk contentful-management.rb/2.13.0; platform ruby/2.6.3; os macOS/18;
144
+ Authorization:
145
+ - Bearer <ACCESS_TOKEN>
146
+ Content-Type:
147
+ - application/vnd.contentful.management.v1+json
148
+ Connection:
149
+ - close
150
+ Host:
151
+ - api.contentful.com
152
+ User-Agent:
153
+ - http.rb/4.4.1
154
+ response:
155
+ status:
156
+ code: 200
157
+ message: OK
158
+ headers:
159
+ Accept-Ranges:
160
+ - bytes
161
+ Access-Control-Allow-Headers:
162
+ - Accept,Accept-Language,Authorization,Cache-Control,Content-Length,Content-Range,Content-Type,DNT,Destination,Expires,If-Match,If-Modified-Since,If-None-Match,Keep-Alive,Last-Modified,Origin,Pragma,Range,User-Agent,X-Http-Method-Override,X-Mx-ReqToken,X-Requested-With,X-Contentful-Version,X-Contentful-Content-Type,X-Contentful-Organization,X-Contentful-Skip-Transformation,X-Contentful-User-Agent,X-Contentful-Enable-Alpha-Feature,X-Contentful-Source-Environment,X-Contentful-Team,X-Contentful-Parent-Id,x-contentful-validate-only,X-Contentful-Skip-UI-Draft-Validation,X-Contentful-Marketplace,X-Contentful-UI-Content-Auto-Save,cf-trace
163
+ Access-Control-Allow-Methods:
164
+ - DELETE,GET,HEAD,POST,PUT,PATCH,OPTIONS
165
+ Access-Control-Allow-Origin:
166
+ - "*"
167
+ Access-Control-Expose-Headers:
168
+ - Etag
169
+ Access-Control-Max-Age:
170
+ - '1728000'
171
+ Cache-Control:
172
+ - no-store
173
+ Cf-Organization-Id:
174
+ - 1VcAE6naLx3WZBNNUIMMZE
175
+ Cf-Space-Id:
176
+ - 2l3j7k267g9k
177
+ Content-Type:
178
+ - application/vnd.contentful.management.v1+json
179
+ Contentful-Api:
180
+ - cma
181
+ Date:
182
+ - Thu, 07 Jan 2021 11:06:34 GMT
183
+ Etag:
184
+ - W/"901485ea9ca14612f2a5764df6b0fc04"
185
+ Referrer-Policy:
186
+ - strict-origin-when-cross-origin
187
+ Server:
188
+ - Contentful
189
+ Strict-Transport-Security:
190
+ - max-age=15768000
191
+ X-Content-Type-Options:
192
+ - nosniff
193
+ X-Contentful-Ratelimit-Hour-Limit:
194
+ - '36000'
195
+ X-Contentful-Ratelimit-Hour-Remaining:
196
+ - '35998'
197
+ X-Contentful-Ratelimit-Reset:
198
+ - '0'
199
+ X-Contentful-Ratelimit-Second-Limit:
200
+ - '10'
201
+ X-Contentful-Ratelimit-Second-Remaining:
202
+ - '8'
203
+ X-Contentful-Request-Id:
204
+ - 9b6794c810697dd6efc6303e4e8ef4d9
205
+ X-Contentful-Route:
206
+ - "/spaces/:space_id/environments/:id"
207
+ X-Download-Options:
208
+ - noopen
209
+ X-Frame-Options:
210
+ - ALLOWALL
211
+ X-Permitted-Cross-Domain-Policies:
212
+ - none
213
+ X-Xss-Protection:
214
+ - 1; mode=block
215
+ Content-Length:
216
+ - '827'
217
+ Connection:
218
+ - Close
219
+ Set-Cookie:
220
+ - incap_ses_1209_673446=Y2ykEEBgTnreoYajdzvHEDrr9l8AAAAAkviSHB+2OK8NcHzKUeC0Wg==;
221
+ path=/; Domain=.contentful.com
222
+ - nlbi_673446=t9IxdbWZoBXar3EkKsJtVwAAAACJnZFzX6lnLUI0ElgfMeWH; path=/; Domain=.contentful.com
223
+ - visid_incap_673446=CY/ac4UKQqSGiRg3sUKObDrr9l8AAAAAQUIPAAAAAADMHW0fGxjNQm6BtzVzbNhH;
224
+ expires=Fri, 07 Jan 2022 10:05:05 GMT; HttpOnly; path=/; Domain=.contentful.com
225
+ X-Cdn:
226
+ - Incapsula
227
+ X-Iinfo:
228
+ - 2-1495637-1495638 NNNY CT(0 0 0) RT(1610017594007 44) q(0 0 0 -1) r(2 2) U5
229
+ body:
230
+ encoding: ASCII-8BIT
231
+ string: |+
232
+ {
233
+ "name":"backup-1",
234
+ "sys":{
235
+ "type":"Environment",
236
+ "id":"master",
237
+ "aliasedEnvironment":{
238
+ "sys":{
239
+ "type":"Link",
240
+ "linkType":"Environment",
241
+ "id":"backup-1"
242
+ }
243
+ },
244
+ "version":3,
245
+ "space":{
246
+ "sys":{
247
+ "type":"Link",
248
+ "linkType":"Space",
249
+ "id":"2l3j7k267g9k"
250
+ }
251
+ },
252
+ "status":{
253
+ "sys":{
254
+ "type":"Link",
255
+ "linkType":"Status",
256
+ "id":"ready"
257
+ }
258
+ },
259
+ "createdBy":{
260
+ "sys":{
261
+ "type":"Link",
262
+ "linkType":"User",
263
+ "id":"6c10tlsIDlE3qvnNoTwYa5"
264
+ }
265
+ },
266
+ "createdAt":"2020-10-05T14:36:26Z",
267
+ "updatedBy":{
268
+ "sys":{
269
+ "type":"Link",
270
+ "linkType":"User",
271
+ "id":"6c10tlsIDlE3qvnNoTwYa5"
272
+ }
273
+ },
274
+ "updatedAt":"2020-10-05T14:36:30Z"
275
+ }
276
+ }
277
+
278
+ http_version:
279
+ recorded_at: Thu, 07 Jan 2021 11:06:32 GMT
280
+ - request:
281
+ method: get
282
+ uri: https://api.contentful.com/spaces/2l3j7k267g9k/environments/master/assets/2lxYoWv3LWHe0yhO3w2Yid
283
+ body:
284
+ encoding: UTF-8
285
+ string: ''
286
+ headers:
287
+ X-Contentful-User-Agent:
288
+ - sdk contentful-management.rb/2.13.0; platform ruby/2.6.3; os macOS/18;
289
+ Authorization:
290
+ - Bearer <ACCESS_TOKEN>
291
+ Content-Type:
292
+ - application/vnd.contentful.management.v1+json
293
+ Connection:
294
+ - close
295
+ Host:
296
+ - api.contentful.com
297
+ User-Agent:
298
+ - http.rb/4.4.1
299
+ response:
300
+ status:
301
+ code: 200
302
+ message: OK
303
+ headers:
304
+ Access-Control-Allow-Headers:
305
+ - Accept,Accept-Language,Authorization,Cache-Control,Content-Length,Content-Range,Content-Type,DNT,Destination,Expires,If-Match,If-Modified-Since,If-None-Match,Keep-Alive,Last-Modified,Origin,Pragma,Range,User-Agent,X-Http-Method-Override,X-Mx-ReqToken,X-Requested-With,X-Contentful-Version,X-Contentful-Content-Type,X-Contentful-Organization,X-Contentful-Skip-Transformation,X-Contentful-User-Agent,X-Contentful-Enable-Alpha-Feature,X-Contentful-Source-Environment,X-Contentful-Team,X-Contentful-Parent-Id,x-contentful-validate-only,X-Contentful-Skip-UI-Draft-Validation,X-Contentful-Marketplace,X-Contentful-UI-Content-Auto-Save,cf-trace
306
+ Access-Control-Allow-Methods:
307
+ - DELETE,GET,HEAD,POST,PUT,PATCH,OPTIONS
308
+ Access-Control-Allow-Origin:
309
+ - "*"
310
+ Access-Control-Expose-Headers:
311
+ - Etag
312
+ Access-Control-Max-Age:
313
+ - '1728000'
314
+ Cache-Control:
315
+ - no-store
316
+ Cf-Environment-Id:
317
+ - master
318
+ Cf-Environment-Uuid:
319
+ - master
320
+ Cf-Space-Id:
321
+ - 2l3j7k267g9k
322
+ Content-Type:
323
+ - application/vnd.contentful.management.v1+json
324
+ Contentful-Api:
325
+ - cma
326
+ Date:
327
+ - Thu, 07 Jan 2021 11:06:35 GMT
328
+ Etag:
329
+ - '"8117790482973496674"'
330
+ Server:
331
+ - Contentful
332
+ Strict-Transport-Security:
333
+ - max-age=15768000
334
+ X-Content-Type-Options:
335
+ - nosniff
336
+ X-Contentful-Ratelimit-Hour-Limit:
337
+ - '36000'
338
+ X-Contentful-Ratelimit-Hour-Remaining:
339
+ - '35997'
340
+ X-Contentful-Ratelimit-Reset:
341
+ - '0'
342
+ X-Contentful-Ratelimit-Second-Limit:
343
+ - '10'
344
+ X-Contentful-Ratelimit-Second-Remaining:
345
+ - '7'
346
+ X-Contentful-Request-Id:
347
+ - e9987a6feedac9d160825158388850fe
348
+ X-Contentful-Route:
349
+ - "/spaces/:space/environments/:environment/assets/:id"
350
+ Content-Length:
351
+ - '1517'
352
+ Connection:
353
+ - Close
354
+ Set-Cookie:
355
+ - incap_ses_1209_673446=dVwret9u1XPsoYajdzvHEDvr9l8AAAAATsuve5Yp0rNFifAENHDQWg==;
356
+ path=/; Domain=.contentful.com
357
+ - nlbi_673446=0tHYcaIMu2YAHvPnKsJtVwAAAAB0aM8FkVVYSdZiiR9Cm87x; path=/; Domain=.contentful.com
358
+ - visid_incap_673446=q/YtdCgUTpKLYpGlrXXQ/Tvr9l8AAAAAQUIPAAAAAADMMMF1cxU9/9X4djNOAm0R;
359
+ expires=Fri, 07 Jan 2022 10:05:05 GMT; HttpOnly; path=/; Domain=.contentful.com
360
+ X-Cdn:
361
+ - Incapsula
362
+ X-Iinfo:
363
+ - 5-4907447-4907449 NNNN CT(164 163 0) RT(1610017594299 46) q(0 0 3 -1) r(7
364
+ 7) U5
365
+ body:
366
+ encoding: ASCII-8BIT
367
+ string: |
368
+ {
369
+ "metadata": {
370
+ "tags": [
371
+ {
372
+ "sys": {
373
+ "type": "Link",
374
+ "linkType": "Tag",
375
+ "id": "mobQa"
376
+ }
377
+ }
378
+ ]
379
+ },
380
+ "sys": {
381
+ "space": {
382
+ "sys": {
383
+ "type": "Link",
384
+ "linkType": "Space",
385
+ "id": "2l3j7k267g9k"
386
+ }
387
+ },
388
+ "id": "2lxYoWv3LWHe0yhO3w2Yid",
389
+ "type": "Asset",
390
+ "createdAt": "2019-09-09T14:43:26.287Z",
391
+ "updatedAt": "2020-11-23T14:38:46.698Z",
392
+ "environment": {
393
+ "sys": {
394
+ "id": "master",
395
+ "type": "Link",
396
+ "linkType": "Environment"
397
+ }
398
+ },
399
+ "firstPublishedAt": "2019-09-09T14:52:29.719Z",
400
+ "createdBy": {
401
+ "sys": {
402
+ "type": "Link",
403
+ "linkType": "User",
404
+ "id": "0PCYk22mt1xD7gTKZhHycN"
405
+ }
406
+ },
407
+ "updatedBy": {
408
+ "sys": {
409
+ "type": "Link",
410
+ "linkType": "User",
411
+ "id": "2tk1qOdVUXzixfz5dsanLT"
412
+ }
413
+ },
414
+ "publishedCounter": 4,
415
+ "version": 14
416
+ },
417
+ "fields": {
418
+ "title": {
419
+ "en-US": "Berlin skyline"
420
+ },
421
+ "description": {
422
+ "en-US": "changed"
423
+ },
424
+ "file": {
425
+ "en-US": {
426
+ "url": "//images.ctfassets.net/2l3j7k267g9k/2lxYoWv3LWHe0yhO3w2Yid/c6df694a8607018926bfd2fe32fe9b88/photo-1532978794596-d56d649a0493",
427
+ "details": {
428
+ "size": 571480,
429
+ "image": {
430
+ "width": 2550,
431
+ "height": 1700
432
+ }
433
+ },
434
+ "fileName": "photo-1532978794596-d56d649a0493",
435
+ "contentType": "image/jpeg"
436
+ }
437
+ }
438
+ }
439
+ }
440
+ http_version:
441
+ recorded_at: Thu, 07 Jan 2021 11:06:33 GMT
442
+ recorded_with: VCR 4.0.0