-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathauth.json
184 lines (184 loc) · 11.1 KB
/
auth.json
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
{
"apiVersion": "1.0",
"swaggerVersion": "1.2",
"basePath": "http://portal.28.io",
"resourcePath": "/auth",
"produces": ["application/json"],
"description": "<p>This OAuth2 compliant API can be used to authorize requests. The endpoint for these methods is <code>http://portal.28.io/auth</code>.</p>",
"apis": [
{
"path": "/auth",
"operations": [
{
"method": "POST",
"summary": "Creates or refreshes authorization tokens",
"notes": "<p>This <a href=\"http://oauth.net/2/\" target=\"_blank\">OAuth2</a> compliant endpoint can be used both create new authorization tokens or to refresh an existing ones. There are three types of authorization tokens provided by this endpoint.</p><dl class=\"dl-horizontal\"><dt>Access token</dt><dd>The access token is used to authorize requests on your 28.io account. These methods are currently unstable and are not documented yet.</dd><dt>Refresh Token</dt><dd>This token is used to renew the validity of your current authorization tokens.</dd><dt>Project token</dt><dd>This token is used to authorize requests to a 28.io project. For instance, the project token named <code>myproject</code> can be used to authorize any request to the <code>http://myproject.28.io</code> endpoint.</dd></dl><p>Any successful request to this endpoint will return the access, refresh, and project tokens.</p><p>To create new authorization tokens, the <code>grant_type</code> parameter must be set to <code>client_credentials</code> and the <code>email</code>. The <code>password</code> parameters must be specified as well.</p><p>To refresh the validity of your authorized tokens, the <code>grant_type</code> parameter must be set to <code>refresh_token</code> and the <code>refresh_token</code> parameter must be specified. In this scenario, new authorization tokens will be granted.</p><p>The format of the expiration date of a token is <a href=\"http://www.w3.org/TR/xmlschema-2/#isoformats\" target=\"_blank\">ISO 8601 compliant</a>.</p>",
"type": "Authentication",
"nickname": "authenticate",
"parameters": [
{
"name": "grant_type",
"description": "Authorization grant type. Use <code>client_credentials</code> to create a token or <code>refresh_token</code> to refresh a token",
"required": true,
"type": "string",
"enum": ["client_credentials", "refresh_token"],
"paramType": "query"
},
{
"name": "email",
"description": "The account email. Mandatory if <code>grant_type=client_credentials</code>.",
"required": false,
"type": "string",
"paramType": "query"
},
{
"name": "password",
"description": "The account password. Mandatory if <code>grant_type=client_credentials</code>.",
"required": false,
"type": "string",
"paramType": "query"
},
{
"name": "refresh_token",
"description": "The <code>refresh_token</code> obtained in the last successful request to this endpoint. Mandatory if <code>grant_type=refresh_token</code>.",
"required": false,
"type": "string",
"paramType": "query"
}
],
"successMessages": [
{
"code": 200,
"message": "New authorization tokens have been granted.",
"responseModel": "Authentication"
}
],
"responseMessages": [
{
"code": 400,
"message": "Bad request: a parameter is missing or invalid.",
"responseModel": "Error"
},
{
"code": 403,
"message": "The specified password or refresh token is invalid.",
"responseModel": "Error"
},
{
"code": 409,
"message": "The specified user has not been confirmed.",
"responseModel": "Error"
},
{
"code": 404,
"message": "The specified account cannot be found.",
"responseModel": "Error"
},
{
"code": 500,
"message": "An internal error occurred during the processing of the request.",
"responseModel": "Error"
}
],
"examples": [
{
"title": "Granting a new authorization token",
"description": "The following request creates a new authorization token.",
"request": "curl -X POST http://portal.28.io/auth?email=my@email.com&password=mypassword&grant_type=client_credentials",
"response": "< 200 OK\n{\n \"token_type\" : \"bearer\",\n \"expiration_date\" : \"2013-11-06T01:54:29.83945Z\",\n \"access_token\" : \"dGZKZ0VYT1VWV2l1R1BLQ1NBTjVmcEJlWU04PToyMDEzLTExLTA2VDAxOjU0OjI5LjgzOTQ1Wg==\",\n \"refresh_token\" : \"dGZKZ0VYT1VWV2l1R1BLQ1NBTjVmcEJlWU04PToyMDEzLTExLTA2VDAxOjU0OjI5LjgzOTQ1Wg==\",\n \"project_tokens\" : {\n \"project_zurich\" : \"QllXcXM3OHV4N2IweitabGZKeExkZVBreGZJPToyMDEzLTExLTA2VDAxOjU0OjI5LjgzOTQ1Wg==\" },\n \"accountMetadata\" : {\n \"id\" : \"1\",\n \"email\" : \"my@email.com\",\n \"firstname\" : \"John\",\n \"lastname\" : \"Smith\",\n \"company\" : \"Acme\",\n \"createdAt\" : \"2013-10-31T15:26:12.702226Z\",\n \"type\" : \"free\",\n \"confirmedAt\" : \"2013-10-31T15:26:31.081456Z\"\n },\n \"projectsMetadata\" : [{\n \"name\" : \"zurich\",\n \"created\" : \"2013-10-31T15:59:55.117077Z\",\n \"package\" : \"free\",\n \"status\" : \"active\",\n \"avatarKey\" : 8,\n \"version\" : \"1.0\",\n \"sausaVesion\" : \"2.8.0\",\n \"lastUpdated\" : \"2013-10-31T15:59:55.117077Z\",\n \"lastModified\" : \"2013-10-31T15:59:55.117077Z\",\n \"databaseType\" : \"28msec\"\n }]\n}"
}
,
{
"title": "Refreshing an authorization token",
"description": "The following request refreshes the validity of an authorization token.",
"request": "curl -X POST http://portal.28.io/auth?refresh_token=dGZKZ0VYT1VWV2l1R1BLQ1NBTjVmcEJlWU04PToyMDEzLTExLTA2VDAxOjU0OjI5LjgzOTQ1Wg==&grant_type=refresh_token",
"response": "< 200 OK\n{\n \"token_type\" : \"bearer\",\n \"expiration_date\" : \"2013-11-06T02:17:50.769451Z\",\n \"access_token\" : \"ejRISUlaY2FFNUs2dGZOQ0FrTnRRY2hRVkNnPToyMDEzLTExLTA2VDAyOjE3OjUwLjc2OTQ1MVo=\",\n \"refresh_token\" : \"ejRISUlaY2FFNUs2dGZOQ0FrTnRRY2hRVkNnPToyMDEzLTExLTA2VDAyOjE3OjUwLjc2OTQ1MVo=\",\n \"project_tokens\" : {\n \"project_zurich\" : \"aUhxKzRJRU1VbHhwWS9OWGNsS2lDdXpKVXNrPToyMDEzLTExLTA2VDAyOjE3OjUwLjc2OTQ1MVo=\"\n }\n}"
}
]
}
]
}
],
"models": {
"Error": {
"id": "Error",
"description": "Error information",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"description": "The XQuery error code of the error"
},
"message": {
"type": "string",
"description": "A formatted string which contain the error code (always) and the module name, line and column-number and error description (when available)"
},
"description": {
"type": "string",
"description": "The error description"
},
"module": {
"type": "string",
"description": "The error module"
},
"line-number": {
"type": "string",
"description": "The error line number"
},
"column-number": {
"type": "string",
"description": "The error column number"
}
}
},
"Authentication": {
"id": "Authentication",
"description": "Authentication data",
"required": [
"token_type",
"expiration_date",
"access_token",
"refresh_token",
"project_tokens"
],
"properties": {
"token_type": {
"type": "string",
"description": "The API token type",
"enum": [
"bearer"
]
},
"expiration_date": {
"type": "date-time",
"description": "The expiration date of all the tokens in the response"
},
"access_token": {
"type": "string",
"description": "The API token"
},
"refresh_token": {
"type": "string",
"description": "The refresh token which can be used to refresh both the API and project tokens"
},
"project_tokens": {
"type": "ProjectTokens",
"description": "The project tokens which can be used to make request to the APIs on the project endpoints"
}
}
},
"ProjectTokens": {
"id": "ProjectTokens",
"description": "An object containing zero or more project tokens. Each project token is stored in a different field project_{name}, where {name} is the project name, (e.g.: portal).",
"properties": {
"project_{name}": {
"type": "string",
"description": "The token for the project {name}. One field for each project owned by the account will be present"
}
}
}
}
}