We use the OAuth 2.0 Authorization Framework with the Resource Owner Password Credentials Grant.
Obtain your Credentials
You will need to obtain client_id, client_secret, username, and password from your YOC Account Manager. Username and Password are valid credentials that can be used to access https://hub.yoc.com
Obtain your Access Token
The authentication process starts with a POST request to
https://oauth.yoc.com/api/v2/oauth/token
Request Parameters
Parameter | Type | Description |
---|---|---|
grant_type | String | Only “password” is accepted |
username | String | Your username used for the YOC Hub |
password | String | Your password used for the YOC Hub |
client_id | String | Your client id provided by YOC |
client_secret | String | Your client secret key provided by YOC |
The API supports both multipart form data and JSON body. Both client_id and client_secret can be submitted via request body or provided using the Basic Authentication Header.
Multipart form data with client credentials
curl --request POST \
--url https://oauth.yoc.com/api/v2/oauth/token \
--header 'Content-Type: multipart/form-data' \
--form grant_type=password \
--form client_id=your-client-id \
--form client_secret=your-client-secret \
--form username=your-username \
--form password=your-password
JSON Body with Authentication header
curl --request POST \
--url https://oauth.yoc.com/api/v2/oauth/token \
--header 'Authorization: Basic AUTHORIZATION HASH' \
--header 'Content-Type: application/json' \
--data '{
"grant_type": "password",
"username": "your-username",
"password": "your-password"
}'
If the authentication request is valid and authorized, the server issues access and refresh tokens, which you can obtain from the response body.
Response Example
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"user_uuid": "your-user-uuid",
"jti": "bda1a096-358a-11ec-9534-005056837939",
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "your-access-token",
"refresh_token": "your-refresh-token"
}
Response Parameters
Parameter | Type | Description |
---|---|---|
user_uuid | String | Universally unique identifier of your user |
jti | String | JTI-JWT identifier, unique for each pair of refresh/access tokens |
expires_in | Integer | Access token lifetime in seconds |
access_token | String | A token to access the API |
refresh_token | String | A long lifetime token which is used to obtain another pair of access/refresh tokens |
Refreshing an Access Token
Upon expiry of the access token, the client application submits a POST request to the token endpoint to obtain another pair of access/refresh tokens.
Request Parameters
Parameter | Type | Description |
---|---|---|
grant_type | String | The grant_type MUST be “refresh_token” |
client_id | String | client_id provided by YOC |
client_secret | String | client_secret provided by YOC |
The API supports both multipart form data and JSON body. Both client_id and client_secret can be submitted via request body or provided using the Basic Authentication Header (see above ).
Request Example (JSON Body)
curl -i -X POST \
-H "Content-Type:application/json" \
-d \
'{
"grant_type": "refresh_token",
"refresh_token": "your_refresh_token",
"client_id": "your-client-id",
"client_secret": "your-client-secret"
}' \
'https://oauth.yoc.com/api/v2/oauth/token'
Response Example
A response has the same format as for the Access Token request.
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"user_uuid": "your-user-uuid",
"jti": "bda1a096-358a-11ec-9534-005056837939",
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "your-access-token",
"refresh_token": "your-refresh-token"
}
API Authorization
A client application should issue all requests to https://api.yoc.com and submit valid access token using Authorization Bearer header.
Request Example
curl -i -X GET \
-H "Authorization:Bearer your_access_token" \
'https://api.yoc.com/api/v1/reporting/publishers'