모니터링 토큰 생성
curl --request POST \
--url https://{issuer}/monitoring-token/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://{issuer}/monitoring-token/"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://{issuer}/monitoring-token/', 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://{issuer}/monitoring-token/",
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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://{issuer}/monitoring-token/"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://{issuer}/monitoring-token/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{issuer}/monitoring-token/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"monitoring_token": "mt_2f8c1d9e7b6a5f4e3d2c1b0a",
"expires_at": "2026-10-17T10:56:14Z",
"allowed_event_categories": [
"session",
"gameplay",
"bonus",
"affiliate",
"payment",
"dispute",
"responsible_gambling",
"custom"
],
"max_uses": 1000,
"bind_to_origin": "https://app.example.com",
"vendor_data": "user-42"
}API 레퍼런스
모니터링 토큰 생성 | Didit Authentication API
Didit의 POST /monitoring-token/은 액세스 토큰을 사용자의 vendor_data 및 브라우저 출처에 바인딩된 15분 기기 자격 증명으로 교환합니다.
POST
/
monitoring-token
/
모니터링 토큰 생성
curl --request POST \
--url https://{issuer}/monitoring-token/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://{issuer}/monitoring-token/"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://{issuer}/monitoring-token/', 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://{issuer}/monitoring-token/",
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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://{issuer}/monitoring-token/"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://{issuer}/monitoring-token/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{issuer}/monitoring-token/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"monitoring_token": "mt_2f8c1d9e7b6a5f4e3d2c1b0a",
"expires_at": "2026-10-17T10:56:14Z",
"allowed_event_categories": [
"session",
"gameplay",
"bonus",
"affiliate",
"payment",
"dispute",
"responsible_gambling",
"custom"
],
"max_uses": 1000,
"bind_to_origin": "https://app.example.com",
"vendor_data": "user-42"
}인증 기능은 새로 출시되었으며, Didit이 활성화하기 전까지 이 엔드포인트는 꺼진 상태로 유지됩니다. 그 전까지는
503 monitoring_unavailable로 응답합니다.vendor_data에 기록됩니다.인증
POST /token/에서 반환된 해당 인물의 액세스 token입니다. 헤더가 typ: at+jwt인 ES256 JWT이며 최대 5분 동안 유효합니다. Didit API 키가 아닙니다.
본문
application/json
비어 있음: access token에 해당 인물이 지정되어 있습니다.
응답
해당 개인을 위한 기기 자격 증명입니다.
해당 기기에서 트랜잭션 모니터링으로 개인의 활동 이벤트를 전송하기 위한 단기 기기 자격 증명입니다. 세션에 연결되지 않으며, 로그아웃 후에도 expires_at까지 계속 사용할 수 있습니다.
기기 자격 증명입니다. 비밀 정보로 취급하세요.
예시:
"mt_2f8c1d9e7b6a5f4e3d2c1b0a"
발급 후 최대 15분입니다.
예시:
"2026-10-17T10:56:14Z"
전송 가능한 이벤트 카테고리입니다. 인증 및 보안 이벤트는 기기가 아닌 항상 Didit에서 전송됩니다.
예시:
[
"session",
"gameplay",
"bonus",
"affiliate",
"payment",
"dispute",
"responsible_gambling",
"custom"
]
예시:
1000
자격 증명이 작동하는 브라우저 오리진입니다. 요청의 Origin이거나, 없는 경우 null입니다.
예시:
"https://app.example.com"
기기에서 전송하는 값과 관계없이 모든 이벤트가 기록되는 대상 인물입니다.
예시:
"user-42"
마지막 수정일 2026년 11월 7일