Kredensial adalah rahasia yang dikelola server yang memungkinkan agen Anda menjangkau layanan pihak ketiga tanpa rahasia tersebut pernah masuk ke lingkungan agen. Anda menyimpan kredensial satu kali, merujuknya berdasarkan ID, dan proxy keluar akan menyelesaikan serta menyuntikkannya pada waktu permintaan.
Nilai secret hanya dapat ditulis. Setelah disimpan, token tidak pernah ditampilkan oleh endpoint mana pun, sehingga agen yang disusupi tidak dapat membaca kembali token yang digunakannya.
Tempat utama Anda menggunakan kredensial adalah daftar yang diizinkan jaringan di
environment.network. Simpan secret terlebih dahulu:
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"
}'
Kemudian, lampirkan ke domain yang diautentikasi:
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": "*" }
]
}
}
}'
Agen kini membuat permintaan terautentikasi ke api.github.com, dan token tidak pernah ada di dalam sandbox.
Jenis kredensial
Setiap kredensial memiliki type yang menentukan kolom mana yang diterima dan cara
penerapannya oleh proxy.
| Jenis | Kasus penggunaan | Perilaku |
|---|---|---|
bearer_token |
Token akses pribadi, token bot, kunci API statis | Proxy menyuntikkan token sebagai header permintaan. Tidak ada logika refresh. |
oauth2 |
Aplikasi OAuth dan alur yang didelegasikan pengguna | Proxy menukarkan token refresh dengan token akses dan memperbaruinya saat masa berlakunya habis. |
environment_variable |
SDK klien yang membaca rahasia dari lingkungan proses | Lingkungan agen menerima placeholder. Proxy menggantikan secret sebenarnya pada permintaan keluar. |
Menggunakan kredensial dalam daftar yang diizinkan jaringan
Tambahkan credential ke aturan daftar yang diizinkan dan proxy akan mengautentikasi setiap permintaan keluar ke domain tersebut. Cara ini direkomendasikan untuk memberikan akses agen ke API pribadi, repositori pribadi, atau bucket pribadi.
Anda dapat menggabungkan aturan yang diautentikasi dan tidak diautentikasi dalam daftar yang diizinkan yang sama:
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" }
]
}
}
}'
Karena proxy menyelesaikan kredensial per permintaan, kredensial oauth2
memperbarui token aksesnya secara transparan. Interaksi yang berjalan lama tidak akan
terganggu saat token akses berakhir.
Menggabungkan credential dan transform
Aturan daftar yang diizinkan juga menerima objek
transform inline yang
menetapkan header langsung pada aturan. Kedua mekanisme diterapkan oleh proxy keluar di jaringan, sehingga dalam kedua kasus tersebut, nilai header tidak pernah ada di dalam sandbox. Kedua kolom dapat muncul pada aturan yang sama.
| Konfigurasi aturan | Perilaku |
|---|---|
credential saja |
Proxy menyelesaikan kredensial dan menyisipkan headernya pada setiap permintaan ke domain. |
transform saja |
Injeksi header statis. Header yang Anda tulis dikirim apa adanya. |
| Keduanya | Kredensial diterapkan terlebih dahulu, lalu transform digabungkan di atasnya. Header transform eksplisit akan menang jika keduanya menetapkan kunci yang sama. |
| Netral | Domain diizinkan dan tidak ada header yang disisipkan. |
Kredensial layak digunakan saat Anda ingin menyimpan rahasia satu kali dan mereferensikannya dari setiap lingkungan, agen, dan pemicu dalam project Anda, serta saat Anda ingin penanganan refresh dan rotasi token akses dilakukan untuk Anda. transform inline cocok
jika nilai termasuk dalam satu panggilan, misalnya token yang Anda buat
sendiri tepat sebelum membuat interaksi.
Menggabungkan keduanya adalah hal yang umum. Kredensial membawa header autentikasi
dan transform menambahkan apa pun yang diharapkan layanan upstream pada permintaan yang sama:
{
"domain": "api.atlassian.com",
"credential": "jira-oauth",
"transform": {
"X-Atlassian-Workspace": "my-workspace-id"
}
}
Untuk memindahkan secret dari transform inline ke kredensial, simpan dengan POST /credentials, ganti header auth di transform dengan "credential": "<id>", dan biarkan objek transform lainnya.
Menggunakan kredensial dengan server MCP
Server MCP jarak jauh menggunakan kolom credential yang sama. Tetapkan di alat mcp_server
dan proxy akan menyisipkan header autentikasi ke setiap permintaan ke server tersebut:
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 dan headers mengikuti aturan prioritas yang sama seperti daftar yang diizinkan.
Kredensial diterapkan terlebih dahulu dan headers digabungkan di atas, sehingga header eksplisit akan menang jika keduanya menetapkan kunci yang sama:
{
"type": "mcp_server",
"name": "jira",
"url": "https://jira.atlassian.com/mcp",
"credential": "jira-oauth",
"headers": {
"X-Atlassian-Workspace": "my-workspace-id"
}
}
Untuk memindahkan rahasia dari headers inline ke kredensial, simpan dengan
POST /credentials dan ganti entri autentikasi di headers dengan credential.
Biarkan header lainnya di tempatnya.
Menggunakan kredensial sebagai variabel lingkungan
Beberapa library klien membaca rahasia dari lingkungan proses, bukan menerimanya sebagai header permintaan. Klien mode soket dan polling panjang adalah kasus umum.
Ikat kredensial environment_variable ke nama variabel di bagian
environment.env:
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 menerima string literal dan referensi kredensial secara berdampingan. String literal
disisipkan ke dalam penampung sebagai variabel teks biasa normal.
Referensi kredensial tidak. Variabel menerima placeholder
__GEMINI_CRED_<credential-id>__, dan proxy menukar rahasia sebenarnya hanya
untuk permintaan keluar yang ditujukan ke domain dalam trusted_domains kredensial. Permintaan ke domain lain ditolak, sehingga secret tidak pernah keluar dari perimeter dan placeholder tidak dikirim sebagai gantinya.
Tetapkan trusted_domains pada setiap kredensial environment_variable. Ini adalah
kontrol yang mencakup tempat secret dapat digunakan.
Membuat kredensial
Setiap permintaan pembuatan memerlukan type, ditambah kolom mana pun yang diperlukan jenis tersebut.
Saat memanggil REST secara langsung, semua nama kolom menggunakan snake_case. Mengirim kolom camelCase
akan menampilkan 400.
Token pemilik
Kredensial token pembawa hanya memerlukan token:
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"
}'
Respons hanya menampilkan metadata, bukan token:
{
"id": "github-production",
"type": "bearer_token",
"status": "active",
"create_time": "2026-07-15T10:00:00.000000000Z",
"update_time": "2026-07-15T10:00:00.000000000Z"
}
Secara default, proxy mengirim Authorization: Bearer <token>. Ganti
header_name dan prefix untuk menargetkan layanan yang mengharapkan sesuatu yang lain:
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": ""
}'
Konfigurasi ini menghasilkan header x-goog-api-key: key_xxxxxxxxxxxx.
Tabel berikut menunjukkan cara menggabungkan header_name dan prefix:
| Konfigurasi | Header yang disisipkan |
|---|---|
{"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
Kredensial OAuth2 memerlukan client_id, client_secret, refresh_token,
dan token_url. Kolom scopes bersifat opsional:
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"]
}'
Pembuatan kredensial OAuth2 melakukan pertukaran token langsung terhadap
token_url untuk mengonfirmasi bahwa konfigurasi berfungsi. Kredensial hanya disimpan
jika penyedia menampilkan respons token yang berhasil yang berisi
access_token. Respons JSON dan form-urlencoded diterima.
Artinya, Anda memerlukan token refresh yang valid dan belum habis masa berlakunya pada saat pembuatan. Jika penyedia menolak penukaran, error akan ditampilkan kepada Anda:
{
"error": {
"message": "OAuth token validation failed with HTTP 403: {\"error\":\"unauthorized_client\",\"error_description\":\"refresh_token is invalid\"}",
"code": "invalid_request"
}
}
Setelah disimpan, proxy akan memperbarui token akses saat masa berlakunya berakhir. Jika penyedia mengganti token refresh dan menampilkan yang baru selama refresh, token baru akan menggantikan token yang disimpan secara otomatis.
Variabel lingkungan
Kredensial environment_variable memerlukan value dan injection_location:
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"
}'
Kolom injection_location memberi tahu proxy di mana dalam permintaan keluar untuk
mengganti secret. Metode ini menerima header, query, atau body, baik sebagai
string tunggal atau sebagai array saat layanan memerlukan lebih dari satu:
"injection_location": ["header", "query"]
Penggantian hanya terjadi di lokasi yang Anda cantumkan. Permintaan yang membawa placeholder ke tempat lain ditolak, bukan dikirim.
Untuk mengikat kredensial ke nama variabel, lihat Menggunakan kredensial sebagai variabel lingkungan.
ID yang dihasilkan
Kolom id bersifat opsional. Jangan sertakan dan layanan akan membuat UUID:
{
"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"
}
Berikan ID Anda sendiri jika Anda menginginkan referensi yang stabil dan mudah dibaca untuk digunakan di seluruh interaksi. Karena ID muncul di jalur resource, sebaiknya gunakan alfanumerik huruf kecil dengan tanda hubung atau garis bawah.
Mencantumkan kredensial
Mencantumkan kredensial yang termasuk dalam project Anda. Gunakan parameter penomoran halaman untuk mengontrol ukuran batch respons.
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"
Respons hanya berisi metadata:
{
"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="
}
Teruskan next_page_token kembali sebagai page_token untuk mengambil halaman berikutnya. Kolom
dihilangkan jika tidak ada hasil lebih lanjut.
| Parameter | Jenis | Deskripsi |
|---|---|---|
page_size |
bilangan bulat | Jumlah maksimum kredensial per halaman. |
page_token |
string | Token dari next_page_token respons sebelumnya. |
Mendapatkan kredensial
Mengambil metadata untuk kredensial tertentu berdasarkan ID-nya.
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"
Responsnya akan terlihat seperti berikut:
{
"id": "github-production",
"type": "bearer_token",
"status": "active",
"create_time": "2026-07-15T10:00:00.000000000Z",
"update_time": "2026-08-01T14:30:00.000000000Z"
}
Meminta kredensial yang tidak ada akan menampilkan 404:
{
"error": {
"message": "Result not found.; GetCredential call failed",
"code": "not_found"
}
}
Merotasi kredensial
Mengganti secret tanpa menyentuh aturan daftar yang diizinkan, definisi alat, atau variabel lingkungan yang mereferensikannya. Rotasi diterapkan pada resolusi proxy berikutnya.
Permintaan harus menyertakan type, ditambah kolom yang ingin Anda ubah. Kolom yang Anda
hilangkan akan mempertahankan nilai saat ini.
Merotasi token pemilik:
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"
}'
Merotasi token refresh OAuth2:
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"
}'
Respons mencerminkan update_time baru:
{
"id": "jira-oauth",
"type": "oauth2",
"status": "active",
"create_time": "2026-07-15T10:05:00.000000000Z",
"update_time": "2026-08-01T14:30:00.000000000Z"
}
type kredensial ditetapkan saat pembuatan. Untuk mengubahnya, hapus kredensial
dan buat yang baru.
Menghapus kredensial
Hapus kredensial dan secret tersimpannya jika tidak diperlukan lagi.
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"
Penghapusan yang berhasil akan menampilkan objek kosong:
{}
Setiap aturan daftar yang diizinkan, alat, atau variabel lingkungan yang masih merujuk ke ID akan gagal diselesaikan, jadi perbarui terlebih dahulu.
Referensi kolom
Kolom yang umum untuk setiap kredensial:
| Kolom | Jenis | Wajib diisi | Deskripsi |
|---|---|---|---|
id |
string | Tidak | ID unik. Dibuat sebagai UUID jika tidak ada. |
type |
string | Ya | Salah satu dari bearer_token, oauth2, environment_variable. |
status |
string | Hanya baca | Status kredensial saat ini. |
create_time |
string | Hanya baca | Stempel waktu pembuatan RFC 3339. |
update_time |
string | Hanya baca | Stempel waktu RFC 3339 dari update terakhir. |
Kolom untuk bearer_token:
| Kolom | Jenis | Wajib diisi | Deskripsi |
|---|---|---|---|
token |
string | Ya | Hanya tulis. Nilai token. |
header_name |
string | Tidak | Header yang akan disisipkan. Default-nya adalah Authorization. |
prefix |
string | Tidak | Awalan nilai. Default-nya adalah Bearer. Setel ke "" jika tidak ada. |
Kolom untuk oauth2:
| Kolom | Jenis | Wajib diisi | Deskripsi |
|---|---|---|---|
client_id |
string | Ya | Client ID OAuth2. |
client_secret |
string | Ya | Hanya tulis. Rahasia klien OAuth2. |
refresh_token |
string | Ya | Hanya tulis. Token refresh yang digunakan untuk mendapatkan token akses. |
token_url |
string | Ya | Endpoint token penyedia. |
scopes |
array | Tidak | Cakupan OAuth yang akan diminta. |
Kolom untuk environment_variable:
| Kolom | Jenis | Wajib diisi | Deskripsi |
|---|---|---|---|
value |
string | Ya | Hanya tulis. Nilai rahasia. |
injection_location |
string atau array | Ya | Tempat untuk mengganti secret. Satu atau beberapa dari header, query, body. |
trusted_domains |
array | Tidak | Pola domain yang diizinkan untuk penggantian. |
Error
Error menampilkan objek JSON dengan message dan code:
{
"error": {
"message": "Credential 'github-production' already exists.; CreateCredential call failed",
"code": "aborted"
}
}
| Status HTTP | code |
Penyebab |
|---|---|---|
| 400 | invalid_request |
Kolom wajib diisi tidak ada, kolom tidak diketahui, type tidak didukung, atau validasi OAuth2 gagal. |
| 404 | not_found |
Tidak ada kredensial dengan ID tersebut. |
| 409 | aborted |
Kredensial dengan ID tersebut sudah ada. |
Kolom yang tidak diketahui akan ditolak, bukan diabaikan, dan error akan menyebutkan nama kolom:
{
"error": {
"message": "Unknown parameter 'headerName'. Did you mean 'header_name'?",
"code": "invalid_request"
}
}
Langkah berikutnya
- Lingkungan: Pelajari cara agen menjalankan kode dan mempertahankan file.
- Ringkasan Agen: Pelajari konsep inti agen terkelola.
- Membangun Agen Kustom: Tentukan agen Anda sendiri menggunakan
AGENTS.mddanSKILL.md.