curl --request PUT \
--url https://api.example.com/v0/connectors/{connector_id}/credential \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"idempotency_key": "<string>",
"secret": {},
"expires_at": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.example.com/v0/connectors/{connector_id}/credential"
payload = {
"idempotency_key": "<string>",
"secret": {},
"expires_at": "2023-11-07T05:31:56Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({idempotency_key: '<string>', secret: {}, expires_at: '2023-11-07T05:31:56Z'})
};
fetch('https://api.example.com/v0/connectors/{connector_id}/credential', 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://api.example.com/v0/connectors/{connector_id}/credential",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'idempotency_key' => '<string>',
'secret' => [
],
'expires_at' => '2023-11-07T05:31:56Z'
]),
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://api.example.com/v0/connectors/{connector_id}/credential"
payload := strings.NewReader("{\n \"idempotency_key\": \"<string>\",\n \"secret\": {},\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.example.com/v0/connectors/{connector_id}/credential")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"idempotency_key\": \"<string>\",\n \"secret\": {},\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v0/connectors/{connector_id}/credential")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idempotency_key\": \"<string>\",\n \"secret\": {},\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"connector_id": "<string>",
"corpus_id": "<string>",
"source_namespace": "<string>",
"kind": "<string>",
"config": {},
"schedule": {
"interval_seconds": 2
},
"health_policy": {
"silent_after_seconds": 2,
"credential_warning_seconds": 1
},
"enabled": true,
"created_at": "2023-11-07T05:31:56Z",
"health": {
"state": "active",
"evaluated_at": "2023-11-07T05:31:56Z",
"last_success_at": "2023-11-07T05:31:56Z",
"last_item_at": "2023-11-07T05:31:56Z",
"last_error": {
"code": "<string>",
"at": "2023-11-07T05:31:56Z"
},
"usage": {
"day": "<string>",
"items_read": 1,
"previous_day_items_read": 1
},
"diagnostics": {},
"push": {
"state": "active",
"error": {
"class": "access",
"code": "<string>",
"at": "2023-11-07T05:31:56Z"
},
"last_delivery_at": "2023-11-07T05:31:56Z",
"poll_interval_seconds": 2
}
},
"disabled_at": "2023-11-07T05:31:56Z",
"credential": {
"version": 2,
"deposited_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z"
},
"webhook_url": "<string>"
}{
"code": "<string>",
"message": "<string>",
"retryable": true,
"field": "<string>",
"resync_url": "<string>"
}Replace connector credential
Deposit a new credential version to rotate the current one. The secret is encrypted at rest and never returned. Replaying the same key and request is idempotent; a different request under the same key is 409 idempotency_conflict. A disabled instance is 409 connector_disabled. Commits connector.credential_replaced, and connector.health_changed when the evaluated health changes. A deployment without a credential key refuses every rotation with 503 credentials_unavailable (retryable false) before storing or digesting it.
curl --request PUT \
--url https://api.example.com/v0/connectors/{connector_id}/credential \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"idempotency_key": "<string>",
"secret": {},
"expires_at": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.example.com/v0/connectors/{connector_id}/credential"
payload = {
"idempotency_key": "<string>",
"secret": {},
"expires_at": "2023-11-07T05:31:56Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({idempotency_key: '<string>', secret: {}, expires_at: '2023-11-07T05:31:56Z'})
};
fetch('https://api.example.com/v0/connectors/{connector_id}/credential', 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://api.example.com/v0/connectors/{connector_id}/credential",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'idempotency_key' => '<string>',
'secret' => [
],
'expires_at' => '2023-11-07T05:31:56Z'
]),
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://api.example.com/v0/connectors/{connector_id}/credential"
payload := strings.NewReader("{\n \"idempotency_key\": \"<string>\",\n \"secret\": {},\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.example.com/v0/connectors/{connector_id}/credential")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"idempotency_key\": \"<string>\",\n \"secret\": {},\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v0/connectors/{connector_id}/credential")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idempotency_key\": \"<string>\",\n \"secret\": {},\n \"expires_at\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"connector_id": "<string>",
"corpus_id": "<string>",
"source_namespace": "<string>",
"kind": "<string>",
"config": {},
"schedule": {
"interval_seconds": 2
},
"health_policy": {
"silent_after_seconds": 2,
"credential_warning_seconds": 1
},
"enabled": true,
"created_at": "2023-11-07T05:31:56Z",
"health": {
"state": "active",
"evaluated_at": "2023-11-07T05:31:56Z",
"last_success_at": "2023-11-07T05:31:56Z",
"last_item_at": "2023-11-07T05:31:56Z",
"last_error": {
"code": "<string>",
"at": "2023-11-07T05:31:56Z"
},
"usage": {
"day": "<string>",
"items_read": 1,
"previous_day_items_read": 1
},
"diagnostics": {},
"push": {
"state": "active",
"error": {
"class": "access",
"code": "<string>",
"at": "2023-11-07T05:31:56Z"
},
"last_delivery_at": "2023-11-07T05:31:56Z",
"poll_interval_seconds": 2
}
},
"disabled_at": "2023-11-07T05:31:56Z",
"credential": {
"version": 2,
"deposited_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z"
},
"webhook_url": "<string>"
}{
"code": "<string>",
"message": "<string>",
"retryable": true,
"field": "<string>",
"resync_url": "<string>"
}Authorizations
API key, not necessarily a JWT. Server derives Organization, permitted actions and Corpus scope; every resource access is authorized.
Path Parameters
1Body
Response
Successful response
111Connector kind, provided by the engine or by a pinned connector plugin; listConnectorKinds lists the kinds this deployment accepts. Built-in kinds are fixture (a deterministic test connector available only when the deployment enables it). First-party connector plugins provide rss (RSS 2.0, RSS 1.0, Atom and JSON Feed documents; config url, optional honor_ttl; optional credential username+password or token), x_list (an X list) and m365_mail (Microsoft 365 mailboxes). Another kind is refused with 422 unsupported_connector_kind.
^[a-z][a-z0-9_]{0,31}$Show child attributes
Show child attributes
Show child attributes
Show child attributes
Last committed Connector Health, evaluated at each acquisition run, credential replacement and disable; evaluated_at shows its age. Precedence disabled, access_error, credential_expiring, silent, active. access_error means the source refused access (distinct from silent, which means no new item within the threshold), including a push channel refused access while polling carries the collection. Other failures appear only as last_error.
Show child attributes
Show child attributes
Metadata of the current Deposited Credential; the secret itself is never returned.
Show child attributes
Show child attributes
Public address of the instance's webhook route, present when its kind declares the push mode and the deployment sets public_url. The kind's plugin registers it with the source.