28msec/28.io-angularjs

View on GitHub
swagger/auth.json

Summary

Maintainability
Test Coverage
{
    "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"
                }
            }
        }
    }
}