Class: ThreeScale::API::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/3scale/api/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(http_client) ⇒ Client



8
9
10
# File 'lib/3scale/api/client.rb', line 8

def initialize(http_client)
  @http_client = http_client
end

Instance Attribute Details

#http_clientObject (readonly)

Returns the value of attribute http_client.



4
5
6
# File 'lib/3scale/api/client.rb', line 4

def http_client
  @http_client
end

Instance Method Details

#application_plan_as_default(service_id, application_plan_id) ⇒ Hash



321
322
323
324
# File 'lib/3scale/api/client.rb', line 321

def application_plan_as_default(service_id, application_plan_id)
  response = http_client.put("/admin/api/services/#{service_id}/application_plans/#{application_plan_id}/default")
  extract(entity: 'application_plan', from: response)
end

#create_activedocs(attributes) ⇒ Hash



425
426
427
428
# File 'lib/3scale/api/client.rb', line 425

def create_activedocs(attributes)
  response = http_client.post('/admin/api/active_docs', body: attributes)
  extract(entity: 'api_doc', from: response)
end

#create_application(account_id, attributes = {}, plan_id:, **rest) ⇒ Hash

Returns an Application.

Options Hash (attributes):

  • :name (String)

    Application Name

  • :description (String)

    Application Description

  • :user_key (String)

    Application User Key

  • :application_id (String)

    Application App ID

  • :application_key (String)

    Application App Key(s)



70
71
72
73
74
# File 'lib/3scale/api/client.rb', line 70

def create_application(, attributes = {}, plan_id:, **rest)
  body = { plan_id: plan_id }.merge(attributes).merge(rest)
  response = http_client.post("/admin/api/accounts/#{account_id}/applications", body: body)
  extract(entity: 'application', from: response)
end

#create_application_plan(service_id, attributes) ⇒ Hash

Options Hash (attributes):

  • :name (String)

    Application Plan Name



282
283
284
285
286
# File 'lib/3scale/api/client.rb', line 282

def create_application_plan(service_id, attributes)
  response = http_client.post("/admin/api/services/#{service_id}/application_plans",
                              body: { application_plan: attributes })
  extract(entity: 'application_plan', from: response)
end

#create_application_plan_feature(application_plan_id, id) ⇒ Hash



499
500
501
502
503
# File 'lib/3scale/api/client.rb', line 499

def create_application_plan_feature(application_plan_id, id)
  response = http_client.post("/admin/api/application_plans/#{application_plan_id}/features",
                              body: { feature_id: id })
  extract(entity: 'feature', from: response)
end

#create_application_plan_limit(application_plan_id, metric_id, attributes) ⇒ Hash



340
341
342
343
344
# File 'lib/3scale/api/client.rb', line 340

def create_application_plan_limit(application_plan_id, metric_id, attributes)
  response = http_client.post("/admin/api/application_plans/#{application_plan_id}/metrics/#{metric_id}/limits",
                              body: { usage_limit: attributes })
  extract(entity: 'limit', from: response)
end

#create_mapping_rule(service_id, attributes) ⇒ Array<Hash>

Options Hash (attributes):

  • :http_method (String)

    HTTP Method

  • :pattern (String)

    Pattern

  • :delta (Fixnum)

    Increase the metric by delta.

  • :metric_id (Fixnum)

    Metric ID



190
191
192
193
194
# File 'lib/3scale/api/client.rb', line 190

def create_mapping_rule(service_id, attributes)
  response = http_client.post("/admin/api/services/#{service_id}/proxy/mapping_rules",
                              body: { mapping_rule: attributes })
  extract(entity: 'mapping_rule', from: response)
end

#create_method(service_id, metric_id, attributes) ⇒ Hash

Options Hash (attributes):

  • :name (String)

    Method Name



253
254
255
256
257
# File 'lib/3scale/api/client.rb', line 253

def create_method(service_id, metric_id, attributes)
  response = http_client.post("/admin/api/services/#{service_id}/metrics/#{metric_id}/methods",
                              body: { metric: attributes })
  extract(entity: 'method', from: response)
end

#create_metric(service_id, attributes) ⇒ Hash

Options Hash (attributes):

  • :name (String)

    Metric Name



233
234
235
236
# File 'lib/3scale/api/client.rb', line 233

def create_metric(service_id, attributes)
  response = http_client.post("/admin/api/services/#{service_id}/metrics", body: { metric: attributes })
  extract(entity: 'metric', from: response)
end

#create_pricingrule(application_plan_id, metric_id, attributes) ⇒ Array<Hash>



410
411
412
413
# File 'lib/3scale/api/client.rb', line 410

def create_pricingrule(application_plan_id, metric_id, attributes)
  response = http_client.post("/admin/api/application_plans/#{application_plan_id}/metrics/#{metric_id}/pricing_rules", body: attributes)
  extract(entity: 'pricing_rule', from: response)
end

#create_service(attributes) ⇒ Hash

Options Hash (attributes):

  • :name (String)

    Service Name



115
116
117
118
# File 'lib/3scale/api/client.rb', line 115

def create_service(attributes)
  response = http_client.post('/admin/api/services', body: { service: attributes })
  extract(entity: 'service', from: response)
end

#create_service_feature(id, attributes) ⇒ Hash



526
527
528
529
530
# File 'lib/3scale/api/client.rb', line 526

def create_service_feature(id, attributes)
  response = http_client.post("/admin/api/services/#{id}/features",
                              body: { feature: attributes})
  extract(entity: 'feature', from: response)
end

#customize_application_plan(account_id, application_id) ⇒ Hash

Returns a Plan.



80
81
82
83
# File 'lib/3scale/api/client.rb', line 80

def customize_application_plan(, application_id)
  response = http_client.put("/admin/api/accounts/#{account_id}/applications/#{application_id}/customize_plan")
  extract(entity: 'application_plan', from: response)
end

#delete_account(id) ⇒ Bool



456
457
458
459
# File 'lib/3scale/api/client.rb', line 456

def (id)
  http_client.delete("/admin/api/accounts/#{id}")
  true
end

#delete_activedocs(id) ⇒ Hash



441
442
443
444
# File 'lib/3scale/api/client.rb', line 441

def delete_activedocs(id)
  http_client.delete("/admin/api/active_docs/#{id}")
  true
end

#delete_application(account_id, id) ⇒ Bool



465
466
467
468
# File 'lib/3scale/api/client.rb', line 465

def delete_application(, id)
  http_client.delete("/admin/api/accounts/#{account_id}/applications/#{id}")
  true
end

#delete_application_plan(service_id, application_plan_id) ⇒ Bool



312
313
314
315
# File 'lib/3scale/api/client.rb', line 312

def delete_application_plan(service_id,application_plan_id)
  http_client.delete("/admin/api/services/#{service_id}/application_plans/#{application_plan_id}")
  true
end

#delete_application_plan_customization(account_id, application_id) ⇒ Hash

Returns a Plan.



89
90
91
92
# File 'lib/3scale/api/client.rb', line 89

def delete_application_plan_customization(, application_id)
  response = http_client.put("/admin/api/accounts/#{account_id}/applications/#{application_id}/decustomize_plan")
  extract(entity: 'application_plan', from: response)
end

#delete_application_plan_feature(application_plan_id, id) ⇒ Boolean



509
510
511
512
# File 'lib/3scale/api/client.rb', line 509

def delete_application_plan_feature(application_plan_id, id)
  http_client.delete("/admin/api/application_plans/#{application_plan_id}/features/#{id}")
  true
end

#delete_application_plan_limit(application_plan_id, metric_id, limit_id) ⇒ Object



361
362
363
364
# File 'lib/3scale/api/client.rb', line 361

def delete_application_plan_limit(application_plan_id, metric_id, limit_id)
  http_client.delete("/admin/api/application_plans/#{application_plan_id}/metrics/#{metric_id}/limits/#{limit_id}")
  true
end

#delete_mapping_rule(service_id, id) ⇒ Array<Hash>



200
201
202
203
# File 'lib/3scale/api/client.rb', line 200

def delete_mapping_rule(service_id, id)
  http_client.delete("/admin/api/services/#{service_id}/proxy/mapping_rules/#{id}")
  true
end

#delete_service(id) ⇒ Object



29
30
31
32
# File 'lib/3scale/api/client.rb', line 29

def delete_service(id)
  http_client.delete("/admin/api/services/#{id}")
  true
end

#delete_service_feature(service_id, id) ⇒ Boolean



556
557
558
559
# File 'lib/3scale/api/client.rb', line 556

def delete_service_feature(service_id, id)
  http_client.delete("/admin/api/services/#{service_id}/features/#{id}")
  true
end

#find_account(criteria) ⇒ Hash



369
370
371
372
# File 'lib/3scale/api/client.rb', line 369

def (criteria)
  response = http_client.get('/admin/api/accounts/find', params: criteria)
  extract(entity: 'account', from: response)
end

#find_application(id: nil, user_key: nil, application_id: nil) ⇒ Hash



55
56
57
58
59
# File 'lib/3scale/api/client.rb', line 55

def find_application(id: nil, user_key: nil, application_id: nil)
  params = { application_id: id, user_key: user_key, app_id: application_id }.reject { |_, value| value.nil? }
  response = http_client.get('/admin/api/applications/find', params: params)
  extract(entity: 'application', from: response)
end

#list_accountsArray<Hash>



448
449
450
451
# File 'lib/3scale/api/client.rb', line 448

def list_accounts
  response = http_client.get('/admin/api/accounts')
  extract(collection: 'accounts', entity: 'account', from: response)
end

#list_activedocsArray<Hash>



417
418
419
420
# File 'lib/3scale/api/client.rb', line 417

def list_activedocs
  response = http_client.get('/admin/api/active_docs')
  extract(collection: 'api_docs', entity: 'api_doc', from: response)
end

#list_application_plan_limits(application_plan_id) ⇒ Array<Hash>



329
330
331
332
333
# File 'lib/3scale/api/client.rb', line 329

def list_application_plan_limits(application_plan_id)
  response = http_client.get("/admin/api/application_plans/#{application_plan_id}/limits")

  extract(collection: 'limits', entity: 'limit', from: response)
end

#list_applications(service_id: nil) ⇒ Array<Hash>



37
38
39
40
41
# File 'lib/3scale/api/client.rb', line 37

def list_applications(service_id: nil)
  params = service_id ? { service_id: service_id } : nil
  response = http_client.get('/admin/api/applications', params: params)
  extract(collection: 'applications', entity: 'application', from: response)
end

#list_features_per_application_plan(application_plan_id) ⇒ Array<Hash>



490
491
492
493
# File 'lib/3scale/api/client.rb', line 490

def list_features_per_application_plan(application_plan_id)
  response = http_client.get("/admin/api/application_plans/#{application_plan_id}/features")
  extract(collection: 'features', entity: 'feature', from: response)
end

#list_mapping_rules(service_id) ⇒ Array<Hash>



168
169
170
171
# File 'lib/3scale/api/client.rb', line 168

def list_mapping_rules(service_id)
  response = http_client.get("/admin/api/services/#{service_id}/proxy/mapping_rules")
  extract(entity: 'mapping_rule', collection: 'mapping_rules', from: response)
end

#list_methods(service_id, metric_id) ⇒ Array<Hash>



242
243
244
245
# File 'lib/3scale/api/client.rb', line 242

def list_methods(service_id, metric_id)
  response = http_client.get("/admin/api/services/#{service_id}/metrics/#{metric_id}/methods")
  extract(collection: 'methods', entity: 'method', from: response)
end

#list_metric_limits(application_plan_id, metric_id) ⇒ Hash



263
264
265
266
# File 'lib/3scale/api/client.rb', line 263

def list_metric_limits(application_plan_id, metric_id)
  response = http_client.get("/admin/api/application_plans/#{application_plan_id}/metrics/#{metric_id}/limits")
  extract(collection: 'limits', entity: 'limit', from: response)
end

#list_metrics(service_id) ⇒ Array<Hash>



223
224
225
226
# File 'lib/3scale/api/client.rb', line 223

def list_metrics(service_id)
  response = http_client.get("/admin/api/services/#{service_id}/metrics")
  extract(collection: 'metrics', entity: 'metric', from: response)
end

#list_pricingrules_per_application_plan(application_plan_id) ⇒ Array<Hash>



402
403
404
405
# File 'lib/3scale/api/client.rb', line 402

def list_pricingrules_per_application_plan(application_plan_id)
  response = http_client.get("/admin/api/application_plans/#{application_plan_id}/pricing_rules")
  extract(collection: 'pricing_rules', entity: 'pricing_rule', from: response)
end

#list_pricingrules_per_metric(application_plan_id, metric_id) ⇒ Array<Hash>



394
395
396
397
# File 'lib/3scale/api/client.rb', line 394

def list_pricingrules_per_metric(application_plan_id, metric_id)
  response = http_client.get("/admin/api/application_plans/#{application_plan_id}/metrics/#{metric_id}/pricing_rules")
  extract(collection: 'pricing_rules', entity: 'pricing_rule', from: response)
end

#list_service_application_plans(service_id) ⇒ Array<Hash>



271
272
273
274
275
# File 'lib/3scale/api/client.rb', line 271

def list_service_application_plans(service_id)
  response = http_client.get("/admin/api/services/#{service_id}/application_plans")

  extract(collection: 'plans', entity: 'application_plan', from: response)
end

#list_service_features(id) ⇒ Array<Hash>



517
518
519
520
# File 'lib/3scale/api/client.rb', line 517

def list_service_features(id)
  response = http_client.get("/admin/api/services/#{id}/features")
  extract(collection: 'features', entity: 'feature', from: response)
end

#list_servicesArray<Hash>



22
23
24
25
# File 'lib/3scale/api/client.rb', line 22

def list_services
  response = http_client.get('/admin/api/services')
  extract(collection: 'services', entity: 'service', from: response)
end

#proxy_config_latest(service_id, environment = 'sandbox') ⇒ Hash



151
152
153
154
# File 'lib/3scale/api/client.rb', line 151

def proxy_config_latest(service_id, environment='sandbox')
  response = http_client.get("/admin/api/services/#{service_id}/proxy/configs/#{environment}/latest")
  extract(entity: 'proxy', from: response)
end

#proxy_config_list(service_id, environment = 'sandbox') ⇒ Hash



142
143
144
145
# File 'lib/3scale/api/client.rb', line 142

def proxy_config_list(service_id, environment='sandbox')
  response = http_client.get("/admin/api/services/#{service_id}/proxy/configs/#{environment}")
  extract(entity: 'proxy', from: response)
end

#show_application(id) ⇒ Hash



46
47
48
# File 'lib/3scale/api/client.rb', line 46

def show_application(id)
  find_application(id: id)
end

#show_application_plan(service_id, id) ⇒ Hash



292
293
294
295
# File 'lib/3scale/api/client.rb', line 292

def show_application_plan(service_id, id)
  response = http_client.get("/admin/api/services/#{service_id}/application_plans/#{id}")
  extract(entity: 'application_plan', from: response)
end

#show_mapping_rule(service_id, id) ⇒ Array<Hash>



177
178
179
180
# File 'lib/3scale/api/client.rb', line 177

def show_mapping_rule(service_id, id)
  response = http_client.get("/admin/api/services/#{service_id}/proxy/mapping_rules/#{id}")
  extract(entity: 'mapping_rule', from: response)
end

#show_oidc(service_id) ⇒ Array<Hash>



473
474
475
476
# File 'lib/3scale/api/client.rb', line 473

def show_oidc(service_id)
  response = http_client.get("/admin/api/services/#{service_id}/proxy/oidc_configuration")
  extract(entity: 'oidc_configuration', from: response)
end

#show_policies(id) ⇒ Array



377
378
379
380
# File 'lib/3scale/api/client.rb', line 377

def show_policies(id)
  response = http_client.get("/admin/api/services/#{id}/proxy/policies")
  extract(entity: 'policies_config', from: response)
end

#show_proxy(service_id) ⇒ Hash



133
134
135
136
# File 'lib/3scale/api/client.rb', line 133

def show_proxy(service_id)
  response = http_client.get("/admin/api/services/#{service_id}/proxy")
  extract(entity: 'proxy', from: response)
end

#show_service(id) ⇒ Hash



15
16
17
18
# File 'lib/3scale/api/client.rb', line 15

def show_service(id)
  response = http_client.get("/admin/api/services/#{id}")
  extract(entity: 'service', from: response)
end

#show_service_feature(service_id, id) ⇒ Hash



536
537
538
539
# File 'lib/3scale/api/client.rb', line 536

def show_service_feature(service_id, id)
  response = http_client.get("/admin/api/services/#{service_id}/features/#{id}")
  extract(entity: 'feature', from: response)
end

#signup(attributes = {}, name:, username:, **rest) ⇒ Hash

Returns an Account.

Options Hash (attributes):

  • :email (String)

    User Email

  • :password (String)

    User Password

  • :account_plan_id (String)

    Account Plan ID

  • :service_plan_id (String)

    Service Plan ID

  • :application_plan_id (String)

    Application Plan ID



104
105
106
107
108
109
# File 'lib/3scale/api/client.rb', line 104

def (attributes = {}, name:, username:, **rest)
  body = { org_name: name,
           username: username }.merge(attributes).merge(rest)
  response = http_client.post('/admin/api/signup', body: body)
  extract(entity: 'account', from: response)
end

#update_activedocs(id, attributes) ⇒ Hash



434
435
436
437
# File 'lib/3scale/api/client.rb', line 434

def update_activedocs(id, attributes)
  response = http_client.put("/admin/api/active_docs/#{id}", body: attributes)
  extract(entity: 'api_doc', from: response)
end

#update_application_plan(service_id, id, attributes) ⇒ Hash



302
303
304
305
306
# File 'lib/3scale/api/client.rb', line 302

def update_application_plan(service_id, id, attributes)
  response = http_client.patch("/admin/api/services/#{service_id}/application_plans/#{id}",
                               body: { application_plan: attributes })
  extract(entity: 'application_plan', from: response)
end

#update_application_plan_limit(application_plan_id, metric_id, limit_id, attributes) ⇒ Hash



352
353
354
355
356
# File 'lib/3scale/api/client.rb', line 352

def update_application_plan_limit(application_plan_id, metric_id, limit_id, attributes)
  response = http_client.put("/admin/api/application_plans/#{application_plan_id}/metrics/#{metric_id}/limits/#{limit_id}",
                              body: { usage_limit: attributes })
  extract(entity: 'limit', from: response)
end

#update_mapping_rule(service_id, id, attributes) ⇒ Array<Hash>

Options Hash (attributes):

  • :http_method (String)

    HTTP Method

  • :pattern (String)

    Pattern

  • :delta (Fixnum)

    Increase the metric by delta.

  • :metric_id (Fixnum)

    Metric ID



214
215
216
217
218
# File 'lib/3scale/api/client.rb', line 214

def update_mapping_rule(service_id, id, attributes)
  response = http_client.patch("/admin/api/services/#{service_id}/mapping_rules/#{id}",
                               body: { mapping_rule: attributes })
  extract(entity: 'mapping_rule', from: response)
end

#update_oidc(service_id, attributes) ⇒ Hash



481
482
483
484
485
# File 'lib/3scale/api/client.rb', line 481

def update_oidc(service_id, attributes)
  response = http_client.patch("/admin/api/services/#{service_id}/proxy/oidc_configuration",
                               body: { oidc_configuration: attributes })
  extract(entity: 'oidc_configuration', from: response)
end

#update_policies(id, policies_config) ⇒ Array



385
386
387
388
# File 'lib/3scale/api/client.rb', line 385

def update_policies(id, policies_config)
  response = http_client.put("/admin/api/services/#{id}/proxy/policies", body: policies_config)
  extract(entity: 'policies_config', from: response)
end

#update_proxy(service_id, attributes) ⇒ Hash



159
160
161
162
163
# File 'lib/3scale/api/client.rb', line 159

def update_proxy(service_id, attributes)
  response = http_client.patch("/admin/api/services/#{service_id}/proxy",
                               body: { proxy: attributes })
  extract(entity: 'proxy', from: response)
end

#update_service(service_id, attributes) ⇒ Hash

Options Hash (attributes):

  • :name (String)

    Service Name



125
126
127
128
# File 'lib/3scale/api/client.rb', line 125

def update_service(service_id, attributes)
  response = http_client.put("/admin/api/services/#{service_id}", body: { service: attributes })
  extract(entity: 'service', from: response)
end

#update_service_feature(service_id, id, attributes) ⇒ Hash



546
547
548
549
550
# File 'lib/3scale/api/client.rb', line 546

def update_service_feature(service_id, id, attributes)
  response = http_client.put("/admin/api/services/#{service_id}/features/#{id}",
                             body: { feature: attributes })
  extract(entity: 'feature', from: response)
end