/api/login POST

Method URL

POST

/api/login

Headers

Header Name HeaderValue

Accept

application/json

Content-Type

application/json

Params

Type Name Required Schema Description

JSON

username

YES

String

JSON

password

YES

String

Plain text password

Samples

login with wrong password, server returns unauthorized

Request

curl -X "POST" "http://localhost:8080/api/login" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d $'{
    "username": "sherlock",
    "password": "wrongpassword"
}'

Response

401

Successful login

Request

curl -X "POST" "http://localhost:8080/api/login" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d $'{
    "username": "sherlock",
    "password": "elementary"
}'

Response

200

{
    "access_token": "eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTUFVcL2NRQlI4dmh5Q0NJbVBTSW1VQXBwQUZcL21rcEx3cWgwZ2taSEVJY3cxSW9EMzdZUmJXdTJaM0RYY051aW9wS0loSWtKQm9LZmtuU1pNZkVJV0NscG8yYncySER4ckVWdmJiOGN5OEdWOWN3NURSOERIUmpBdmpaeUpQdVBSTnBybE1ERWE1NXJicjV3WjFqTFpBZkNtQUxackE3ZkVxNEFWUTRiR0ZWOEUyMjJNMXdXUlNhN2EzTWJMMWpvWVBTaWQzakp1YXBiaXY5STVcL3p4MHBqUThFU21ydnZBTERxekRKb2tqbDBpNHFPZFwvSnVNWjRGU2JLV2FDaUhUZDZIZEVOU3N1Wk1JUFFZWlNzTFRBT1lKVGxka3VSS2tkallmeldiRzY1cUlWbzZ3R01aTXdZY3Zkb2s5QTY2KzdlMlpTMHdTNGNRTFdUZVhRb3Uxa0g5UjJQUDZlRW9LMjVrbWFtSlZNVjgwM3V4SW1cL04zWDg1K2lzMTZvQVVDYnZuXC82bW5MOXRRT1wvWCtzMTBFYlFYV1hnellMMkUxVHNadVprc21WYzBPdVdcL3Awc1wvVHE2XC9yYjBnWllmNFwvUHcrWmo3ZEpkZWRVMm5HTkxOcW9DT2kzYSs2WnlKdlBFM2ViNkhyaHp6TkJOSWZKUzNHOXhJbE1hMWIxVXIwODdid2Nya1p6RzgwbW1IbzNrYk1GbXBCOVpQdVdMRzI2OHNQRkxWMWVQWDk5OUc3ZjhTeEFFTjdUT1JJcVUrVW9NVThiYVArZW5FeU5mcno4ckRZb2Y4XC9cL3dmNlQ5M3RFd01BQUE9PSIsInN1YiI6InNoZXJsb2NrIiwicm9sZXMiOlsiUk9MRV9CT1NTIl0sImV4cCI6MTUwMjYyMDczOSwiaWF0IjoxNTAyNjE3MTM5fQ.UcD-tg5cbiIbJ8S5OmIo-XzYNSQy6sXp099UHyLYQ6k",
    "refresh_token": "eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTUFVcL2NRQlI4dmh5Q0NJbVBTSW1VQXBwQUZcL21rcEx3cWgwZ2taSEVJY3cxSW9EMzdZUmJXdTJaM0RYY051aW9wS0loSWtKQm9LZmtuU1pNZkVJV0NscG8yYncySER4ckVWdmJiOGN5OEdWOWN3NURSOERIUmpBdmpaeUpQdVBSTnBybE1ERWE1NXJicjV3WjFqTFpBZkNtQUxackE3ZkVxNEFWUTRiR0ZWOEUyMjJNMXdXUlNhN2EzTWJMMWpvWVBTaWQzakp1YXBiaXY5STVcL3p4MHBqUThFU21ydnZBTERxekRKb2tqbDBpNHFPZFwvSnVNWjRGU2JLV2FDaUhUZDZIZEVOU3N1Wk1JUFFZWlNzTFRBT1lKVGxka3VSS2tkallmeldiRzY1cUlWbzZ3R01aTXdZY3Zkb2s5QTY2KzdlMlpTMHdTNGNRTFdUZVhRb3Uxa0g5UjJQUDZlRW9LMjVrbWFtSlZNVjgwM3V4SW1cL04zWDg1K2lzMTZvQVVDYnZuXC82bW5MOXRRT1wvWCtzMTBFYlFYV1hnellMMkUxVHNadVprc21WYzBPdVdcL3Awc1wvVHE2XC9yYjBnWllmNFwvUHcrWmo3ZEpkZWRVMm5HTkxOcW9DT2kzYSs2WnlKdlBFM2ViNkhyaHp6TkJOSWZKUzNHOXhJbE1hMWIxVXIwODdid2Nya1p6RzgwbW1IbzNrYk1GbXBCOVpQdVdMRzI2OHNQRkxWMWVQWDk5OUc3ZjhTeEFFTjdUT1JJcVUrVW9NVThiYVArZW5FeU5mcno4ckRZb2Y4XC9cL3dmNlQ5M3RFd01BQUE9PSIsInN1YiI6InNoZXJsb2NrIiwicm9sZXMiOlsiUk9MRV9CT1NTIl0sImlhdCI6MTUwMjYxNzEzOX0.MjJem5CjRwbUe1QxBafqUMzYPQ0xjcgVpHOHJ4KghFI",
    "roles": [
        "ROLE_BOSS"
    ],
    "token_type": "Bearer",
    "expires_in": 3600,
    "username": "sherlock"
}

/api/validate POST

Method URL

POST

/api/validate

Headers

Header Name HeaderValue

Accept

application/json

Authorization

Bearer XXXXXXX

Samples

Return 401 if the user supplies a wrong accessToken

Request

curl -X "POST" "http://localhost:8080/api/validate" \
     -H "Accept: application/json" \
     -H "Authorization: Bearer XXXXXXX" \
     -d $'{
    "username": "sherlock",
    "password": "elementary"
}'

Response

401

null

Endpoint returns 200 if the access token is valid

Request

curl -X "POST" "http://localhost:8080/api/validate" \
     -H "Accept: application/json" \
     -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTUFVcL2NRQlI4dmh5Q0NJbVBTSW1VQXBwQUZcL21rcEx3cWgwZ2taSEVJY3cxSW9EMzdZUmJXdTJaM0RYY051aW9wS0loSWtKQm9LZmtuU1pNZkVJV0NscG8yYncySER4ckVWdmJiOGN5OEdWOWN3NURSOERIUmpBdmpaeUpQdVBSTnBybE1ERWE1NXJicjV3WjFqTFpBZkNtQUxackE3ZkVxNEFWUTRiR0ZWOEUyMjJNMXdXUlNhN2EzTWJMMWpvWVBTaWQzakp1YXBiaXY5STVcL3p4MHBqUThFU21ydnZBTERxekRKb2tqbDBpNHFPZFwvSnVNWjRGU2JLV2FDaUhUZDZIZEVOU3N1Wk1JUFFZWlNzTFRBT1lKVGxka3VSS2tkallmeldiRzY1cUlWbzZ3R01aTXdZY3Zkb2s5QTY2KzdlMlpTMHdTNGNRTFdUZVhRb3Uxa0g5UjJQUDZlRW9LMjVrbWFtSlZNVjgwM3V4SW1cL04zWDg1K2lzMTZvQVVDYnZuXC82bW5MOXRRT1wvWCtzMTBFYlFYV1hnellMMkUxVHNadVprc21WYzBPdVdcL3Awc1wvVHE2XC9yYjBnWllmNFwvUHcrWmo3ZEpkZWRVMm5HTkxOcW9DT2kzYSs2WnlKdlBFM2ViNkhyaHp6TkJOSWZKUzNHOXhJbE1hMWIxVXIwODdid2Nya1p6RzgwbW1IbzNrYk1GbXBCOVpQdVdMRzI2OHNQRkxWMWVQWDk5OUc3ZjhTeEFFTjdUT1JJcVUrVW9NVThiYVArZW5FeU5mcno4ckRZb2Y4XC9cL3dmNlQ5M3RFd01BQUE9PSIsInN1YiI6InNoZXJsb2NrIiwicm9sZXMiOlsiUk9MRV9CT1NTIl0sImV4cCI6MTUwMjYyMDc0MCwiaWF0IjoxNTAyNjE3MTQwfQ.5R5gCIL3y1Ke97NwkQtcrA-35vE3Cii58qH6XCjILfA" \
     -d $'{
    "username": "sherlock",
    "password": "elementary"
}'

Response

200

{
    "access_token": "eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTUFVcL2NRQlI4dmh5Q0NJbVBTSW1VQXBwQUZcL21rcEx3cWgwZ2taSEVJY3cxSW9EMzdZUmJXdTJaM0RYY051aW9wS0loSWtKQm9LZmtuU1pNZkVJV0NscG8yYncySER4ckVWdmJiOGN5OEdWOWN3NURSOERIUmpBdmpaeUpQdVBSTnBybE1ERWE1NXJicjV3WjFqTFpBZkNtQUxackE3ZkVxNEFWUTRiR0ZWOEUyMjJNMXdXUlNhN2EzTWJMMWpvWVBTaWQzakp1YXBiaXY5STVcL3p4MHBqUThFU21ydnZBTERxekRKb2tqbDBpNHFPZFwvSnVNWjRGU2JLV2FDaUhUZDZIZEVOU3N1Wk1JUFFZWlNzTFRBT1lKVGxka3VSS2tkallmeldiRzY1cUlWbzZ3R01aTXdZY3Zkb2s5QTY2KzdlMlpTMHdTNGNRTFdUZVhRb3Uxa0g5UjJQUDZlRW9LMjVrbWFtSlZNVjgwM3V4SW1cL04zWDg1K2lzMTZvQVVDYnZuXC82bW5MOXRRT1wvWCtzMTBFYlFYV1hnellMMkUxVHNadVprc21WYzBPdVdcL3Awc1wvVHE2XC9yYjBnWllmNFwvUHcrWmo3ZEpkZWRVMm5HTkxOcW9DT2kzYSs2WnlKdlBFM2ViNkhyaHp6TkJOSWZKUzNHOXhJbE1hMWIxVXIwODdid2Nya1p6RzgwbW1IbzNrYk1GbXBCOVpQdVdMRzI2OHNQRkxWMWVQWDk5OUc3ZjhTeEFFTjdUT1JJcVUrVW9NVThiYVArZW5FeU5mcno4ckRZb2Y4XC9cL3dmNlQ5M3RFd01BQUE9PSIsInN1YiI6InNoZXJsb2NrIiwicm9sZXMiOlsiUk9MRV9CT1NTIl0sImV4cCI6MTUwMjYyMDc0MCwiaWF0IjoxNTAyNjE3MTQwfQ.5R5gCIL3y1Ke97NwkQtcrA-35vE3Cii58qH6XCjILfA",
    "roles": [
        "ROLE_BOSS"
    ],
    "token_type": "Bearer",
    "expires_in": 3600,
    "username": "sherlock"
}

/ GET

Method URL

GET

/

Headers

Header Name HeaderValue

Accept

application/json

Authorization

Bearer XXXXXXX

Samples

/ is secured

Request

curl "http://localhost:8080/" \
     -H "Accept: application/json" \
     -H "Authorization: Bearer XXXXXXX"

Response

401

{
    "path": "/",
    "error": "Unauthorized",
    "message": "No message available",
    "timestamp": 1502617140481,
    "status": 401
}

Request

curl "http://localhost:8080/" \
     -H "Accept: application/json" \
     -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTUFVcL2NRQlI4dmh5Q0NJbVBTSW1VQXBwQUZcL21rcEx3cWgwZ2taSEVJY3cxSW9EMzdZUmJXdTJaM0RYY051aW9wS0loSWtKQm9LZmtuU1pNZkVJV0NscG8yYncySER4ckVWdmJiOGN5OEdWOWN3NURSOERIUmpBdmpaeUpQdVBSTnBybE1ERWE1NXJicjV3WjFqTFpBZkNtQUxackE3ZkVxNEFWUTRiR0ZWOEUyMjJNMXdXUlNhN2EzTWJMMWpvWVBTaWQzakp1YXBiaXY5STVcL3p4MHBqUThFU21ydnZBTERxekRKb2tqbDBpNHFPZFwvSnVNWjRGU2JLV2FDaUhUZDZIZEVOU3N1Wk1JUFFZWlNzTFRBT1lKVGxka3VSS2tkallmeldiRzY1cUlWbzZ3R01aTXdZY3Zkb2s5QTY2KzdlMlpTMHdTNGNRTFdUZVhRb3Uxa0g5UjJQUDZlRW9LMjVrbWFtSlZNVjgwM3V4SW1cL04zWDg1K2lzMTZvQVVDYnZuXC82bW5MOXRRT1wvWCtzMTBFYlFYV1hnellMMkUxVHNadVprc21WYzBPdVdcL3Awc1wvVHE2XC9yYjBnWllmNFwvUHcrWmo3ZEpkZWRVMm5HTkxOcW9DT2kzYSs2WnlKdlBFM2ViNkhyaHp6TkJOSWZKUzNHOXhJbE1hMWIxVXIwODdid2Nya1p6RzgwbW1IbzNrYk1GbXBCOVpQdVdMRzI2OHNQRkxWMWVQWDk5OUc3ZjhTeEFFTjdUT1JJcVUrVW9NVThiYVArZW5FeU5mcno4ckRZb2Y4XC9cL3dmNlQ5M3RFd01BQUE9PSIsInN1YiI6InNoZXJsb2NrIiwicm9sZXMiOlsiUk9MRV9CT1NTIl0sImV4cCI6MTUwMjYyMDc0MCwiaWF0IjoxNTAyNjE3MTQwfQ.5R5gCIL3y1Ke97NwkQtcrA-35vE3Cii58qH6XCjILfA"

Response

200

{
    "environment": "test",
    "reloadingagentenabled": false,
    "plugins": [
        {
            "name": "restResponder",
            "version": "3.3.0"
        },
        {
            "name": "dataBinding",
            "version": "3.3.0"
        },
        {
            "name": "jsonView",
            "version": "1.2.3"
        },
        {
            "name": "eventBus",
            "version": "3.3.0"
        },
        {
            "name": "i18n",
            "version": "3.3.0"
        },
        {
            "name": "geb",
            "version": "1.1.1"
        },
        {
            "name": "core",
            "version": "3.3.0"
        },
        {
            "name": "dataSource",
            "version": "3.3.0"
        },
        {
            "name": "groovyPages",
            "version": "3.3.0"
        },
        {
            "name": "codecs",
            "version": "3.3.0"
        },
        {
            "name": "controllers",
            "version": "3.3.0"
        },
        {
            "name": "urlMappings",
            "version": "3.3.0"
        },
        {
            "name": "domainClass",
            "version": "3.3.0"
        },
        {
            "name": "hibernate",
            "version": "6.1.6"
        },
        {
            "name": "controllersAsync",
            "version": "3.3.0"
        },
        {
            "name": "interceptors",
            "version": "3.3.0"
        },
        {
            "name": "mimeTypes",
            "version": "3.3.0"
        },
        {
            "name": "converters",
            "version": "3.3.0"
        },
        {
            "name": "services",
            "version": "3.3.0"
        },
        {
            "name": "cache",
            "version": "4.0.0"
        },
        {
            "name": "springSecurityCore",
            "version": "3.2.0.M1"
        },
        {
            "name": "springSecurityRest",
            "version": "2.0.0.M2"
        }
    ],
    "groovyversion": "2.4.11",
    "controllers": [
        {
            "logicalPropertyName": "logout",
            "name": "grails.plugin.springsecurity.LogoutController"
        },
        {
            "logicalPropertyName": "login",
            "name": "grails.plugin.springsecurity.LoginController"
        },
        {
            "logicalPropertyName": "restOauth",
            "name": "grails.plugin.springsecurity.rest.RestOauthController"
        },
        {
            "logicalPropertyName": "application",
            "name": "demo.ApplicationController"
        }
    ],
    "appversion": "0.1",
    "grailsversion": "3.3.0",
    "message": "Welcome to Grails!",
    "appprofile": "rest-api",
    "jvmversion": "1.8.0_121",
    "artefacts": {
        "controllers": 4,
        "domains": 3,
        "services": 3
    }
}

/oauth/access_token POST

Method URL

POST

/oauth/access_token

Headers

Header Name HeaderValue

Accept

application/json

Content-Type

application/x-www-form-urlencoded

Params

Type Name Required Schema Description

FORM_URL_ENCODED

grant_type

YES

String

FORM_URL_ENCODED

refresh_token

YES

String

Samples

Successful access token refresh

Request

curl -X "POST" "http://localhost:8080/oauth/access_token" \
     -H "Accept: application/json" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     --data-urlencode "grant_type=refresh_token" \
     --data-urlencode "refresh_token=eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTUFVcL2NRQlI4dmh5Q0NJbVBTSW1VQXBwQUZcL21rcEx3cWgwZ2taSEVJY3cxSW9EMzdZUmJXdTJaM0RYY051aW9wS0loSWtKQm9LZmtuU1pNZkVJV0NscG8yYncySER4ckVWdmJiOGN5OEdWOWN3NURSOERIUmpBdmpaeUpQdVBSTnBybE1ERWE1NXJicjV3WjFqTFpBZkNtQUxackE3ZkVxNEFWUTRiR0ZWOEUyMjJNMXdXUlNhN2EzTWJMMWpvWVBTaWQzakp1YXBiaXY5STVcL3p4MHBqUThFU21ydnZBTERxekRKb2tqbDBpNHFPZFwvSnVNWjRGU2JLV2FDaUhUZDZIZEVOU3N1Wk1JUFFZWlNzTFRBT1lKVGxka3VSS2tkallmeldiRzY1cUlWbzZ3R01aTXdZY3Zkb2s5QTY2KzdlMlpTMHdTNGNRTFdUZVhRb3Uxa0g5UjJQUDZlRW9LMjVrbWFtSlZNVjgwM3V4SW1cL04zWDg1K2lzMTZvQVVDYnZuXC82bW5MOXRRT1wvWCtzMTBFYlFYV1hnellMMkUxVHNadVprc21WYzBPdVdcL3Awc1wvVHE2XC9yYjBnWllmNFwvUHcrWmo3ZEpkZWRVMm5HTkxOcW9DT2kzYSs2WnlKdlBFM2ViNkhyaHp6TkJOSWZKUzNHOXhJbE1hMWIxVXIwODdid2Nya1p6RzgwbW1IbzNrYk1GbXBCOVpQdVdMRzI2OHNQRkxWMWVQWDk5OUc3ZjhTeEFFTjdUT1JJcVUrVW9NVThiYVArZW5FeU5mcno4ckRZb2Y4XC9cL3dmNlQ5M3RFd01BQUE9PSIsInN1YiI6InNoZXJsb2NrIiwicm9sZXMiOlsiUk9MRV9CT1NTIl0sImlhdCI6MTUwMjYxNzE0MX0.mBvosLDdyKfX3DnnevW8UQbyHNVnbvfcIucmuCwnkK4"

Response

200

[access_token:eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTUFVcL2NRQlI4dmh5Q0NJbVBTSW1VQXBwQUZcL21rcEx3cWgwZ2taSEVJY3cxSW9EMzdZUmJXdTJaM0RYY051aW9wS0loSWtKQm9LZmtuU1pNZkVJV0NscG8yYncySER4ckVWdmJiOGN5OEdWOWN3NURSOERIUmpBdmpaeUpQdVBSTnBybE1ERWE1NXJicjV3WjFqTFpBZkNtQUxackE3ZkVxNEFWUTRiR0ZWOEUyMjJNMXdXUlNhN2EzTWJMMWpvWVBTaWQzakp1YXBiaXY5STVcL3p4MHBqUThFU21ydnZBTERxekRKb2tqbDBpNHFPZFwvSnVNWjRGU2JLV2FDaUhUZDZIZEVOU3N1Wk1JUFFZWlNzTFRBT1lKVGxka3VSS2tkallmeldiRzY1cUlWbzZ3R01aTXdZY3Zkb2s5QTY2KzdlMlpTMHdTNGNRTFdUZVhRb3Uxa0g5UjJQUDZlRW9LMjVrbWFtSlZNVjgwM3V4SW1cL04zWDg1K2lzMTZvQVVDYnZuXC82bW5MOXRRT1wvWCtzMTBFYlFYV1hnellMMkUxVHNadVprc21WYzBPdVdcL3Awc1wvVHE2XC9yYjBnWllmNFwvUHcrWmo3ZEpkZWRVMm5HTkxOcW9DT2kzYSs2WnlKdlBFM2ViNkhyaHp6TkJOSWZKUzNHOXhJbE1hMWIxVXIwODdid2Nya1p6RzgwbW1IbzNrYk1GbXBCOVpQdVdMRzI2OHNQRkxWMWVQWDk5OUc3ZjhTeEFFTjdUT1JJcVUrVW9NVThiYVArZW5FeU5mcno4ckRZb2Y4XC9cL3dmNlQ5M3RFd01BQUE9PSIsInN1YiI6InNoZXJsb2NrIiwicm9sZXMiOlsiUk9MRV9CT1NTIl0sImV4cCI6MTUwMjYyMDc0MSwiaWF0IjoxNTAyNjE3MTQxfQ.kIiXpd90e2jdLTbQX7GakBdEiz59xL9LYEVILcCErLQ, refresh_token:eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTUFVcL2NRQlI4dmh5Q0NJbVBTSW1VQXBwQUZcL21rcEx3cWgwZ2taSEVJY3cxSW9EMzdZUmJXdTJaM0RYY051aW9wS0loSWtKQm9LZmtuU1pNZkVJV0NscG8yYncySER4ckVWdmJiOGN5OEdWOWN3NURSOERIUmpBdmpaeUpQdVBSTnBybE1ERWE1NXJicjV3WjFqTFpBZkNtQUxackE3ZkVxNEFWUTRiR0ZWOEUyMjJNMXdXUlNhN2EzTWJMMWpvWVBTaWQzakp1YXBiaXY5STVcL3p4MHBqUThFU21ydnZBTERxekRKb2tqbDBpNHFPZFwvSnVNWjRGU2JLV2FDaUhUZDZIZEVOU3N1Wk1JUFFZWlNzTFRBT1lKVGxka3VSS2tkallmeldiRzY1cUlWbzZ3R01aTXdZY3Zkb2s5QTY2KzdlMlpTMHdTNGNRTFdUZVhRb3Uxa0g5UjJQUDZlRW9LMjVrbWFtSlZNVjgwM3V4SW1cL04zWDg1K2lzMTZvQVVDYnZuXC82bW5MOXRRT1wvWCtzMTBFYlFYV1hnellMMkUxVHNadVprc21WYzBPdVdcL3Awc1wvVHE2XC9yYjBnWllmNFwvUHcrWmo3ZEpkZWRVMm5HTkxOcW9DT2kzYSs2WnlKdlBFM2ViNkhyaHp6TkJOSWZKUzNHOXhJbE1hMWIxVXIwODdid2Nya1p6RzgwbW1IbzNrYk1GbXBCOVpQdVdMRzI2OHNQRkxWMWVQWDk5OUc3ZjhTeEFFTjdUT1JJcVUrVW9NVThiYVArZW5FeU5mcno4ckRZb2Y4XC9cL3dmNlQ5M3RFd01BQUE9PSIsInN1YiI6InNoZXJsb2NrIiwicm9sZXMiOlsiUk9MRV9CT1NTIl0sImlhdCI6MTUwMjYxNzE0MX0.mBvosLDdyKfX3DnnevW8UQbyHNVnbvfcIucmuCwnkK4, roles:[ROLE_BOSS], token_type:Bearer, expires_in:3600, username:sherlock]

Return 401 if the supplied accessToken is not valid

Request

curl -X "POST" "http://localhost:8080/oauth/access_token" \
     -H "Accept: application/json" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     --data-urlencode "grant_type=refresh_token" \
     --data-urlencode "refresh_token=wrong refresh token"

Response

403

{
    "path": "/oauth/access_token",
    "error": "Forbidden",
    "message": "No message available",
    "timestamp": 1502617141630,
    "status": 403
}