curl --request POST \
--url https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"proofs": [
{
"audience": "https://connect.kombify.io",
"generation": 2,
"proof": "<string>"
}
]
}
'import requests
url = "https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach"
payload = { "proofs": [
{
"audience": "https://connect.kombify.io",
"generation": 2,
"proof": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
proofs: [{audience: 'https://connect.kombify.io', generation: 2, proof: '<string>'}]
})
};
fetch('https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach', 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.kombify.io/v1/techstack/api/v1/workers/{id}/reach",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'proofs' => [
[
'audience' => 'https://connect.kombify.io',
'generation' => 2,
'proof' => '<string>'
]
]
]),
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.kombify.io/v1/techstack/api/v1/workers/{id}/reach"
payload := strings.NewReader("{\n \"proofs\": [\n {\n \"audience\": \"https://connect.kombify.io\",\n \"generation\": 2,\n \"proof\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"proofs\": [\n {\n \"audience\": \"https://connect.kombify.io\",\n \"generation\": 2,\n \"proof\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"proofs\": [\n {\n \"audience\": \"https://connect.kombify.io\",\n \"generation\": 2,\n \"proof\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": "<unknown>",
"meta": {
"total": 123,
"page": 123,
"per_page": 123,
"managed_runtime_inventory_complete": true,
"worker_inventory_sha256": "<string>",
"managed_runtime_active_lease_ids": [
"<string>"
],
"managed_runtime_inactive_lease_ids": [
"<string>"
],
"managed_runtime_lease_generation_digests": [
{
"lease_id": "<string>",
"resource_generation_digest": "<string>"
}
],
"managed_runtime_duplicate_lease_ids": [
"<string>"
],
"managed_runtime_attachment_conflict_lease_ids": [
"<string>"
]
}
}Exchange kombify Guard reach state with the control plane
kombify Guard reach. A Guard with a bound host key (access token plus proof) reports its kombify.me relay connection and hands over the host proof the control plane requested for its Connect registration; the answer is the reach document: the overall state, the relay target once kombify.me holds the binding for the current generation, and at most one outstanding proof request with the exact claims to sign. The document carries no credential. Legacy bearer Guards receive needs_host_key; deployments without a Cloud connection receive disabled. A failure downstream is recorded and reported on the server read model, never returned as an error to the Guard.
curl --request POST \
--url https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"proofs": [
{
"audience": "https://connect.kombify.io",
"generation": 2,
"proof": "<string>"
}
]
}
'import requests
url = "https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach"
payload = { "proofs": [
{
"audience": "https://connect.kombify.io",
"generation": 2,
"proof": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
proofs: [{audience: 'https://connect.kombify.io', generation: 2, proof: '<string>'}]
})
};
fetch('https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach', 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.kombify.io/v1/techstack/api/v1/workers/{id}/reach",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'proofs' => [
[
'audience' => 'https://connect.kombify.io',
'generation' => 2,
'proof' => '<string>'
]
]
]),
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.kombify.io/v1/techstack/api/v1/workers/{id}/reach"
payload := strings.NewReader("{\n \"proofs\": [\n {\n \"audience\": \"https://connect.kombify.io\",\n \"generation\": 2,\n \"proof\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"proofs\": [\n {\n \"audience\": \"https://connect.kombify.io\",\n \"generation\": 2,\n \"proof\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombify.io/v1/techstack/api/v1/workers/{id}/reach")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"proofs\": [\n {\n \"audience\": \"https://connect.kombify.io\",\n \"generation\": 2,\n \"proof\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": "<unknown>",
"meta": {
"total": 123,
"page": 123,
"per_page": 123,
"managed_runtime_inventory_complete": true,
"worker_inventory_sha256": "<string>",
"managed_runtime_active_lease_ids": [
"<string>"
],
"managed_runtime_inactive_lease_ids": [
"<string>"
],
"managed_runtime_lease_generation_digests": [
{
"lease_id": "<string>",
"resource_generation_digest": "<string>"
}
],
"managed_runtime_duplicate_lease_ids": [
"<string>"
],
"managed_runtime_attachment_conflict_lease_ids": [
"<string>"
]
}
}授权
Runtime-agent credential bound to the exact tenant, placement, server, and worker identity. Signed, opaque, and explicit legacy compatibility tokens are validated fail-closed by the worker runtime.
路径参数
Resource ID
