Oauth Callback
curl --request POST \
--url https://api.example.com/cabinet/auth/oauth/{provider}/callback \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"state": "<string>",
"device_id": "<string>",
"campaign_slug": "<string>",
"referral_code": "<string>"
}
'import requests
url = "https://api.example.com/cabinet/auth/oauth/{provider}/callback"
payload = {
"code": "<string>",
"state": "<string>",
"device_id": "<string>",
"campaign_slug": "<string>",
"referral_code": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
code: '<string>',
state: '<string>',
device_id: '<string>',
campaign_slug: '<string>',
referral_code: '<string>'
})
};
fetch('https://api.example.com/cabinet/auth/oauth/{provider}/callback', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/cabinet/auth/oauth/{provider}/callback",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => '<string>',
'state' => '<string>',
'device_id' => '<string>',
'campaign_slug' => '<string>',
'referral_code' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/cabinet/auth/oauth/{provider}/callback"
payload := strings.NewReader("{\n \"code\": \"<string>\",\n \"state\": \"<string>\",\n \"device_id\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/cabinet/auth/oauth/{provider}/callback")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"<string>\",\n \"state\": \"<string>\",\n \"device_id\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/cabinet/auth/oauth/{provider}/callback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"<string>\",\n \"state\": \"<string>\",\n \"device_id\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"access_token": "<string>",
"refresh_token": "<string>",
"expires_in": 123,
"user": {
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"telegram_id": 123,
"username": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"email_verified": false,
"balance_kopeks": 0,
"balance_rubles": 0,
"referral_code": "<string>",
"language": "ru",
"auth_type": "telegram"
},
"token_type": "bearer",
"campaign_bonus": {
"campaign_name": "<string>",
"bonus_type": "<string>",
"balance_kopeks": 0,
"subscription_days": 123,
"tariff_name": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Cabinet OAuth
Oauth Callback
Handle OAuth callback: exchange code, find/create user, return JWT.
POST
/
cabinet
/
auth
/
oauth
/
{provider}
/
callback
Oauth Callback
curl --request POST \
--url https://api.example.com/cabinet/auth/oauth/{provider}/callback \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"state": "<string>",
"device_id": "<string>",
"campaign_slug": "<string>",
"referral_code": "<string>"
}
'import requests
url = "https://api.example.com/cabinet/auth/oauth/{provider}/callback"
payload = {
"code": "<string>",
"state": "<string>",
"device_id": "<string>",
"campaign_slug": "<string>",
"referral_code": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
code: '<string>',
state: '<string>',
device_id: '<string>',
campaign_slug: '<string>',
referral_code: '<string>'
})
};
fetch('https://api.example.com/cabinet/auth/oauth/{provider}/callback', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/cabinet/auth/oauth/{provider}/callback",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => '<string>',
'state' => '<string>',
'device_id' => '<string>',
'campaign_slug' => '<string>',
'referral_code' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/cabinet/auth/oauth/{provider}/callback"
payload := strings.NewReader("{\n \"code\": \"<string>\",\n \"state\": \"<string>\",\n \"device_id\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/cabinet/auth/oauth/{provider}/callback")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"<string>\",\n \"state\": \"<string>\",\n \"device_id\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/cabinet/auth/oauth/{provider}/callback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"<string>\",\n \"state\": \"<string>\",\n \"device_id\": \"<string>\",\n \"campaign_slug\": \"<string>\",\n \"referral_code\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"access_token": "<string>",
"refresh_token": "<string>",
"expires_in": 123,
"user": {
"id": 123,
"created_at": "2023-11-07T05:31:56Z",
"telegram_id": 123,
"username": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"email_verified": false,
"balance_kopeks": 0,
"balance_rubles": 0,
"referral_code": "<string>",
"language": "ru",
"auth_type": "telegram"
},
"token_type": "bearer",
"campaign_bonus": {
"campaign_name": "<string>",
"bonus_type": "<string>",
"balance_kopeks": 0,
"subscription_days": 123,
"tariff_name": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Path Parameters
Available options:
google, yandex, discord, vk Body
application/json
Authorization code from provider
Required string length:
1 - 2048CSRF state token
Required string length:
1 - 128Device ID from VK ID callback
Maximum string length:
256Campaign slug from web link
Required string length:
1 - 64Pattern:
^[a-zA-Z0-9_-]+$Referral code of inviter
Maximum string length:
32Pattern:
^[a-zA-Z0-9_-]+$Response
Successful Response
Full authentication response with tokens and user.
User data response.
Show child attributes
Show child attributes
Info about campaign bonus applied during auth.
Show child attributes
Show child attributes
⌘I
