Open in
OAuth ਨਾਲ ਕਨੈਕਟ ਕਰੋ
API key ਸਾਂਝੀ ਕੀਤੇ ਬਿਨਾਂ MCP ਕਲਾਇੰਟਾਂ ਅਤੇ ThunderPhone CLI ਨੂੰ ਅਧਿਕਾਰਿਤ ਕਰੋ।
OAuth ਕਿਸੇ ਐਪ ਨੂੰ ਤੁਹਾਡੇ ਦੁਆਰਾ ਮਨਜ਼ੂਰ ਕੀਤੀਆਂ ਅਨੁਮਤੀਆਂ ਨਾਲ ਇੱਕ ThunderPhone ਸੰਗਠਨ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਦਿੰਦਾ ਹੈ। ਡਾਇਰੈਕਟਰੀ ਕਲਾਇੰਟਾਂ ਨੂੰ ਮੂਲ ਰੂਪ ਵਿੱਚ OAuth ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਿਨ੍ਹਾਂ ਕਲਾਇੰਟਾਂ ਨੂੰ ਹੱਥੋਂ ਕਨਫਿਗਰ ਕੀਤਾ ਗਿਆ Bearer ਟੋਕਨ ਚਾਹੀਦਾ ਹੈ, ਉਨ੍ਹਾਂ ਲਈ ਸੰਗਠਨ API ਕੁੰਜੀਆਂ ਉਪਲਬਧ ਰਹਿੰਦੀਆਂ ਹਨ।
ਕਨੈਕਸ਼ਨ ਮਨਜ਼ੂਰ ਕਰੋ
ਆਪਣੇ MCP ਕਲਾਇੰਟ ਵਿੱਚ ਕਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਕਰੋ। ThunderPhone ਵਿੱਚ ਸਾਈਨ ਇਨ ਕਰੋ, ਐਪ ਦਾ ਨਾਮ ਅਤੇ ਮੰਗੀਆਂ ਗਈਆਂ ਅਨੁਮਤੀਆਂ ਦੀ ਜਾਂਚ ਕਰੋ, ਇੱਕ ਸੰਗਠਨ ਚੁਣੋ ਅਤੇ ਮਨਜ਼ੂਰ ਕਰੋ ਚੁਣੋ। ਜੇ ਤੁਸੀਂ ਕਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾਂ ਐਪ 'ਤੇ ਭਰੋਸਾ ਨਹੀਂ ਕਰਦੇ, ਤਾਂ ਅਸਵੀਕਾਰ ਕਰੋ ਚੁਣੋ। ਐਪ ਦੇ ਨਾਮ ਉਨ੍ਹਾਂ ਦੇ ਡਿਵੈਲਪਰਾਂ ਵੱਲੋਂ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ ਅਤੇ ਇਹ ਤਸਦੀਕ ਦਾ ਬੈਜ ਨਹੀਂ ਹਨ।
ਪੜ੍ਹਨ ਦੀਆਂ ਅਨੁਮਤੀਆਂ ਨਾਮਿਤ ਡਾਟਾ ਦਿਖਾਉਂਦੀਆਂ ਹਨ, ਜਿਸ ਵਿੱਚ ਰਿਕਾਰਡਿੰਗਾਂ ਅਤੇ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ ਵੀ ਸ਼ਾਮਲ ਹਨ ਜਦੋਂ calls:read ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਲਿਖਣ ਦੀਆਂ ਅਨੁਮਤੀਆਂ ਸਰੋਤਾਂ ਨੂੰ ਬਦਲ ਜਾਂ ਮਿਟਾ ਸਕਦੀਆਂ ਹਨ; ਕਾਲਾਂ, ਕੈਂਪੇਨਾਂ, ਫ਼ੋਨ ਖਰੀਦਾਂ ਅਤੇ ਡਿਪਲੌਇਮੈਂਟਾਂ ਨਾਲ ਲਾਗਤ ਆ ਸਕਦੀ ਹੈ ਜਾਂ ਪ੍ਰੋਡਕਸ਼ਨ ਪ੍ਰਭਾਵਿਤ ਹੋ ਸਕਦਾ ਹੈ। ਤੁਹਾਡੀ ਸੰਗਠਨ ਭੂਮਿਕਾ ਫਿਰ ਵੀ ਲਾਗੂ ਰਹਿੰਦੀ ਹੈ।
CLI ਕਨੈਕਸ਼ਨ ਲਈ, ਆਪਣੇ ਟਰਮੀਨਲ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਤਸਦੀਕ ਲਿੰਕ ਖੋਲ੍ਹੋ, ਅੱਠ-ਅੱਖਰਾਂ ਵਾਲੇ ਕੋਡ ਦੀ ਤੁਲਨਾ ਕਰੋ, ਆਪਣਾ ਸੰਗਠਨ ਚੁਣੋ ਅਤੇ ਮਨਜ਼ੂਰ ਕਰੋ। ਸਿਰਫ਼ ਲਿੰਕ ਖੋਲ੍ਹਣ ਨਾਲ ਪਹੁੰਚ ਨਹੀਂ ਮਿਲਦੀ। ਕੋਡ 15 ਮਿੰਟਾਂ ਬਾਅਦ ਮਿਆਦ ਪੁੱਗ ਜਾਂਦੇ ਹਨ।
ਐਪ ਦਾ ਕਨੈਕਸ਼ਨ ਤੋੜੋ
ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ ਸੰਗਠਨ → API ਕੁੰਜੀਆਂ → ਅਧਿਕਾਰਤ ਐਪਾਂ ਖੋਲ੍ਹੋ ਅਤੇ ਰੱਦ ਕਰੋ ਚੁਣੋ। ਇਸ ਨਾਲ ਮੌਜੂਦਾ ਸੰਗਠਨ ਲਈ ਤੁਹਾਡੀ ਚੁਣੀ ਹੋਈ ਅਧਿਕਾਰਤਾ ਰੱਦ ਹੋ ਜਾਂਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਇਸਦੇ ਐਕਸੈਸ ਅਤੇ ਰਿਫ੍ਰੈਸ਼ ਟੋਕਨ ਵੀ ਸ਼ਾਮਲ ਹਨ। ਜੇ ਤੁਸੀਂ ਇਸਨੂੰ ਦੁਬਾਰਾ ਅਧਿਕਾਰਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਐਪ ਤੋਂ ਮੁੜ ਕਨੈਕਟ ਕਰੋ।
MCP ਕਲਾਇੰਟਾਂ ਲਈ ਖੋਜ
ਸਰਵਰ URL https://api.thunderphone.com/v1/mcp ਵਰਤੋ। ਵੈਧ ਪ੍ਰਮਾਣੀਕਰਨ ਤੋਂ ਬਿਨਾਂ ਬੇਨਤੀ ਨੂੰ 401 ਮਿਲਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਇਹ ਹੁੰਦਾ ਹੈ:
WWW-Authenticate: Bearer resource_metadata="https://api.thunderphone.com/.well-known/oauth-protected-resource"ਉਹ ਦਸਤਾਵੇਜ਼ ਪ੍ਰਾਪਤ ਕਰੋ, ਫਿਰ https://api.thunderphone.com/.well-known/oauth-authorization-server ਤੋਂ ਪ੍ਰਮਾਣੀਕਰਨ ਸਰਵਰ ਦਾ ਮੈਟਾਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰੋ। ਸਰੋਤ ਮੈਟਾਡੇਟਾ /.well-known/oauth-protected-resource/v1/mcp 'ਤੇ ਵੀ ਉਪਲਬਧ ਹੈ। ਐਂਡਪੁਆਇੰਟ ਬਣਾਉਣ ਦੀ ਬਜਾਏ ਵਾਪਸ ਮਿਲੇ ਐਂਡਪੁਆਇੰਟ ਵਰਤੋ। ਸਰੋਤ ਪਛਾਣਕਰਤਾ https://api.thunderphone.com/v1/mcp ਹੈ।
ਸਰਵਰ S256 PKCE ਨਾਲ ਪ੍ਰਮਾਣੀਕਰਨ ਕੋਡ, ਰੋਟੇਟ ਹੋਣ ਵਾਲੇ ਰਿਫ੍ਰੈਸ਼ ਟੋਕਨ, ਜਨਤਕ ਡਾਇਨਾਮਿਕ ਕਲਾਇੰਟ ਰਜਿਸਟ੍ਰੇਸ਼ਨ, ਰੱਦਕਰਨ ਅਤੇ ਡਿਵਾਈਸ ਪ੍ਰਮਾਣੀਕਰਨ ਗ੍ਰਾਂਟ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਕੋਈ ਕਲਾਇੰਟ ਸੀਕਰਟ ਜਾਂ ਇੰਪਲਿਸਿਟ ਗ੍ਰਾਂਟ ਨਹੀਂ ਹਨ। OpenID ਖੋਜ /.well-known/openid-configuration 'ਤੇ ਵੀ ਉਪਲਬਧ ਹੈ; ਇਸ ਵਿੱਚ ਉਹੀ ਪ੍ਰਮਾਣੀਕਰਨ-ਸਰਵਰ ਫੀਲਡਾਂ, ਨਾਲ ਹੀ subject_types_supported: ["public"] ਅਤੇ userinfo ਐਂਡਪੁਆਇੰਟ ਸ਼ਾਮਲ ਹਨ। ID ਟੋਕਨ ਅਤੇ ਕਲਾਇੰਟ ID ਮੈਟਾਡੇਟਾ ਦਸਤਾਵੇਜ਼ਾਂ (CIMD) ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਹੈ।
ਜਨਤਕ ਕਲਾਇੰਟ ਰਜਿਸਟਰ ਕਰੋ
POST /v1/oauth/register ਨੂੰ JSON ਭੇਜੋ:
{
"client_name": "My MCP client",
"redirect_uris": ["http://127.0.0.1:8765/callback"],
"token_endpoint_auth_method": "none",
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"]
}ਵਾਪਸ ਮਿਲਿਆ client_id ਸੰਭਾਲੋ। ਰੀਡਾਇਰੈਕਟਾਂ ਲਈ HTTPS ਜਾਂ 127.0.0.1 ਜਾਂ localhost ਉੱਤੇ HTTP ਵਰਤਣਾ ਲਾਜ਼ਮੀ ਹੈ। ਪੋਰਟ ਅਤੇ ਪਾਥ ਸਮੇਤ ਸਹੀ ਕਾਲਬੈਕ URI ਰਜਿਸਟਰ ਕਰੋ। ਫ੍ਰੈਗਮੈਂਟ ਅਤੇ ਏਮਬੈਡ ਕੀਤੇ ਕ੍ਰੈਡੈਂਸ਼ਲ ਅਸਵੀਕਾਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਵਿਕਲਪਿਕ client_uri ਅਤੇ logo_uri ਲਈ HTTPS ਲਾਜ਼ਮੀ ਹੈ; ThunderPhone ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਦੌਰਾਨ ਇਹਨਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰਦਾ। ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਰੇਟ-ਲਿਮਿਟਡ ਹੈ। ਰਜਿਸਟਰ ਕੀਤੇ ਕਲਾਇੰਟਾਂ ਦੀ ਮਿਆਦ ਖਤਮ ਨਹੀਂ ਹੁੰਦੀ ਅਤੇ ਕਨੈਕਸ਼ਨ ਰੱਦ ਹੋਣ 'ਤੇ ਵੀ ਰਜਿਸਟਰ ਰਹਿੰਦੇ ਹਨ। HTTPS ਕਾਲਬੈਕਾਂ ਵਿੱਚ https://chatgpt.com/connector/oauth/<id> ਅਤੇ https://chatgpt.com/connector_platform_oauth_redirect ਸ਼ਾਮਲ ਹਨ। ਹਰੇਕ ਕਨੈਕਸ਼ਨ ਆਪਣਾ ਕਲਾਇੰਟ ਰਜਿਸਟਰ ਕਰ ਸਕਦਾ ਹੈ।
ਪ੍ਰਮਾਣੀਕਰਨ ਕੋਡ
ਖੋਜਿਆ ਗਿਆ ਪ੍ਰਮਾਣੀਕਰਨ ਐਂਡਪੁਆਇੰਟ client_id, ਸਹੀ ਰਜਿਸਟਰ ਕੀਤੇ redirect_uri, response_type=code, ਰੈਂਡਮ state, scope, code_challenge, code_challenge_method=S256, ਅਤੇ resource=https://api.thunderphone.com/v1/mcp ਨਾਲ ਖੋਲ੍ਹੋ। ਨਵੇਂ ਉੱਚ-ਐਂਟ੍ਰੋਪੀ PKCE ਵੇਰੀਫਾਇਰ ਦੇ ਬਿਨਾਂ ਪੈਡਿੰਗ ਵਾਲੇ base64url SHA-256 ਡਾਈਜੈਸਟ ਵਜੋਂ ਚੈਲੇਂਜ ਗਣਨਾ ਕਰੋ। ਕੋਡ ਐਕਸਚੇਂਜ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਵਾਪਸ ਮਿਲੇ state ਅਤੇ iss ਦੀ ਜਾਂਚ ਕਰੋ। ਇਨਕਾਰ ਅਤੇ ਪ੍ਰੋਟੋਕੋਲ ਗਲਤੀਆਂ ਸਮੇਤ ਹਰੇਕ ਪ੍ਰਮਾਣੀਕਰਨ ਜਵਾਬ, ਖੋਜੇ ਗਏ issuer ਨਾਲ ਬਿਲਕੁਲ ਮੇਲ ਖਾਂਦੇ iss ਰਾਹੀਂ ਜਾਰੀਕਰਤਾ ਦੀ ਪਛਾਣ ਕਰਦਾ ਹੈ। ਅਵੈਧ ਕਲਾਇੰਟ ਜਾਂ ਕਾਲਬੈਕ ਦੀਆਂ ਗਲਤੀਆਂ ਉਸ ਕਾਲਬੈਕ 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕੀਤੇ ਬਿਨਾਂ ਲੋਕਲ ਤੌਰ 'ਤੇ ਵਾਪਸ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।
ਫਾਰਮ ਏਨਕੋਡਿੰਗ ਵਰਤ ਕੇ POST /v1/oauth/token 'ਤੇ ਐਕਸਚੇਂਜ ਕਰੋ (JSON ਵੀ ਸਵੀਕਾਰ ਹੈ):
grant_type=authorization_code
client_id=<your client id>
code=<single-use authorization code>
redirect_uri=<exact registered redirect URI>
code_verifier=<original PKCE verifier>
resource=https://api.thunderphone.com/v1/mcpਵਿਕਲਪਿਕ resource ਪੈਰਾਮੀਟਰ ਪ੍ਰਮਾਣੀਕਰਨ ਅਤੇ ਟੋਕਨ ਦੋਵੇਂ ਬੇਨਤੀਆਂ ਉੱਤੇ ਸਵੀਕਾਰ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਰਿਫ੍ਰੈਸ਼ ਅਤੇ ਡਿਵਾਈਸ ਐਕਸਚੇਂਜ ਵੀ ਸ਼ਾਮਲ ਹਨ। ਛੱਡੇ ਜਾਣ 'ਤੇ, ਇਹ ਖੋਜੇ ਗਏ MCP ਸਰੋਤ ਲਈ ਡਿਫੌਲਟ ਹੁੰਦਾ ਹੈ। ਮੌਜੂਦ ਹੋਣ 'ਤੇ, ਇਸ ਦਾ ਉਸ ਸਰੋਤ ਨਾਲ ਬਿਲਕੁਲ ਮੇਲ ਖਾਣਾ ਲਾਜ਼ਮੀ ਹੈ; ਹੋਰ ਮੁੱਲ invalid_target ਵਾਪਸ ਕਰਦੇ ਹਨ। ਐਕਸੈੱਸ ਟੋਕਨ ਉਸ ਆਡੀਅੰਸ ਨੂੰ ਰੱਖਦੇ ਹਨ, ਅਤੇ MCP ਗੁੰਮ ਜਾਂ ਵੱਖਰੀ ਆਡੀਅੰਸ ਵਾਲੇ ਟੋਕਨਾਂ ਨੂੰ 401 ਅਤੇ ਖੋਜ ਚੈਲੇਂਜ ਨਾਲ ਅਸਵੀਕਾਰ ਕਰਦਾ ਹੈ।
ਪ੍ਰਮਾਣੀਕਰਨ ਬੇਨਤੀਆਂ ਅਤੇ ਕੋਡ 10 ਮਿੰਟ ਬਾਅਦ ਮਿਆਦ ਪੁੱਗ ਜਾਂਦੇ ਹਨ। ਹਰੇਕ ਟੋਕਨ ਜਵਾਬ ਵਿੱਚ access_token, token_type (Bearer), expires_in (ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ 3600 ਸਕਿੰਟ), refresh_token, scope, organization_id, ਅਤੇ organization_name ਹੁੰਦੇ ਹਨ। ਐਕਸੈੱਸ ਟੋਕਨ ਸਿਰਫ਼ Authorization: Bearer ਹੈਡਰ ਰਾਹੀਂ ਭੇਜੋ। ਟੋਕਨ ਕਦੇ ਵੀ URLs, ਲੌਗਾਂ, ਸੋਰਸ ਕੰਟਰੋਲ ਜਾਂ ਚੈਟ ਵਿੱਚ ਨਾ ਰੱਖੋ।
ਰਿਫ੍ਰੈਸ਼ ਅਤੇ ਰੱਦ ਕਰੋ
ਟੋਕਨ ਐਂਡਪੁਆਇੰਟ ਉੱਤੇ grant_type=refresh_token, client_id, refresh_token, ਅਤੇ resource ਨਾਲ ਰਿਫ੍ਰੈਸ਼ ਕਰੋ। ਨਵਾਂ ਰਿਫ੍ਰੈਸ਼ ਟੋਕਨ ਐਟਾਮਿਕ ਤੌਰ 'ਤੇ ਸੰਭਾਲੋ ਅਤੇ ਪੁਰਾਣਾ ਵਰਤਣਾ ਬੰਦ ਕਰੋ। ਸਫਲ ਰਿਫ੍ਰੈਸ਼ ਤੋਂ ਬਿਨਾਂ ਰਿਫ੍ਰੈਸ਼ ਟੋਕਨਾਂ ਦੀ ਮਿਆਦ 30 ਦਿਨਾਂ ਬਾਅਦ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ। ਵਿਕਲਪਿਕ scope ਦਿੱਤੀਆਂ ਗਈਆਂ ਅਨੁਮਤੀਆਂ ਨੂੰ ਸੀਮਿਤ ਕਰ ਸਕਦਾ ਹੈ। offline_access ਹਮੇਸ਼ਾ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ ਅਤੇ ਰਿਫ੍ਰੈਸ਼ ਟੋਕਨ ਹਮੇਸ਼ਾ ਜਾਰੀ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। scope ਤੋਂ ਬਿਨਾਂ ਸ਼ੁਰੂਆਤੀ ਬੇਨਤੀ ਸਿਰਫ਼ offline_access ਦਿੰਦੀ ਹੈ, ਇਸ ਲਈ ਕਲਾਇੰਟਾਂ ਨੂੰ ਲੋੜੀਂਦੀਆਂ ਅਨੁਮਤੀਆਂ ਦੀ ਬੇਨਤੀ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।
ਕੋਡ ਦੀ ਮੁੜ ਵਰਤੋਂ ਅਤੇ ਰੋਟੇਟ ਕੀਤੇ ਰਿਫ੍ਰੈਸ਼ ਟੋਕਨ ਦੀ ਮੁੜ ਵਰਤੋਂ ਪੂਰੇ ਪ੍ਰਮਾਣੀਕਰਨ ਨੂੰ ਰੱਦ ਕਰ ਦਿੰਦੀ ਹੈ। ਕਲਾਇੰਟ ਦੇ ਅੰਦਰ ਰਿਫ੍ਰੈਸ਼ਾਂ ਨੂੰ ਕ੍ਰਮਵਾਰ ਕਰੋ; ਸਫਲਤਾਪੂਰਵਕ ਐਕਸਚੇਂਜ ਕੀਤੇ ਕ੍ਰੈਡੈਂਸ਼ਲ ਨੂੰ ਦੁਬਾਰਾ ਚਲਾਉਣਾ ਸੁਰੱਖਿਅਤ ਰੀਟ੍ਰਾਈ ਰਣਨੀਤੀ ਨਹੀਂ ਹੈ।
ਡਿਸਕਨੈਕਟ ਕਰਨ ਲਈ, POST /v1/oauth/revoke ਨੂੰ token ਅਤੇ client_id ਭੇਜੋ। ਕਿਸੇ ਵੀ ਟੋਕਨ ਨੂੰ ਰੱਦ ਕਰਨ ਨਾਲ ਉਸ ਦਾ ਪ੍ਰਮਾਣੀਕਰਨ ਰੱਦ ਹੋ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਉਸ ਤੋਂ ਜਾਰੀ ਸਾਰੇ ਟੋਕਨ ਸ਼ਾਮਲ ਹਨ। ਅਣਜਾਣ ਟੋਕਨ ਇਹ ਦੱਸੇ ਬਿਨਾਂ ਸਫਲਤਾ ਵਾਪਸ ਕਰਦਾ ਹੈ ਕਿ ਉਹ ਮੌਜੂਦ ਹੈ ਜਾਂ ਨਹੀਂ। ਡੈਸ਼ਬੋਰਡ ਸੈਸ਼ਨ GET /v1/oauth/grants 'ਤੇ ਆਪਣੇ ਪ੍ਰਮਾਣੀਕਰਨਾਂ ਦੀ ਸੂਚੀ ਦੇਖ ਸਕਦੇ ਹਨ ਅਤੇ X-ThunderPhone-Org ਰਾਹੀਂ ਸੰਗਠਨ ਚੁਣਦੇ ਹੋਏ DELETE /v1/oauth/grants/<id> 'ਤੇ ਇੱਕ ਨੂੰ ਰੱਦ ਕਰ ਸਕਦੇ ਹਨ।
ਡਿਵਾਈਸ ਪ੍ਰਮਾਣੀਕਰਨ
ਡਿਵਾਈਸ ਪ੍ਰਮਾਣੀਕਰਨ ਸਿਰਫ਼ ਪਹਿਲਾਂ ਤੋਂ ਰਜਿਸਟਰ ਕੀਤੇ ਕਲਾਇੰਟਾਂ ਲਈ ਸੀਮਿਤ ਹੈ; ਡਾਇਨਾਮਿਕ ਤੌਰ 'ਤੇ ਰਜਿਸਟਰ ਕੀਤੇ ਕਲਾਇੰਟਾਂ ਨੂੰ unauthorized_client ਮਿਲਦਾ ਹੈ। ਪਹਿਲਾਂ ਤੋਂ ਰਜਿਸਟਰ ਕੀਤਾ ਜਨਤਕ ਕਲਾਇੰਟ thunderphone-cli ਡਿਵਾਈਸ ਪ੍ਰਮਾਣੀਕਰਨ ਅਤੇ ਰਿਫ੍ਰੈਸ਼ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। POST /v1/oauth/device/code ਨੂੰ client_id=thunderphone-cli ਅਤੇ scope ਭੇਜੋ। ਵਰਤੋਂਕਾਰ ਨੂੰ user_code ਅਤੇ verification_uri ਦਿਖਾਓ, ਜਾਂ verification_uri_complete ਖੋਲ੍ਹੋ।
grant_type=urn:ietf:params:oauth:grant-type:device_code, client_id, ਅਤੇ device_code ਨਾਲ ਟੋਕਨ ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਪੋਲ ਕਰੋ, ਵਾਪਸ ਮਿਲੇ interval (5 ਸਕਿੰਟ) ਜਿੰਨਾ ਘੱਟੋ-ਘੱਟ ਇੰਤਜ਼ਾਰ ਕਰੋ। authorization_pending ਉੱਤੇ ਜਾਰੀ ਰੱਖੋ। slow_down ਉੱਤੇ, ਹਰੇਕ ਅਗਲੀ ਬੇਨਤੀ ਲਈ ਜਵਾਬ ਵਿੱਚ ਵਾਪਸ ਮਿਲਿਆ ਨਵਾਂ interval ਵਰਤੋ (5 ਸਕਿੰਟ ਵਧਾਇਆ ਗਿਆ)। access_denied, expired_token, ਜਾਂ ਕਿਸੇ ਹੋਰ ਗਲਤੀ ਉੱਤੇ ਰੁਕ ਜਾਓ। ਡਿਵਾਈਸ ਕੋਡ ਨੂੰ ਕਦੇ ਵੀ ਆਪਣੇ ਆਪ ਮਨਜ਼ੂਰ ਨਾ ਕਰੋ।
ਪਹਿਲਾਂ ਤੋਂ ਰਜਿਸਟਰ ਕੀਤਾ thunderphone-mcp ਕਲਾਇੰਟ ਕਿਸੇ ਵੀ ਪੋਰਟ ਉੱਤੇ http://127.0.0.1/callback ਅਤੇ http://localhost/callback ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ। ਸਕੀਮ, ਹੋਸਟ, ਪਾਥ ਅਤੇ ਕਵੇਰੀ ਦਾ ਮੇਲ ਖਾਣਾ ਲਾਜ਼ਮੀ ਹੈ; ਟੋਕਨ ਐਕਸਚੇਂਜ ਨੂੰ ਪ੍ਰਮਾਣੀਕਰਨ ਤੋਂ ਮਿਲਿਆ ਸਹੀ ਰੀਡਾਇਰੈਕਟ URI, ਪੋਰਟ ਸਮੇਤ, ਵਰਤਣਾ ਲਾਜ਼ਮੀ ਹੈ। ਡਾਇਨਾਮਿਕ ਤੌਰ 'ਤੇ ਰਜਿਸਟਰ ਕੀਤੇ ਕਲਾਇੰਟਾਂ ਲਈ ਪੋਰਟ ਸਮੇਤ ਸਹੀ ਰੀਡਾਇਰੈਕਟ-URI ਮੇਲ ਲਾਜ਼ਮੀ ਹੈ। ਜੇ ਤੁਹਾਨੂੰ ਕਿਸੇ ਹੋਰ ਪਾਥ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਵੱਖਰਾ ਕਾਲਬੈਕ ਡਾਇਨਾਮਿਕ ਤੌਰ 'ਤੇ ਰਜਿਸਟਰ ਕਰੋ।
ਖਾਤਾ ਪਛਾਣ ਅਤੇ ਵਰਕਸਪੇਸ ਡੋਮੇਨ ਜਾਂਚਾਂ
ਤੁਹਾਡੇ ਕਲਾਇੰਟ ਨੂੰ ਲੋੜੀਂਦੇ ਕਾਰਵਾਈ ਸਕੋਪਾਂ ਦੇ ਨਾਲ openid email ਦੋਵੇਂ ਦੀ ਬੇਨਤੀ ਕਰੋ। Bearer ਹੈਡਰ ਵਿੱਚ ਐਕਸੈੱਸ ਟੋਕਨ ਨਾਲ ਖੋਜੇ ਗਏ userinfo_endpoint (GET /v1/oauth/userinfo) ਨੂੰ ਕਾਲ ਕਰੋ। ਸਫਲ ਜਵਾਬ ਵਿੱਚ ਇਹ ਹੁੰਦਾ ਹੈ:
{
"sub": "123",
"email": "person@example.com",
"email_verified": true,
"name": "Example User",
"org_id": 456
}sub ਸਥਿਰ ਵਰਤੋਂਕਾਰ ਪਛਾਣਕਰਤਾ ਹੈ; org_id ਸਹਿਮਤੀ ਦੌਰਾਨ ਚੁਣਿਆ ਗਿਆ ਸੰਗਠਨ ਹੈ। ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਦੋਵੇਂ ਪਛਾਣ ਸਕੋਪ ਚਾਹੀਦੇ ਹਨ ਅਤੇ ਕਿਸੇ ਇੱਕ ਦੇ ਗੁੰਮ ਹੋਣ 'ਤੇ 403 ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜੇ ਖਾਤੇ ਵਿੱਚ ਕੋਈ ਪ੍ਰਮਾਣਿਤ ਈਮੇਲ ਪ੍ਰੋਫਾਈਲ ਨਹੀਂ ਹੈ, ਤਾਂ ਇਹ ਅਪ੍ਰਮਾਣਿਤ ਈਮੇਲ ਨੂੰ ਭਰੋਸੇਯੋਗ ਦੱਸਣ ਦੀ ਬਜਾਏ error=access_denied ਨਾਲ 403 ਵਾਪਸ ਕਰਦਾ ਹੈ। ਅਵੈਧ, ਮਿਆਦ ਪੁੱਗੇ, ਰੱਦ ਕੀਤੇ, ਜਾਂ ਗਲਤ-ਆਡੀਅੰਸ ਵਾਲੇ ਟੋਕਨ 401 ਵਾਪਸ ਕਰਦੇ ਹਨ। ਮਨੁੱਖੀ ਸੈਸ਼ਨ ਟੋਕਨ ਅਤੇ ਸੰਗਠਨ API ਕੁੰਜੀਆਂ userinfo ਨੂੰ ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ। ਕੋਈ ID ਟੋਕਨ ਜਾਰੀ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ।
ਉਪਲਬਧ ਅਨੁਮਤੀਆਂ
| ਪਰਿਵਾਰ | ਸਕੋਪ |
|---|---|
| ਏਜੰਟ ਅਤੇ ਏਜੰਟ ਇੰਪੋਰਟ | agents:read, agents:write |
| ਕਾਲਾਂ | calls:read, calls:write |
| ਫ਼ੋਨ ਨੰਬਰ ਅਤੇ VoIP | numbers:read, numbers:write |
| ਗਿਆਨ | knowledge:read, knowledge:write |
| ਮੁਹਿੰਮਾਂ | campaigns:read, campaigns:write |
| ਇੰਟੀਗ੍ਰੇਸ਼ਨ, ਵੈੱਬਹੁੱਕ ਐਂਡਪੌਇੰਟ, MCP ਸਰਵਰ | integrations:read, integrations:write |
| ਆਵਾਜ਼ਾਂ | voices:read |
| ਟੈਸਟ ਸਿਨਾਰਿਓ, ਟੈਸਟ ਰਨ, ਪ੍ਰਮਾਣੀਕਰਨ | testing:read, testing:write |
| ਬਿਲਿੰਗ | billing:read |
| ਖਾਤਾ ਪਛਾਣ ਅਤੇ ਪ੍ਰਮਾਣਿਤ ਈਮੇਲ | openid, email (userinfo ਲਈ ਦੋਵੇਂ ਲਾਜ਼ਮੀ ਹਨ) |
| ਸਥਾਈ ਕਨੈਕਸ਼ਨ | offline_access (ਹਮੇਸ਼ਾ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ) |
GET, HEAD, ਅਤੇ OPTIONS ਪੜ੍ਹਨ ਸਕੋਪ ਵਰਤਦੇ ਹਨ; ਹੋਰ ਵਿਧੀਆਂ ਲਿਖਣ ਸਕੋਪ ਵਰਤਦੀਆਂ ਹਨ। OAuth ਰਾਹੀਂ ਆਵਾਜ਼ ਅਤੇ ਬਿਲਿੰਗ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਉਪਲਬਧ ਨਹੀਂ ਹਨ; POST /v1/voices/preview voices:read ਵਰਤਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਆਵਾਜ਼ ਦੀ ਸੰਰਚਨਾ ਬਦਲੇ ਬਿਨਾਂ ਉਸਦਾ ਪ੍ਰੀਵਿਊ ਕਰਦਾ ਹੈ। MCP ਟੂਲ ਆਪਣੀ ਅਧਾਰਭੂਤ REST ਕਾਰਵਾਈ ਦਾ ਸਕੋਪ ਲਾਗੂ ਕਰਦੇ ਹਨ। ਜਦੋਂ ਅਧਿਕਾਰ ਦੇਣ ਵਾਲਾ ਵਰਤੋਂਕਾਰ ਦੋਵੇਂ ਸੰਸਥਾਵਾਂ ਨਾਲ ਸੰਬੰਧਿਤ ਹੋਵੇ, ਤਦ ਵੀ ਸੰਸਥਾਵਾਂ-ਵਿਚਕਾਰ ਟ੍ਰਾਂਸਫ਼ਰ ਅਸਵੀਕਾਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। API-ਕੀ ਪ੍ਰਬੰਧਨ ਅਤੇ ਮਨੁੱਖੀ ਖਾਤਾ ਸੈਟਿੰਗਾਂ ਸਮੇਤ ਹੋਰ API ਪਰਿਵਾਰ OAuth ਰਾਹੀਂ ਉਪਲਬਧ ਨਹੀਂ ਹਨ। REST ਕਾਰਵਾਈ ਲਈ ਅਨੁਮਤੀ ਗੈਰਹਾਜ਼ਰ ਹੋਣ ਤੇ 403 ਵਾਪਸ ਮਿਲਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ WWW-Authenticate: Bearer error="insufficient_scope", scope="..." ਹੁੰਦਾ ਹੈ। ਅਵੈਧ ਜਾਂ ਮਿਆਦ-ਪੂਰੀ ਹੋ ਚੁੱਕੇ ਐਕਸੈੱਸ ਟੋਕਨ 401 ਵਾਪਸ ਕਰਦੇ ਹਨ।
MCP ਟੂਲ ਪ੍ਰਮਾਣੀਕਰਨ ਸੰਕੇਤ
tools/list ਵਿੱਚ ਹਰੇਕ ਟੂਲ ਵਿੱਚ ਉਸ ਟੂਲ ਦੀ REST ਕਾਰਵਾਈ ਦੇ ਸਕੋਪ ਨਾਲ securitySchemes: [{"type": "oauth2", "scopes": ["agents:read"]}] ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ। ਜਨਤਕ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਟੂਲ ਖਾਲੀ ਸਕੋਪ ਸੂਚੀ ਵਰਤਦੇ ਹਨ ਅਤੇ ਫਿਰ ਵੀ ਪ੍ਰਮਾਣਿਤ ਕਨੈਕਸ਼ਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਕਿਸੇ ਟੂਲ ਦਾ ਸਕੋਪ ਨਾ ਰੱਖਣ ਵਾਲੇ ਵੈਧ ਟੋਕਨ ਨੂੰ HTTP 200 ਮਿਲਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ JSON-RPC result ਹੁੰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ isError: true, content ਵਿੱਚ ਵਿਆਖਿਆਤਮਕ ਟੈਕਸਟ, ਅਤੇ _meta["mcp/www_authenticate"] ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ। ਆਖਰੀ ਇੱਕ ਐਰੇ ਹੈ ਜਿਸ ਵਿੱਚ resource_metadata, error="insufficient_scope", error_description, ਅਤੇ ਲੋੜੀਂਦੇ scope ਵਾਲਾ ਬੇਅਰਰ ਚੈਲੈਂਜ ਹੁੰਦਾ ਹੈ। ਟੂਲ ਚਲਾਇਆ ਨਹੀਂ ਜਾਂਦਾ। ਵਧਾਈ ਹੋਈ ਸਹਿਮਤੀ ਦੀ ਬੇਨਤੀ ਕਰਨ ਲਈ ਇਸ ਚੈਲੈਂਜ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਗੈਰਹਾਜ਼ਰ ਜਾਂ ਅਵੈਧ ਪ੍ਰਮਾਣੀਕਰਨ HTTP 401 ਨੂੰ WWW-Authenticate ਨਾਲ ਵਾਪਸ ਕਰਦਾ ਰਹਿੰਦਾ ਹੈ; REST ਸਕੋਪ ਅਸਫਲਤਾਵਾਂ HTTP 403 ਵਾਪਸ ਕਰਦੀਆਂ ਰਹਿੰਦੀਆਂ ਹਨ।
ਪ੍ਰਮਾਣ-ਪੱਤਰ ਸੰਭਾਲ
API ਸਟੇਜਿੰਗ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਹਰ ਘੰਟੇ python manage.py oauth_cleanup ਚਲਾਉਂਦੀ ਹੈ। ਇਹ ਮਿਆਦ-ਪੂਰੀ ਹੋ ਚੁੱਕੀਆਂ ਅਧਿਕਾਰ ਬੇਨਤੀਆਂ ਅਤੇ ਡਿਵਾਈਸ ਕੋਡ ਹਟਾਉਂਦੀ ਹੈ। ਮਿਆਦ-ਪੂਰੀ ਹੋ ਚੁੱਕੇ ਐਕਸੈੱਸ ਟੋਕਨ, ਅਧਿਕਾਰ ਕੋਡ ਅਤੇ ਰਿਫ਼ਰੈਸ਼-ਟੋਕਨ ਹੈਸ਼ ਸਿਰਫ਼ ਤਦੋਂ ਹਟਾਏ ਜਾਂਦੇ ਹਨ ਜਦੋਂ ਉਨ੍ਹਾਂ ਦੀ ਗ੍ਰਾਂਟ ਰੱਦ ਹੋ ਜਾਂਦੀ ਹੈ ਜਾਂ ਪੂਰਾ ਪਰਿਵਾਰ ਨਿਸ਼ਕ੍ਰਿਆ ਹੋ ਜਾਂਦਾ ਹੈ। ਵਰਤੇ ਜਾ ਚੁੱਕੇ ਹੈਸ਼ ਉਦੋਂ ਤੱਕ ਰੱਖੇ ਜਾਂਦੇ ਹਨ ਜਦੋਂ ਤੱਕ ਪਰਿਵਾਰ ਕੋਲ ਵਰਤਣਯੋਗ ਰਿਫ਼ਰੈਸ਼ ਟੋਕਨ, ਅਧਿਕਾਰ ਕੋਡ, ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਡਿਵਾਈਸ ਕੋਡ ਜਾਂ ਐਕਸੈੱਸ ਟੋਕਨ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਜੋ ਕਲੀਨਅੱਪ ਰੀਪਲੇ ਪਛਾਣ ਨੂੰ ਅਯੋਗ ਨਾ ਕਰ ਸਕੇ।