-
Notifications
You must be signed in to change notification settings - Fork 0
/
apiary.apib
131 lines (99 loc) · 3.82 KB
/
apiary.apib
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
FORMAT: 1A
HOST: http://example.gslb.openstack.org/
# OpenStack GSLB
An API for managing Global Load Balancers
# GSLB API Root [/]
This should return the usual versions / data types stuff
## Root [GET]
+ Response 200 (application/json)
{
"versions":{
"v1.0":{
"status": "CURRENT",
"links":{
"self": "http://example.gslb.openstack.org/v1.0/"
}
}
}
}
## Root [/v1.0]
This should be a JSON Home style thing
## Root [GET]
+ Response 200 (application/json)
{
"LIST OF ENDPOINTS": "HERE"
}
# Group GSLB
## GLSBs [/v1.0/gslbs]
This will be the main point of contact in the API
Maybe should be similar to the Neutron LBaaS V2 API.
### List [GET]
+ Response 200 (application/json)
{
"gslbs": [
{
"id": "f9fc6210-8efa-4492-9b4f-d87ba98f35b8"
"name": "Main Website",
"fqdn": "www.gslb.example.com.",
"domain_name": "example.com."
"flavor": "example_1",
"status": "ACTIVE",
"pool_members":[
{"id":"a57b4a05-b04d-45a5-b60d-06fcd5927750"},
{"id":"02439266-c215-4fc8-84f6-466349e30f38"},
{"id":"7b231857-d1d4-4bf4-9d18-9b48db02eb50"}
],
"links": {
"self" : "http://example.gslb.openstack.org/v1.0/gslbs/f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
"pool_members" : "http://example.gslb.openstack.org/v1.0/gslbs/f9fc6210-8efa-4492-9b4f-d87ba98f35b8/pool_members",
"status" : "http://example.gslb.openstack.org/v1.0/gslbs/f9fc6210-8efa-4492-9b4f-d87ba98f35b8/status"
}
}
],
"metadata": {"tbd":""}
}
### Create [POST]
+ Request (application/json)
{
"name": "Main Website",
"fqdn": "www.gslb.example.com.",
"domain_name": "example.com."
"flavor": "example_1",
}
+ Response 202 (application/json)
{
"id": "f9fc6210-8efa-4492-9b4f-d87ba98f35b8"
"name": "Main Website",
"fqdn": "www.gslb.example.com.",
"domain_name": "example.com."
"flavor": "example_1",
"pool_members":[],
"status": "CREATING",
"links": {
"self" : "http://example.gslb.openstack.org/v1.0/gslbs/f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
"pool_members" : "http://example.gslb.openstack.org/v1.0/gslbs/f9fc6210-8efa-4492-9b4f-d87ba98f35b8/pool_members",
"status" : "http://example.gslb.openstack.org/v1.0/gslbs/f9fc6210-8efa-4492-9b4f-d87ba98f35b8/status"
}
}
# Group Flavors
## Flavor Operations [/v1.0/flavors]
This should be something similar to the neutron flavor frame work - but maybe not as complex
This will allow for different backends to expose capabilities to the end user, and allow for a multi vendor solution
### List [GET]
+ Response 200 (application/json)
{
"flavors": [
{
"id": "f9fc6210-8efa-4492-9b4f-d87ba98f35b8"
"name": "example_1",
"tags": [
""
],
"links": {
"self" : "http://example.gslb.openstack.org/v1.0/flavors/f9fc6210-8efa-4492-9b4f-d87ba98f35b8",
"tags" : "http://example.gslb.openstack.org/v1.0/flavors/f9fc6210-8efa-4492-9b4f-d87ba98f35b8/tags"
}
}
],
"metadata": {"tbd":""}
}