Yönetilen aracılardaki kimlik bilgileri

Kimlik bilgileri, sunucu tarafından yönetilen ve gizli anahtarın hiçbir zaman aracının ortamına girmediği üçüncü taraf hizmetlerine erişmesine olanak tanıyan gizli anahtarlardır. Kimlik bilgisini bir kez saklar, kimliğe göre referans verirsiniz. Çıkış proxy'si, istek sırasında kimlik bilgisini çözümler ve ekler.

Gizli değerler yalnızca yazılabilir. Depolandıktan sonra hiçbir uç nokta tarafından döndürülmezler. Bu nedenle, güvenliği ihlal edilmiş bir aracı, kullandığı jetonları geri okuyamaz.

Kimlik bilgisini kullandığınız birincil yer, environment.network üzerindeki ağ izin verilenler listesidir. Önce sırrı saklayın:

Python

from google import genai

client = genai.Client()

credential = client.credentials.create(
    id="github-production",
    type="bearer_token",
    token="ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
)

print(f"Credential ID: {credential.id}, Status: {credential.status}")

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const credential = await client.credentials.create({
    id: "github-production",
    type: "bearer_token",
    token: "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
});

console.log(`Credential ID: ${credential.id}, Status: ${credential.status}`);

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/credentials" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "id": "github-production",
    "type": "bearer_token",
    "token": "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}'

Ardından, kimliğini doğruladığı alana ekleyin:

Python

interaction = client.interactions.create(
    agent="antigravity-preview-09-2026",
    input="Triage the open issues in my-org/my-repo.",
    environment={
        "type": "remote",
        "network": {
            "allowlist": [
                {"domain": "api.github.com", "credential": "github-production"},
                {"domain": "*"},
            ]
        },
    },
)

JavaScript

const interaction = await client.interactions.create({
    agent: "antigravity-preview-09-2026",
    input: "Triage the open issues in my-org/my-repo.",
    environment: {
        type: "remote",
        network: {
            allowlist: [
                { domain: "api.github.com", credential: "github-production" },
                { domain: "*" },
            ],
        },
    },
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "antigravity-preview-09-2026",
    "input": "Triage the open issues in my-org/my-repo.",
    "environment": {
        "type": "remote",
        "network": {
            "allowlist": [
                { "domain": "api.github.com", "credential": "github-production" },
                { "domain": "*" }
            ]
        }
    }
}'

Aracı artık api.github.com için kimliği doğrulanmış istekler gönderiyor ve jeton hiçbir zaman sanal alan içinde bulunmuyor.

Yeterlilik belgesi türleri

Her kimlik bilgisinin, hangi alanları kabul edeceğini ve proxy'nin bunu nasıl uygulayacağını belirleyen bir type vardır.

Tür Kullanım alanı Davranış
bearer_token Kişisel erişim jetonları, bot jetonları, statik API anahtarları Proxy, jetonu istek başlığı olarak yerleştirir. Yenileme mantığı yoktur.
oauth2 OAuth uygulamaları ve kullanıcı tarafından temsil edilen akışlar Proxy, yenileme jetonunu erişim jetonlarıyla değiştirir ve süreleri doldukça bunları yeniler.
environment_variable Gizli dizileri işlem ortamından okuyan istemci SDK'ları Temsilcinin ortamı bir yer tutucu alır. Proxy, giden isteklerde gerçek sırrın yerine geçer.

Ağın izin verilenler listesindeki kimlik bilgilerini kullanma

İzin verilenler listesi kuralına credential eklediğinizde proxy, bu alana yapılan her giden isteğin kimliğini doğrular. Bu yöntem, bir temsilciye özel API'ye, özel depoya veya özel pakete erişim vermek için önerilir.

Aynı izin verilenler listesinde kimliği doğrulanmış ve doğrulanmamış kuralları birlikte kullanabilirsiniz:

Python

interaction = client.interactions.create(
    agent="antigravity-preview-09-2026",
    input="Sync the open Jira issues into the tracking sheet in my repo.",
    environment={
        "type": "remote",
        "sources": [
            {
                "type": "repository",
                "source": "https://github.com/your-org/backend",
                "target": "/backend-app",
            }
        ],
        "network": {
            "allowlist": [
                {"domain": "github.com", "credential": "github-production"},
                {"domain": "api.atlassian.com", "credential": "jira-oauth"},
                {"domain": "*.googleapis.com"},
            ]
        },
    },
)

JavaScript

const interaction = await client.interactions.create({
    agent: "antigravity-preview-09-2026",
    input: "Sync the open Jira issues into the tracking sheet in my repo.",
    environment: {
        type: "remote",
        sources: [
            {
                type: "repository",
                source: "https://github.com/your-org/backend",
                target: "/backend-app",
            },
        ],
        network: {
            allowlist: [
                { domain: "github.com", credential: "github-production" },
                { domain: "api.atlassian.com", credential: "jira-oauth" },
                { domain: "*.googleapis.com" },
            ],
        },
    },
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "antigravity-preview-09-2026",
    "input": "Sync the open Jira issues into the tracking sheet in my repo.",
    "environment": {
        "type": "remote",
        "sources": [
            {
                "type": "repository",
                "source": "https://github.com/your-org/backend",
                "target": "/backend-app"
            }
        ],
        "network": {
            "allowlist": [
                { "domain": "github.com", "credential": "github-production" },
                { "domain": "api.atlassian.com", "credential": "jira-oauth" },
                { "domain": "*.googleapis.com" }
            ]
        }
    }
}'

Proxy, kimlik bilgisini istek başına çözdüğünden oauth2 kimlik bilgisi, erişim jetonunu şeffaf bir şekilde yeniler. Uzun süren bir etkileşim, erişim jetonunun süresi dolduğunda kesintiye uğramaz.

credential ve transform'ı birleştirme

İzin verilenler listesi kuralları, doğrudan kuralda başlıkları ayarlayan satır içi transform nesnesini de kabul eder. Her iki mekanizma da kablodaki çıkış proxy'si tarafından uygulanır. Bu nedenle, her iki durumda da üstbilgi değeri hiçbir zaman sanal alan içinde bulunmaz. Her iki alan da aynı kuralda görünebilir.

Kural yapılandırması Davranış
Yalnızca credential Proxy, kimlik bilgisini çözer ve alanla ilgili her isteğe başlığını ekler.
Yalnızca transform Statik başlık yerleştirme. Yazdığınız başlıklar olduğu gibi gönderilir.
Her ikisi de Önce kimlik bilgisi uygulanır, ardından transform üstte birleştirilir. Her ikisi de aynı anahtarı ayarlarsa açık bir transform başlığı öncelikli olur.
Hiçbiri Alana izin verilir ve herhangi bir başlık eklenmez.

Bir sırrı bir kez saklamak ve projenizdeki her ortamda, aracıda ve tetikleyicide buna referans vermek istediğinizde ve erişim jetonu yenileme ve döndürme işlemlerinin sizin için yapılmasını istediğinizde kimlik bilgisi kullanmak mantıklıdır. Satır içi transform, değer tek bir çağrıya ait olduğunda (ör. etkileşimi oluşturmadan hemen önce kendiniz oluşturduğunuz bir jeton) uygundur.

İkisinin bir arada kullanılması yaygındır. Kimlik bilgisi, kimlik doğrulama üstbilgisini taşır ve transform, aynı istekte yukarı akış hizmetinin beklediği diğer her şeyi ekler:

{
    "domain": "api.atlassian.com",
    "credential": "jira-oauth",
    "transform": {
        "X-Atlassian-Workspace": "my-workspace-id"
    }
}

Bir sırrı satır içi transform öğesinden kimlik bilgisine taşımak için POST /credentials ile birlikte saklayın, transform öğesindeki kimlik doğrulama başlığını "credential": "<id>" ile değiştirin ve transform nesnesinin geri kalanını olduğu gibi bırakın.

MCP sunucularıyla kimlik bilgilerini kullanma

Uzak MCP sunucuları aynı credential alanını alır. mcp_server aracında ayarlayın. Proxy, kimlik doğrulama üst bilgisini bu sunucuya yapılan her isteğe ekler:

Python

interaction = client.interactions.create(
    agent="antigravity-preview-09-2026",
    input="Create a new issue in my-org/my-repo",
    environment="remote",
    tools=[{
        "type": "mcp_server",
        "name": "github",
        "url": "https://api.githubcopilot.com/mcp",
        "credential": "github-production",
    }],
)

JavaScript

const interaction = await client.interactions.create({
    agent: "antigravity-preview-09-2026",
    input: "Create a new issue in my-org/my-repo",
    environment: "remote",
    tools: [{
        type: "mcp_server",
        name: "github",
        url: "https://api.githubcopilot.com/mcp",
        credential: "github-production",
    }],
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "antigravity-preview-09-2026",
    "input": "Create a new issue in my-org/my-repo",
    "environment": "remote",
    "tools": [
        {
            "type": "mcp_server",
            "name": "github",
            "url": "https://api.githubcopilot.com/mcp",
            "credential": "github-production"
        }
    ]
}'

credential ve headers, izin verilenler listesiyle aynı öncelik kuralına tabidir. Kimlik bilgisi önce uygulanır ve headers üstte birleştirilir. Bu nedenle, her ikisi de aynı anahtarı ayarlarsa açık bir başlık kazanır:

{
    "type": "mcp_server",
    "name": "jira",
    "url": "https://jira.atlassian.com/mcp",
    "credential": "jira-oauth",
    "headers": {
        "X-Atlassian-Workspace": "my-workspace-id"
    }
}

Bir sırrı satır içi headers öğesinden kimlik bilgisine taşımak için POST /credentials ile saklayın ve headers öğesindeki kimlik doğrulama girişini credential ile değiştirin. Diğer başlıkları olduğu gibi bırakın.

Kimlik bilgilerini ortam değişkeni olarak kullanma

Bazı istemci kitaplıkları, sırları istek üstbilgisi olarak kabul etmek yerine işlem ortamından okur. Soket modu ve uzun anket istemcileri yaygın olarak kullanılır.

environment_variable kimlik bilgisini environment.env altındaki bir değişken adına bağlayın:

Python

interaction = client.interactions.create(
    agent="antigravity-preview-09-2026",
    input="Run the sync script and check notifications.",
    environment={
        "type": "remote",
        "env": {
            "NODE_ENV": "production",
            "SLACK_BOT_TOKEN": {"credential": "slack-bot-token"},
        },
    },
)

JavaScript

const interaction = await client.interactions.create({
    agent: "antigravity-preview-09-2026",
    input: "Run the sync script and check notifications.",
    environment: {
        type: "remote",
        env: {
            NODE_ENV: "production",
            SLACK_BOT_TOKEN: { credential: "slack-bot-token" },
        },
    },
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "antigravity-preview-09-2026",
    "input": "Run the sync script and check notifications.",
    "environment": {
        "type": "remote",
        "env": {
            "NODE_ENV": "production",
            "SLACK_BOT_TOKEN": { "credential": "slack-bot-token" }
        }
    }
}'

env, değişmez dizeleri ve kimlik bilgisi referanslarını yan yana kabul eder. Dize değişmezi, kapsayıcıya normal bir düz metin değişkeni olarak yerleştirilir.

Kimlik bilgisi referansı değildir. Değişken, yer tutucuyu (__GEMINI_CRED_<credential-id>__) alır ve proxy, yalnızca kimlik bilgilerinin trusted_domains bölümündeki bir alana giden giden istekler için gerçek gizliyi değiştirir. Başka bir alana yapılan istekler reddedilir. Böylece, gizli anahtar hiçbir zaman sınırın dışına çıkmaz ve yerine yer tutucu gönderilmez.

Her environment_variable kimlik bilgisinde trusted_domains ayarlayın. Bu, sırrın kullanılabileceği kapsamları belirleyen kontroldür.

Kimlik bilgisi oluşturma

Her oluşturma isteği için type ve bu türün gerektirdiği alanlar gerekir.

REST doğrudan çağrıldığında tüm alan adları snake_case kullanır. camelCase alanı göndermek 400 döndürür.

Hamiline ait jeton

Bir taşıyıcı jeton kimlik bilgisinin yalnızca token olması gerekir:

Python

credential = client.credentials.create(
    id="github-production",
    type="bearer_token",
    token="ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
)

JavaScript

const credential = await client.credentials.create({
    id: "github-production",
    type: "bearer_token",
    token: "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/credentials" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "id": "github-production",
    "type": "bearer_token",
    "token": "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}'

Yanıt yalnızca meta verileri döndürür, jetonu asla döndürmez:

{
  "id": "github-production",
  "type": "bearer_token",
  "status": "active",
  "create_time": "2026-07-15T10:00:00.000000000Z",
  "update_time": "2026-07-15T10:00:00.000000000Z"
}

Proxy varsayılan olarak Authorization: Bearer <token> gönderir. Başka bir şey bekleyen bir hizmeti hedeflemek için header_name ve prefix değerlerini geçersiz kılın:

Python

credential = client.credentials.create(
    id="my-api-key",
    type="bearer_token",
    token="key_xxxxxxxxxxxx",
    header_name="x-goog-api-key",
    prefix="",
)

JavaScript

const credential = await client.credentials.create({
    id: "my-api-key",
    type: "bearer_token",
    token: "key_xxxxxxxxxxxx",
    header_name: "x-goog-api-key",
    prefix: "",
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/credentials" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "id": "my-api-key",
    "type": "bearer_token",
    "token": "key_xxxxxxxxxxxx",
    "header_name": "x-goog-api-key",
    "prefix": ""
}'

Bu yapılandırma, x-goog-api-key: key_xxxxxxxxxxxx başlığını oluşturur.

Aşağıdaki tabloda header_name ve prefix değerlerinin nasıl birleştiği gösterilmektedir:

Yapılandırma Yerleştirilmiş üstbilgi
{"token": "ghp_xxx"} Authorization: Bearer ghp_xxx
{"token": "sk_live_xxx"} Authorization: Bearer sk_live_xxx
{"token": "key_xxx", "header_name": "x-goog-api-key", "prefix": ""} x-goog-api-key: key_xxx
{"token": "mytoken", "header_name": "X-API-Token", "prefix": ""} X-API-Token: mytoken

OAuth2

OAuth2 kimlik bilgisi için client_id, client_secret, refresh_token ve token_url gerekir. scopes alanı isteğe bağlıdır:

Python

credential = client.credentials.create(
    id="jira-oauth",
    type="oauth2",
    client_id="my-client-id",
    client_secret="my-client-secret",
    token_url="https://auth.atlassian.com/oauth/token",
    refresh_token="rt_xxxxxxxxxxxxxxxxxxxx",
    scopes=["read:jira-work", "write:jira-work"],
)

JavaScript

const credential = await client.credentials.create({
    id: "jira-oauth",
    type: "oauth2",
    client_id: "my-client-id",
    client_secret: "my-client-secret",
    token_url: "https://auth.atlassian.com/oauth/token",
    refresh_token: "rt_xxxxxxxxxxxxxxxxxxxx",
    scopes: ["read:jira-work", "write:jira-work"],
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/credentials" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "id": "jira-oauth",
    "type": "oauth2",
    "client_id": "my-client-id",
    "client_secret": "my-client-secret",
    "token_url": "https://auth.atlassian.com/oauth/token",
    "refresh_token": "rt_xxxxxxxxxxxxxxxxxxxx",
    "scopes": ["read:jira-work", "write:jira-work"]
}'

OAuth2 kimlik bilgisi oluşturmak, yapılandırmanın çalıştığını onaylamak için token_url ile canlı jeton değişimi gerçekleştirir. Kimlik bilgisi yalnızca sağlayıcı, access_token içeren başarılı bir jeton yanıtı döndürürse saklanır. Hem JSON hem de form-urlencoded yanıtları kabul edilir.

Bu, oluşturma sırasında geçerli ve süresi dolmamış bir yenileme jetonuna ihtiyacınız olduğu anlamına gelir. Sağlayıcı, değişimi reddederse hata size döndürülür:

{
  "error": {
    "message": "OAuth token validation failed with HTTP 403: {\"error\":\"unauthorized_client\",\"error_description\":\"refresh_token is invalid\"}",
    "code": "invalid_request"
  }
}

Depolandıktan sonra proxy, erişim jetonlarının süresi doldukça bunları yeniler. Sağlayıcı, yenileme jetonlarını döndürürse ve yenileme sırasında yeni bir jeton döndürürse yeni jeton, depolanan jetonun yerini otomatik olarak alır.

Ortam değişkeni

environment_variable kimlik bilgisi için value ve injection_location gerekir:

Python

credential = client.credentials.create(
    id="slack-bot-token",
    type="environment_variable",
    value="xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx",
    trusted_domains=["*.slack.com", "slack.com"],
    injection_location="header",
)

JavaScript

const credential = await client.credentials.create({
    id: "slack-bot-token",
    type: "environment_variable",
    value: "xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx",
    trusted_domains: ["*.slack.com", "slack.com"],
    injection_location: "header",
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/credentials" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "id": "slack-bot-token",
    "type": "environment_variable",
    "value": "xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx",
    "trusted_domains": ["*.slack.com", "slack.com"],
    "injection_location": "header"
}'

injection_location alanı, proxy'ye giden istekte sırrın nerede değiştirileceğini bildirir. Bir hizmetin birden fazla değere ihtiyacı olduğunda header, query veya body değerlerini tek bir dize ya da dizi olarak kabul eder:

"injection_location": ["header", "query"]

Yerine koyma işlemi yalnızca listelediğiniz konumlarda gerçekleşir. Yer tutucuyu başka bir yerde taşıyan istekler, iletilmek yerine reddedilir.

Kimliği bir değişken adına bağlamak için Kimlikleri ortam değişkeni olarak kullanma başlıklı makaleyi inceleyin.

Oluşturulan kimlikler

id alanı isteğe bağlıdır. Bu parametreyi atladığınızda hizmet bir UUID oluşturur:

{
  "id": "9e545973-4330-49bb-9a44-930cea9fbe3c",
  "type": "bearer_token",
  "status": "active",
  "create_time": "2026-07-15T10:00:00.000000000Z",
  "update_time": "2026-07-15T10:00:00.000000000Z"
}

Etkileşimlerde kullanmak üzere sabit ve okunabilir bir referans istediğinizde kendi kimliğinizi sağlayın. Kimlik, kaynak yolunda göründüğünden kısa çizgi veya alt çizgi içeren küçük alfanümerik karakterler tercih edilir.

Kimlik bilgilerini listeleme

Projenize ait kimlik bilgilerini listeleyin. Yanıt grup boyutunu kontrol etmek için sayfalama parametrelerini kullanın.

Python

response = client.credentials.list(page_size=10)
for credential in response.credentials:
    print(f"Credential ID: {credential.id}, Type: {credential.type}")

JavaScript

const response = await client.credentials.list({ page_size: 10 });
for (const credential of response.credentials) {
    console.log(`Credential ID: ${credential.id}, Type: ${credential.type}`);
}

REST

curl -X GET "https://generativelanguage.googleapis.com/v1beta/credentials?page_size=10" \
-H "x-goog-api-key: $GEMINI_API_KEY"

Yanıtta yalnızca meta veriler var:

{
  "credentials": [
    {
      "id": "github-production",
      "type": "bearer_token",
      "status": "active",
      "create_time": "2026-07-15T10:00:00.000000000Z",
      "update_time": "2026-07-15T10:00:00.000000000Z"
    },
    {
      "id": "jira-oauth",
      "type": "oauth2",
      "status": "active",
      "create_time": "2026-07-15T10:05:00.000000000Z",
      "update_time": "2026-07-15T10:05:00.000000000Z"
    }
  ],
  "next_page_token": "Cj...5aE="
}

Sonraki sayfayı getirmek için next_page_token değerini page_token olarak geri iletin. Başka sonuç olmadığında alan atlanır.

Parametre Tür Açıklama
page_size tam sayı Sayfa başına maksimum kimlik bilgisi sayısı.
page_token dize Önceki bir yanıttaki next_page_token jetonu.

Yeterlilik belgesi edinme

Belirli bir kimlik bilgisinin meta verilerini kimliğine göre alma

Python

credential = client.credentials.get(id="github-production")
print(f"Credential ID: {credential.id}, Status: {credential.status}")

JavaScript

const credential = await client.credentials.get("github-production");
console.log(`Credential ID: ${credential.id}, Status: ${credential.status}`);

REST

curl -X GET "https://generativelanguage.googleapis.com/v1beta/credentials/github-production" \
-H "x-goog-api-key: $GEMINI_API_KEY"

Yanıt aşağıdakine benzer:

{
  "id": "github-production",
  "type": "bearer_token",
  "status": "active",
  "create_time": "2026-07-15T10:00:00.000000000Z",
  "update_time": "2026-08-01T14:30:00.000000000Z"
}

Mevcut olmayan bir kimlik bilgisi istenirse 404 döndürülür:

{
  "error": {
    "message": "Result not found.; GetCredential call failed",
    "code": "not_found"
  }
}

Kimlik bilgisini döndürme

İzin verilenler listesi kuralına, araç tanımına veya ona referans veren ortam değişkenine dokunmadan bir sırrı değiştirin. Rotasyon, bir sonraki proxy çözümünde geçerli olur.

İstek, type ve değiştirmek istediğiniz alanları içermelidir. Atladığınız alanlar mevcut değerlerini korur.

Hamiline ait jetonu döndürme:

Python

credential = client.credentials.update(
    id="github-production",
    type="bearer_token",
    token="ghp_new_xxxxxxxxxxxxxxxxxxxx",
)

JavaScript

const credential = await client.credentials.update("github-production", {
    type: "bearer_token",
    token: "ghp_new_xxxxxxxxxxxxxxxxxxxx",
});

REST

curl -X PATCH "https://generativelanguage.googleapis.com/v1beta/credentials/github-production" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "type": "bearer_token",
    "token": "ghp_new_xxxxxxxxxxxxxxxxxxxx"
}'

OAuth2 yenileme jetonunu döndürme:

Python

credential = client.credentials.update(
    id="jira-oauth",
    type="oauth2",
    refresh_token="rt_new_xxxxxxxxxxxxxxxxxxxx",
)

JavaScript

const credential = await client.credentials.update("jira-oauth", {
    type: "oauth2",
    refresh_token: "rt_new_xxxxxxxxxxxxxxxxxxxx",
});

REST

curl -X PATCH "https://generativelanguage.googleapis.com/v1beta/credentials/jira-oauth" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "type": "oauth2",
    "refresh_token": "rt_new_xxxxxxxxxxxxxxxxxxxx"
}'

Yanıt, yeni update_time'ı yansıtıyor:

{
  "id": "jira-oauth",
  "type": "oauth2",
  "status": "active",
  "create_time": "2026-07-15T10:05:00.000000000Z",
  "update_time": "2026-08-01T14:30:00.000000000Z"
}

Kimlik bilgilerinin type oluşturma sırasında sabitlenir. Değiştirmek için kimlik bilgisini silip yenisini oluşturun.

Kimlik bilgisini silme

Artık ihtiyaç duyulmayan kimlik bilgilerini ve depolanmış sırlarını silin.

Python

client.credentials.delete(id="github-production")

JavaScript

await client.credentials.delete("github-production");

REST

curl -X DELETE "https://generativelanguage.googleapis.com/v1beta/credentials/github-production" \
-H "x-goog-api-key: $GEMINI_API_KEY"

Başarılı bir silme işlemi boş bir nesne döndürür:

{}

Kimliğe hâlâ referans veren tüm izin verilenler listesi kuralları, araçları veya ortam değişkenleri çözümlenemez. Bu nedenle, önce bunları güncelleyin.

Alan referansı

Her kimlik bilgisi için ortak olan alanlar:

Alan Tür Zorunlu Açıklama
id dize Hayır Benzersiz tanımlayıcı. Atlandığında UUID olarak oluşturulur.
type dize Evet Şunlardan biri: bearer_token, oauth2, environment_variable.
status dize Salt okunur Kimlik bilgisinin mevcut durumu.
create_time dize Salt okunur RFC 3339 oluşturma zaman damgası.
update_time dize Salt okunur Son güncellemenin RFC 3339 zaman damgası.

bearer_token için alanlar:

Alan Tür Zorunlu Açıklama
token dize Evet Salt yazma. Jeton değeri.
header_name dize Hayır Eklenecek üstbilgi. Varsayılan olarak Authorization değerine ayarlanır.
prefix dize Hayır Değer öneki. Varsayılan olarak Bearer değerine ayarlanır. Hiçbiri için "" olarak ayarlayın.

oauth2 için alanlar:

Alan Tür Zorunlu Açıklama
client_id dize Evet OAuth2 istemci kimliği.
client_secret dize Evet Salt yazma. OAuth2 istemci gizli anahtarı.
refresh_token dize Evet Salt yazma. Erişim jetonları almak için kullanılan yenileme jetonu.
token_url dize Evet Sağlayıcı jeton uç noktası.
scopes dizi Hayır İstek yapılacak OAuth kapsamları.

environment_variable için alanlar:

Alan Tür Zorunlu Açıklama
value dize Evet Salt yazma. Gizli anahtar değeri.
injection_location dize veya dizi Evet Gizli anahtarın yerine ne yazılacağı. header, query, body değerlerinden biri veya daha fazlası.
trusted_domains dizi Hayır Değiştirme için yetkilendirilmiş alan adları.

Hatalar

Hatalar, message ve code içeren bir JSON nesnesi döndürür:

{
  "error": {
    "message": "Credential 'github-production' already exists.; CreateCredential call failed",
    "code": "aborted"
  }
}
HTTP durumu code Neden
400 invalid_request Zorunlu alan eksik, bilinmeyen alan, desteklenmeyen type veya başarısız OAuth2 doğrulama.
404 not_found Bu kimliğe sahip kimlik bilgisi yok.
409 aborted Bu kimliğe sahip bir kimlik bilgisi zaten var.

Bilinmeyen alanlar yoksayılmak yerine reddedilir ve hata, alanı adlandırır:

{
  "error": {
    "message": "Unknown parameter 'headerName'. Did you mean 'header_name'?",
    "code": "invalid_request"
  }
}

Sırada ne var?

  • Ortamlar: Aracıların kodu nasıl çalıştırdığını ve dosyaları nasıl kalıcı hale getirdiğini öğrenin.
  • Ajanlara Genel Bakış: Yönetilen ajanların temel kavramları hakkında bilgi edinin.
  • Özel Ajanlar Oluşturma: AGENTS.md ve SKILL.md kullanarak kendi ajanlarınızı tanımlayın.