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



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

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



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

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/#{}/applications", body: body)
  extract(entity: 'application', from: response)
end

#create_application_plan(service_id, attributes) ⇒ Hash

Options Hash (attributes):

  • :name (String)

    Application Plan Name



347
348
349
350
351
# File 'lib/3scale/api/client.rb', line 347

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



564
565
566
567
568
# File 'lib/3scale/api/client.rb', line 564

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



405
406
407
408
409
# File 'lib/3scale/api/client.rb', line 405

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



307
308
309
310
311
# File 'lib/3scale/api/client.rb', line 307

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



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

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>



475
476
477
478
# File 'lib/3scale/api/client.rb', line 475

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



591
592
593
594
595
# File 'lib/3scale/api/client.rb', line 591

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/#{}/applications/#{application_id}/customize_plan")
  extract(entity: 'application_plan', from: response)
end

#delete_account(id) ⇒ Bool



521
522
523
524
# File 'lib/3scale/api/client.rb', line 521

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

#delete_activedocs(id) ⇒ Hash



506
507
508
509
# File 'lib/3scale/api/client.rb', line 506

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

#delete_application(account_id, id) ⇒ Bool



530
531
532
533
# File 'lib/3scale/api/client.rb', line 530

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

#delete_application_plan(service_id, application_plan_id) ⇒ Bool



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

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/#{}/applications/#{application_id}/decustomize_plan")
  extract(entity: 'application_plan', from: response)
end

#delete_application_plan_feature(application_plan_id, id) ⇒ Boolean



574
575
576
577
# File 'lib/3scale/api/client.rb', line 574

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



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

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_method(service_id, parent_id, id) ⇒ Bool



318
319
320
321
# File 'lib/3scale/api/client.rb', line 318

def delete_method(service_id, parent_id, id)
  http_client.delete("/admin/api/services/#{service_id}/metrics/#{parent_id}/methods/#{id}")
  true
end

#delete_metric(service_id, metric_id) ⇒ Bool



265
266
267
268
# File 'lib/3scale/api/client.rb', line 265

def delete_metric(service_id, metric_id)
  http_client.delete("/admin/api/services/#{service_id}/metrics/#{metric_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



621
622
623
624
# File 'lib/3scale/api/client.rb', line 621

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

#find_account(criteria) ⇒ Hash



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

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>



513
514
515
516
# File 'lib/3scale/api/client.rb', line 513

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

#list_activedocsArray<Hash>



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

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>



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

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>



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

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>



296
297
298
299
# File 'lib/3scale/api/client.rb', line 296

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



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

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>



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

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>



467
468
469
470
# File 'lib/3scale/api/client.rb', line 467

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>



459
460
461
462
# File 'lib/3scale/api/client.rb', line 459

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>



336
337
338
339
340
# File 'lib/3scale/api/client.rb', line 336

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>



582
583
584
585
# File 'lib/3scale/api/client.rb', line 582

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



357
358
359
360
# File 'lib/3scale/api/client.rb', line 357

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_method(service_id, parent_id, id) ⇒ Hash



275
276
277
278
# File 'lib/3scale/api/client.rb', line 275

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

#show_metric(service_id, id) ⇒ Hash



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

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

#show_oidc(service_id) ⇒ Array<Hash>



538
539
540
541
# File 'lib/3scale/api/client.rb', line 538

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



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

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



601
602
603
604
# File 'lib/3scale/api/client.rb', line 601

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



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

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



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

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



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

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_method(service_id, parent_id, id, attributes) ⇒ Hash



286
287
288
289
290
# File 'lib/3scale/api/client.rb', line 286

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

#update_metric(service_id, metric_id, attributes) ⇒ Hash

Options Hash (attributes):

  • :friendly_name (String)

    Metric Name

  • :unit (String)

    Metric unit

  • :description (String)

    Metric description



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

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

#update_oidc(service_id, attributes) ⇒ Hash



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

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



450
451
452
453
# File 'lib/3scale/api/client.rb', line 450

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



611
612
613
614
615
# File 'lib/3scale/api/client.rb', line 611

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