curl --request POST 'https://api.voicecheap.ai/oauth/revoke' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE' \
--data-urlencode 'client_id=mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' \
--data-urlencode 'token_type_hint=refresh_token'
const input = {
token: 'mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE',
client_id: 'mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
token_type_hint: 'refresh_token',
};
const response = await fetch('https://api.voicecheap.ai/oauth/revoke', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams(input),
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"POST",
"https://api.voicecheap.ai/oauth/revoke",
headers={"Content-Type":"application/x-www-form-urlencoded"},
data={"token": "mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", "client_id": "mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "token_type_hint": "refresh_token"},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
OAuth- und MCP-Protokoll
Eine MCP-OAuth-Verbindung widerrufen
Widerrufen Sie eine Verbindung mit einem ihrer Zugriffs- oder Aktualisierungstokens und der registrierten client_id.
POST
/
oauth
/
revoke
curl --request POST 'https://api.voicecheap.ai/oauth/revoke' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE' \
--data-urlencode 'client_id=mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' \
--data-urlencode 'token_type_hint=refresh_token'
const input = {
token: 'mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE',
client_id: 'mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
token_type_hint: 'refresh_token',
};
const response = await fetch('https://api.voicecheap.ai/oauth/revoke', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams(input),
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"POST",
"https://api.voicecheap.ai/oauth/revoke",
headers={"Content-Type":"application/x-www-form-urlencoded"},
data={"token": "mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", "client_id": "mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "token_type_hint": "refresh_token"},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Widerrufen Sie eine Verbindung mit einem ihrer Zugriffs- oder Aktualisierungstokens und der registrierten client_id.
POST https://api.voicecheap.ai/oauth/revoke
Authentifizierung
Kein Client-Geheimnis. Senden Sie token und client_id im URL-codierten Formular-Body.Anfragetext
string
erforderlich
Ein ausgestelltes MCP-Zugriffs- oder Aktualisierungstoken. Unbekannte Token-Zeichenfolgen werden akzeptiert, ohne offenzulegen, ob ein Token existiert.Mindestlänge: 1. Höchstlänge: 256. Muster:
^[^\u0000-\u001F\u007F]+$.string
erforderlich
Die dem Token zugeordnete client_id. Ein fehlender oder fehlerhafter Skalar wird abgelehnt; ein unbekannter oder nicht passender Client gibt Erfolg zurück.Mindestlänge: 1. Höchstlänge: 2048. Muster:
^[^\u0000-\u001F\u007F]+$.field
Optionaler Standardhinweis. Diese Implementierung ignoriert das Feld und validiert seinen Wert nicht; Tokenpräfixe bestimmen die Tokenfamilie.
Technisches Schema
Technisches Schema
{
"type": "object",
"properties": {
"token": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[^\\u0000-\\u001F\\u007F]+$",
"description": "An issued MCP access or refresh token. Unknown token strings are accepted without revealing whether a token exists."
},
"client_id": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"pattern": "^[^\\u0000-\\u001F\\u007F]+$",
"description": "The client_id associated with the token. A missing or malformed scalar is rejected; an unknown or mismatched client returns success."
},
"token_type_hint": {
"description": "Optional standard hint. This implementation ignores this field and does not validate its value; token prefixes determine the token family."
}
},
"required": [
"token",
"client_id"
],
"additionalProperties": true
}
Anfragebeispiele
Beachten Sie die für diese Route dokumentierte Kodierung und Authentifizierung. Die Antwortstruktur und Idempotenzregeln der Aktions-API gelten nur für Aktionsaufrufe.curl --request POST 'https://api.voicecheap.ai/oauth/revoke' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE' \
--data-urlencode 'client_id=mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' \
--data-urlencode 'token_type_hint=refresh_token'
const input = {
token: 'mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE',
client_id: 'mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
token_type_hint: 'refresh_token',
};
const response = await fetch('https://api.voicecheap.ai/oauth/revoke', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams(input),
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"POST",
"https://api.voicecheap.ai/oauth/revoke",
headers={"Content-Type":"application/x-www-form-urlencoded"},
data={"token": "mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", "client_id": "mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "token_type_hint": "refresh_token"},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Antwort
Ein leeres JSON-Objekt. Unbekannte Tokens, falsche Client-Zuordnungen und bereits widerrufene Verbindungen geben ebenfalls HTTP 200 zurück.HTTP 200
{}
Antwortheader
{
"Cache-Control": "no-store",
"Pragma": "no-cache"
}
Hinweise zur Operation
- Erkannte skalare Parameter müssen genau einmal als nicht leere Zeichenfolgen ohne ASCII-Steuerzeichen oder DEL übergeben werden. Wiederholte Abfrage- oder Formularfelder werden als Arrays dekodiert und beim Lesen als Skalare abgelehnt.
- Verwenden Sie application/x-www-form-urlencoded. JSON-Anfragen werden mit invalid_request abgelehnt.
- Der Widerruf eines erkannten Zugriffstokens oder Refresh-Tokens widerruft die gesamte Verbindung und entfernt ihr aktives Refresh-Token; er beschränkt sich nicht auf das eine übergebene Token.
- Der Parameter resource ist auf dieser Route weder erforderlich noch wird er geprüft. token_type_hint und andere nicht erkannte Felder werden ignoriert.
- Der Endpunkt ruft nicht zuerst eine Clientregistrierung ab. Eine formal gültige unbekannte client_id, eine für das Token falsche client_id oder ein unbekanntes Token gibt {} zurück, ohne die Gültigkeit des Tokens offenzulegen.
- Die öffentliche Widerrufsgrenze beträgt 60 Anfragen pro Minute und Client-IP und wird workerübergreifend geteilt. URL-kodierte Anfragetexte sind auf 32 KiB begrenzt.
- Die von der dynamischen Registrierung zurückgegebene client_id oder die exakte öffentliche HTTPS-URL des Client-Metadatendokuments.
Fehler
| HTTP-Status | Code | Bedeutung oder Behebung |
|---|---|---|
| 400 | invalid_request | Der Anfragetext oder ein erkannter Parameter ist ungültig, fehlt, ist doppelt vorhanden oder hat die falsche Kodierung. |
| 413 | REQUEST_TOO_LARGE | Die Anfrage überschreitet die zulässige Größe des Anfragetexts. JSON ist auf 1 MiB und URL-kodierte Formulare sind auf 32 KiB begrenzt. |
| 415 | UNSUPPORTED_CONTENT_TYPE | Der Body-Parser der Integration akzeptiert nur JSON oder URL-codierte Formulardaten. Die Route kann ausdrücklich eine dieser Codierungen erfordern. |
| 429 | temporarily_unavailable | Das öffentliche Anfrageratenlimit für OAuth wurde erreicht. Warten Sie vor einem erneuten Versuch das aktuelle Zeitfenster ab. |
| 500 | server_error | Die Autorisierung ist vorübergehend nicht verfügbar. Versuchen Sie es später erneut. |
War diese Seite hilfreich?

