-
Notifications
You must be signed in to change notification settings - Fork 5
/
api.yaml
1092 lines (1091 loc) · 41.4 KB
/
api.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
swagger: '2.0'
info:
version: '2.12'
title: ElasTest Service Manager API
description: >
This is the service manager API. It is an extension of the the Open Service Broker API
(v2.12). The Open Service Broker API defines the contract between the a requesting client
and the service broker. The broker is expected to implement
several HTTP (or HTTPS) endpoints underneath a URI prefix. One or more
services can be provided by a single broker, and load balancing enables
horizontal scalability of redundant brokers. Multiple service provider instances
can be supported by a single broker using different URL prefixes and
credentials. [Learn more about the Service Broker API.]
(https://github.com/openservicebrokerapi/servicebroker/).
Note the [topic on orphan resolution](https://github.com/openservicebrokerapi/servicebroker/blob/master/_spec.md#orphans). It is not dealt with in this spec.
Swagger file copyright: Copyright © 2017-2019 Zuercher Hochschule fuer Angewandte Wissenschaften.
contact:
name: ElasTest
url: https://github.com/elastest/bugtracker
email: [email protected]
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
schemes:
- http
- https
securityDefinitions:
basicAuth:
type: basic
description: >
The open service broker specification requires basic authentication
on all requests. [See here](https://github.com/openservicebrokerapi/servicebroker/blob/v2.12/spec.md#authentication)
security:
- basicAuth: [] # all paths are to have authentication
paths:
/v2/catalog:
get:
operationId: catalog
summary: Gets services registered within the broker
tags:
- catalog
description: >
"The first endpoint that a broker must implement is the service catalog. The client will
initially fetch this endpoint from all brokers and make adjustments to the user-facing service catalog
stored in the a client database. \n"
# parameters:
# - name: X-Broker-Api-Version
# in: header
# description: Version of API requested
# required: true
# type: string
# format: string
# default: 2.11
produces:
- application/json
responses:
'200':
description: Successful operation
schema:
$ref: '#/definitions/Catalog'
/v2/et/catalog:
put:
operationId: registerService
summary: Registers the service with the catalog.
tags:
- catalog
description: >
Service providers need a means to register their service with a service broker.
This provides this functionality. Also using
PUT a service provider can update their registration. Note that this requires
the complete content and will REPLACE the existing service information
registered with the broker.
parameters:
- name: service
description: the service description to register
required: true
in: body
schema:
$ref: '#/definitions/ServiceType'
produces:
- application/json
consumes:
- application/json
responses:
'200':
description: Successful registration. Has an empty body
schema:
$ref: '#/definitions/Empty'
'409':
description: >
'The requested service type already exists. The ID of the service exists in the catalog already'
schema:
$ref: '#/definitions/Error'
delete:
operationId: deleteServiceType
summary: Deletes a registered service type
description: >
Deletes a service that is already registered with the service manager.
It does not delete the manifest or plan associated with the service type.
produces:
- application/json
tags:
- catalog
parameters:
- name: service_id
required: true
in: query
description: service ID to be deprovisioned
type: string
# - name: plan_id
# required: true
# in: query
# description: plan ID of the service to be deprovisioned
# type: string
responses:
'200':
description: >
MUST be returned if the service type was deleted as a
result of this request. The expected response body is {}.
schema:
$ref: '#/definitions/Empty'
'202':
description: >
MUST be returned if the service type deletion is in progress.
schema:
$ref: '#/definitions/Empty'
'404':
description: >
Should be returned if the type does not exist. The expected response body is {}.
schema:
$ref: '#/definitions/Error'
/v2/et/manifest:
get:
operationId: listManifests
summary: returns a list of manifests registered at with the ESM
description: returns a list of manifests registered at with the ESM
tags:
- catalog
produces:
- application/json
responses:
'200':
description: List of manifests
schema:
type: array
items:
$ref: '#/definitions/Manifest'
/v2/et/manifest/{manifest_id}:
# can only store the manifest. later can add further verb support
parameters:
- $ref: '#/parameters/manifest_id'
put:
operationId: storeManifest
summary: takes deployment description of a software service and associates with a service and plan
tags:
- catalog
description: takes deployment description of a software service and associates with a service and plan that is already registered in the service catalog.
consumes:
- application/json
produces:
- application/json
parameters:
- name: manifest
description: the manifest to store
required: true
in: body
schema:
$ref: '#/definitions/Manifest'
responses:
'200':
description: Successful registration. Has an empty body
schema:
$ref: '#/definitions/Empty'
'409':
description: >
'The requested manifest already exists.
The ID of the manifest exists in the catalog already'
schema:
$ref: '#/definitions/Error'
get:
parameters:
- $ref: '#/parameters/manifest_id'
operationId: getManifest
summary: returns a specific of manifest registered at with the ESM
description: hi!
tags:
- catalog
produces:
- application/json
responses:
'200':
description: The requested manifest
schema:
$ref: '#/definitions/Manifest'
/v2/service_instances/{instance_id}:
parameters:
- $ref: '#/parameters/instance_id'
put:
operationId: createServiceInstance
produces:
- application/json
consumes:
- application/json
tags:
- service_instances
description: >
When the broker receives a provision request from a client, it should synchronously take
whatever action is necessary to create a new service resource for the developer.
The result of provisioning varies by service type, although there are a few
common actions that work for many services. Supports asynchronous operations.'
summary: Provisions a service instance
parameters:
# - name: X-Broker-Api-Version
# in: header
# description: Version of API requested
# required: true
# type: string
# format: string
- name: service
required: true
description: Service information.
in: body
schema:
$ref: '#/definitions/ServiceRequest'
- in: query
name: accept_incomplete
required: false
description: 'Indicates that the client is supporting asynchronous operations'
type: boolean
responses:
'200':
description: >
"May be returned if the service instance already exists and the requested parameters are
identical to the existing service instance. The expected response body is below."
schema:
$ref: '#/definitions/ServiceResponse'
'201':
description: Service instance has been created.
schema:
$ref: '#/definitions/ServiceResponse'
'202':
description: Service instance is being created - asynchronous operation
schema:
$ref: '#/definitions/LastOperation'
'409':
description: >
'The requested service instance already exists.'
schema:
$ref: '#/definitions/Error'
'422':
description: "This service plan requires client support for asynchronous service operations."
schema:
$ref: '#/definitions/Error'
patch:
operationId: updateServiceInstance
summary: Updating a Service Instance
description: >
Brokers that implement this endpoint can enable users to modify attributes of an existing
service instance. The first attribute supports users modifying is the service plan.
This effectively enables users to upgrade or downgrade their service instance to
other plans. To see how users make these requests.'
consumes:
- application/json
produces:
- application/json
tags:
- service_instances
parameters:
# - name: X-Broker-Api-Version
# in: header
# description: Version of API requested
# required: true
# type: string
# format: string
- name: plan
description: New Plan information.
required: true
in: body
schema:
$ref: '#/definitions/UpdateRequest'
- in: query
name: accept_incomplete
required: false
description: 'Indicates that the client is supporting asynchronous operations'
type: boolean
responses:
'200':
description: New plan is effective. The expected response body is {}.
schema:
$ref: '#/definitions/Empty'
'202':
description: Service instance is being updated - asynchronous operation
schema:
$ref: '#/definitions/LastOperation'
'422':
description: >
May be returned if the particular plan change requested is not supported
or if the request cannot currently be fulfilled due to the state of the
instance (eg. instance utilization is over the quota of the requested plan).
Broker should include a user-facing message in the body.
Additionally, a 422 can also be returned if the broker only supports
asynchronous update for the requested plan and the request did not include
?accepts_incomplete=true. The expected response body is:
{ "error": "AsyncRequired", "description": "This service plan requires
client support for asynchronous service operations." }.'
schema:
$ref: '#/definitions/Error'
delete:
operationId: deprovisionServiceInstance
summary: Deprovisions a service instance.
description: >
'When a broker receives a deprovision request from a client, it should delete any resources it
created during the provision. Usually this means that all resources are immediately reclaimed for
future provisions.'
produces:
- application/json
tags:
- service_instances
parameters:
# - name: X-Broker-Api-Version
# in: header
# description: Version of API requested
# required: true
# type: string
# format: string
- name: service_id
required: true
in: query
description: service ID to be deprovisioned
type: string
- name: plan_id
required: true
in: query
description: plan ID of the service to be deprovisioned
type: string
- name: accept_incomplete
in: query
required: false
description: 'Indicates that the client is supporting asynchronous operations'
type: boolean
responses:
'200':
description: >
MUST be returned if the service instance was deleted as a
result of this request. The expected response body is {}.
schema:
$ref: '#/definitions/UpdateOperationResponse'
'202':
description: >
MUST be returned if the service instance deletion is in progress.
This triggers the marketplace to poll the Service Instance Last Operation
Endpoint for operation status. Note that a re-sent DELETE request MUST
return a 202 Accepted, not a 200 OK, if the delete request has not completed yet.
schema:
$ref: '#/definitions/LastOperation'
'410':
description: >
Should be returned if the binding does not exist. The expected response body is {}.
schema:
$ref: '#/definitions/Error'
'422':
description: >
'May be returned if the particular plan change requested is not supported or if the request
cannot currently be fulfilled due to the state of the instance (eg. instance utilization is over
the quota of the requested plan). Broker should include a user-facing message in the body. Additionally,
a 422 can also be returned if the broker only supports asynchronous update for the requested plan and
the request did not include ?accepts_incomplete=true. The expected response body is:
{ "error": "AsyncRequired", "description": "This service plan requires client support for
asynchronous service operations." }.'
schema:
$ref: '#/definitions/Error'
/v2/et/service_instances:
get:
operationId: all_instance_info
summary: Returns information about the service instance.
tags:
- service_instances
description: >
Returns all service instances that are accessible to the end-user on this service manager.
produces:
- application/json
responses:
'200':
description: a list of service descriptions
schema:
type: array
items:
$ref: '#/definitions/ServiceInstance'
/v2/et/service_instances/{instance_id}:
parameters:
- $ref: '#/parameters/instance_id'
get:
operationId: instance_info
summary: Returns information about the service instance.
tags:
- service_instances
description: >
Returns information about the service instance. This is a simple read
operation against the broker database and is provided as a developer/consumer
convienence.
produces:
- application/json
responses:
'200':
description: service description
schema:
$ref: '#/definitions/ServiceInstance'
/v2/service_instances/{instance_id}/last_operation:
parameters:
- $ref: '#/parameters/instance_id'
get:
operationId: last_operation_status
summary: Gets the current state of the last operation upon the specified resource.
tags:
- service_instances
description: >
"When a broker returns status code 202 ACCEPTED for provision, update, or deprovision, the
client will begin to poll the /v2/service_instances/:guid/last_operation endpoint to obtain the state of the
last requested operation. The broker response must contain the field state and an optional field description."
parameters:
# - name: X-Broker-Api-Version
# in: header
# description: Version of API requested
# required: true
# type: string
# format: string
- in: query
name: service_id
required: false
description: ID of the service from the catalog.
type: string
- in: query
name: plan_id
required: false
description: ID of the plan from the catalog.
type: string
- in: query
name: operation
required: false
description: >
"A broker-provided identifier for the operation. When a value for operation is included
with asynchronous responses for Provision, Update, and Deprovision requests, the broker
client should provide the same value using this query parameter as a URL-encoded string."
type: string
produces:
- application/json
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/LastOperation'
'410':
description: >
"Appropriate only for asynchronous delete requests. The client will consider this
response a success and remove the resource from its database. The expected response body is {}.
Returning this while the client is polling for create or update operations will be interpreted as
an invalid response and the client will continue polling."
/v2/service_instances/{instance_id}/service_bindings/{binding_id}:
parameters:
- $ref: '#/parameters/instance_id'
- $ref: '#/parameters/binding_id'
put:
operationId: serviceBind
summary: Binds to a service
description: >
When the broker receives a bind request from the client, it should return information
which helps an application to utilize the provisioned resource. This information
is generically referred to as credentials. Applications should be issued
unique credentials whenever possible, so one application access can be
revoked without affecting other bound applications.
produces:
- application/json
consumes:
- application/json
tags:
- service_instances
parameters:
# - name: X-Broker-Api-Version
# in: header
# description: Version of API requested
# required: true
# type: string
# format: string
- name: binding
required: true
in: body
schema:
$ref: '#/definitions/BindingRequest'
responses:
'200':
description: >
May be returned if the binding already exists and the requested parameters are
identical to the existing binding.
schema:
$ref: '#/definitions/BindingResponse'
'201':
description: Binding has been created.
schema:
$ref: '#/definitions/BindingResponse'
'409':
description: >
'Should be returned if the requested binding already exists.
The expected response body is {}, though the description field can
be used to return a user-facing error message.
schema:
$ref: '#/definitions/Empty'
'422':
description: >
Should be returned if the broker requires that app_guid be
included in the request body. The expected response body is:
{ "error": "RequiresApp", "description": "This service supports
generation of credentials through binding an application only." }
schema:
$ref: '#/definitions/Error'
delete:
operationId: serviceUnbind
summary: Unbinds a service
description: >
When a broker receives an unbind request from the client, it should delete any resources
it created in bind. Usually this means that an application immediately cannot access
the resource.
produces:
- application/json
tags:
- service_instances
parameters:
# - name: X-Broker-Api-Version
# in: header
# description: Version of API requested
# required: true
# type: string
# format: string
- name: service_id
in: query
required: true
type: string
description: ID of the service from the catalog.
- name: plan_id
in: query
required: true
type: string
description: ID of the plan from the catalog.
responses:
'200':
description: Binding was deleted. The expected response body is {}.
schema:
$ref: '#/definitions/Empty'
'410':
description: >
Should be returned if the binding does not exist.
The expected response body is {}.
schema:
$ref: '#/definitions/Empty'
parameters:
instance_id:
name: instance_id
description: >
'The instance_id of a service instance is provided by the client. This ID will be used
for future requests (bind and deprovision), so the broker must use it to correlate the resource it creates.'
type: string
in: path
required: true
binding_id:
name: binding_id
description: The binding_id of a service binding is provided by the Cloud Controller.
type: string
in: path
required: true
manifest_id:
name: manifest_id
description: >
The manifest_id of a manifest to be associated with a plan of a servicetype.
type: string
in: path
required: true
definitions:
Catalog:
description: list of service types
type: object
required:
- services
properties:
services:
type: array
items:
$ref: '#/definitions/ServiceType'
ServiceType:
description: Schema of an offered service
type: object
required:
- id
- name
- description
- bindable
- plans
properties:
id:
type: string
description: >
An identifier used to correlate this service in future requests to the broker.
This MUST be globally unique within a platform marketplace.
MUST be a non-empty string. Using a GUID is RECOMMENDED.
name:
type: string
description: >
A CLI-friendly name of the service. All lowercase, no spaces.
This MUST be globally unique within a platform marketplace.
MUST be a non-empty string.
short_name:
type: string
description: >
the textual identifier, typically a 3 character acronym, used for ElasTest services
(e.g. elastest-monitoring-service is EMS)
description:
type: string
description: A short description of the service. MUST be a non-empty string.
bindable:
type: boolean
description: >
Specifies whether service instances of the service can be bound to applications.
This specifies the default for all plans of this service.
Plans can override this field.
tags:
type: array
description: >
Tags provide a flexible mechanism to expose a classification,
attribute, or base technology of a service, enabling equivalent
services to be swapped out without changes to dependent logic in
applications, buildpacks, or other services. E.g. mysql, relational,
redis, key-value, caching, messaging, amqp.
items:
type: string
metadata:
$ref: '#/definitions/ServiceMetadata'
description: >
An opaque object of metadata for a service offering.
Controller treats this as a blob. Note that there are conventions
in existing brokers and controllers for fields that aid in
the display of catalog data.
requires:
type: array
description: >
A list of permissions that the user would have to give the service,
if they provision it.
The only permissions currently supported are `syslog_drain`,
`route_forwarding` and `volume_mount`.
items:
type: string
plan_updateable:
type: boolean
description: >
Whether the service supports upgrade/downgrade for some plans.
Please note that the misspelling of the attribute `plan_updatable` to
`plan_updateable` was done by mistake. We have opted to keep that
misspelling instead of fixing it and thus breaking backward compatibility.
Defaults to `false`.
default: false
plans:
type: array
description: >
A list of plans for this service, schema is defined below.
MUST contain at least one plan.
items:
$ref: '#/definitions/Plan'
dashboard_client:
$ref: '#/definitions/DashboardClient'
description: >
Contains the data necessary to activate the Dashboard SSO feature for this service.
Plan:
description: A plan for the service
type: object
required:
- id
- name
- description
properties:
id:
type: string
description: >
An identifier used to correlate this plan in future requests to the broker.
This MUST be globally unique within a platform marketplace.
MUST be a non-empty string. Using a GUID is RECOMMENDED.
name:
type: string
description: >
The CLI-friendly name of the plan. MUST be unique within the service.
All lowercase, no spaces. MUST be a non-empty string.
description:
type: string
description: >
A short description of the plan. MUST be a non-empty string.
metadata:
# type: object
$ref: '#/definitions/PlanMetadata'
description: >
An opaque object of metadata for a service plan.
Controller treats this as a blob.
Note that there are conventions in existing brokers and controllers
for fields that aid in the display of catalog data.
Note - the ElasTest Cost model will be set here for the particular
offered service.
free:
type: boolean
description: >
When false, service instances of this plan have a cost.
The default is true.
default: true
bindable:
type: boolean
description: >
Specifies whether service instances of the service plan can be bound to
applications. This field is OPTIONAL. If specified, this takes precedence
over the bindable attribute of the service.
If not specified, the default is derived from the service.
DashboardClient:
description: 'Contains the data necessary to activate the Dashboard SSO feature for this service'
type: object
properties:
id:
type: string
description: >
The id of the Oauth client that the dashboard will use.
If present, MUST be a non-empty string.
secret:
type: string
description: >
A secret for the dashboard client. If present, MUST be a non-empty string.
redirect_uri:
type: string
description: >
A URI for the service dashboard.
Validated by the OAuth token server when the dashboard requests a token.
ServiceRequest:
description: Request for a Service instance
type: object
required:
- service_id
- plan_id
- organization_guid
- space_guid
properties:
service_id:
type: string
description: >
The ID of the service (from the catalog).
MUST be globally unique.
MUST be a non-empty string.
plan_id:
type: string
description: >
The ID of the plan (from the catalog) for which the service instance has
been requested. MUST be unique to a service. MUST be a non-empty string.
context:
type: object
description: >
Platform specific contextual information under which the service instance
is to be provisioned. Although most brokers will not use this field,
it could be helpful in determining data placement or applying custom
business rules. context will replace `organization_guid` and `space_guid`
in future versions of the specification - in the interim both SHOULD
be used to ensure interoperability with old and new implementations.
organization_guid:
type: string
description: >
Deprecated in favor of context. The platform GUID for the organization
under which the service instance is to be provisioned.
Although most brokers will not use this field, it might be helpful
for executing operations on a user's behalf.
MUST be a non-empty string.
space_guid:
type: string
description: >
Deprecated in favor of context. The identifier for the project
space within the platform organization. Although most brokers
will not use this field, it might be helpful for executing operations
on a user's behalf. MUST be a non-empty string.
parameters:
type: object
description: >
Configuration options for the service instance.
Controller treats this as a blob.
Brokers SHOULD ensure that the client has provided
valid configuration parameters and values for the operation.
ServiceResponse:
description: >
The URL of a web-based management user interface for the service instance; we refer to
this as a service dashboard. The URL should contain enough information for the dashboard to
identify the resource being accessed.
type: object
required:
- dashboard_url
properties:
dashboard_url:
type: string
description: >
The URL of a web-based management user interface for the service instance;
we refer to this as a service dashboard. The URL MUST contain enough information
for the dashboard to identify the resource being accessed (9189kdfsk0vfnku
in the example below). Note: a broker that wishes to return dashboard_url
for a service instance MUST return it with the initial response to the
provision request, even if the service is provisioned asynchronously.
If present, MUST be a non-empty string.
operation:
type: string
description: >
For asynchronous responses, service brokers MAY return an identifier
representing the operation. The value of this field MUST be provided
by the platform with requests to the Last Operation endpoint in a
URL encoded query parameter. If present, MUST be a non-empty string.
Empty:
type: string
description: 'Expected empty response could be {}'
UpdateRequest:
description: New/Updated Plan to be added to a service.
type: object
required:
- service_id
properties:
context:
type: object
description: >
Contextual data under which the service instance is created.
service_id:
type: string
description: >
The ID of the service (from the catalog). MUST be globally unique.
MUST be a non-empty string.
plan_id:
type: string
description: >
The ID of the plan (from the catalog) for which the service instance
has been requested. MUST be unique to a service. If present, MUST be
a non-empty string. If this field is not present in the request message,
then the broker MUST NOT change the plan of the instance as a
result of this request.
parameters:
type: object
description: >
Configuration options for the service instance. An opaque object, controller
treats this as a blob. Brokers SHOULD ensure that the client has provided valid
configuration parameters and values for the operation. If this field is not
present in the request message, then the broker MUST NOT change the
parameters of the instance as a result of this request.
previous_values:
$ref: '#/definitions/PreviousValues'
description: >
Information about the service instance prior to the update.
PreviousValues:
description: >
Information about the service instance prior to the update.
type: object
properties:
plan_id:
type: string
description: >
ID of the plan prior to the update. If present, MUST be a non-empty string.
service_id:
type: string
description: >
Deprecated; determined to be unnecessary as the value is immutable.
ID of the service for the service instance.
If present, MUST be a non-empty string.
organization_id:
type: string
description: >
Deprecated as it was redundant information. Organization for the service
instance MUST be provided by platforms in the top-level field context.
ID of the organization specified for the service instance. If present,
MUST be a non-empty string.
space_id:
type: string
description: >
Deprecated as it was redundant information. Space for the service instance MUST
be provided by platforms in the top-level field context. ID of the space
specified for the service instance. If present, MUST be a non-empty string.
BindingRequest:
description: >
Information to bind the service to an application.
type: object
required:
- service_id
- plan_id
properties:
app_guid:
type: string
description: >
Deprecated in favor of bind_resource.app_guid. GUID of an application
associated with the binding to be created. If present, MUST be a non-empty string.
plan_id:
type: string
description: >
ID of the plan from the catalog. MUST be a non-empty string.
service_id:
type: string
description: >
ID of the service from the catalog. MUST be a non-empty string.
parameters:
type: object
description: >
Configuration options for the service binding. An opaque object, controller
treats this as a blob. Brokers SHOULD ensure that the client has
provided valid configuration parameters and values for the operation.
bind_resource:
$ref: '#/definitions/BindResource'
description: >
A JSON object that contains data for platform resources associated
with the binding to be created. See Bind Resource Object for more information.
BindResource:
description: >
The bind_resource object contains platform specific information related to
the context in which the service will be used. In some cases the platform might
not be able to provide this information at the time of the binding request,
therefore the bind_resource and its fields are OPTIONAL.
type: object
properties:
app_guid:
type: string
description: >
GUID of an application associated with the binding. For credentials bindings.
route:
type: string
description: >
URL of the application to be intermediated. For route services bindings.
BindingResponse:
description: Success binding response.
type: object
properties:
credentials:
type: object
description: >
A free-form hash of credentials that can be used by applications
or users to access the service.
syslog_drain_url:
type: string
description: >
A URL to which logs MUST be streamed. "requires":["syslog_drain"] MUST
be declared in the Catalog endpoint or the platform MUST consider the
response invalid.
route_service_url:
type: string
description: >
A URL to which the platform MUST proxy requests for the address sent with
bind_resource.route in the request body. "requires":["route_forwarding"]
MUST be declared in the Catalog endpoint or the platform can consider
the response invalid.
volume_mounts:
type: array
items:
type: object
description: >
An array of configuration for mounting volumes. "requires":["volume_mount"]
MUST be declared in the Catalog endpoint or the platform can consider the
response invalid.
ServiceMetadata:
description: >
metadata related to the service. The attributes are defined by the
best practices [here](https://docs.cloudfoundry.org/services/catalog-metadata.html#services-metadata-fields)
type: object
properties:
displayName:
type: string
description: The name of the service to be displayed in graphical clients.
imageUrl:
type: string
description: The URL to an image.
longDescription:
type: string
description: Long description
providerDisplayName:
type: string
description: The name of the upstream entity providing the actual service.
documentationUrl:
type: string
description: Link to documentation page for service.
supportUrl:
type: string
description: Link to support for the service.
extras:
type: object
description: additional attributes
PlanMetadata:
description: >
This is the plan metadata as required by the CloudFoundry broker best practices
type: object
properties:
bullets:
type: string
description: Features of this plan, to be displayed in a bulleted-list
costs:
type: object
description: >
An array-of-objects that describes the costs of a service, in what currency,
and the unit of measure. If there are multiple costs, all of them could be
billed to the user (such as a monthly + usage costs at once). Each object
must provide the following keys: amount: { usd: float }, unit: string
This indicates the cost in USD of the service plan, and how frequently
the cost is occurred, such as “MONTHLY” or “per 1000 messages”.
NOTE - this will be replaced by the ElasTest cost model.
displayName: