Effectuer une rotation de l’API key pour l’utilisateur de service
curl --request POST \
--url https://api.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"new_key_expires_at": 123,
"revoke_current": true
}
'import requests
url = "https://api.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate"
payload = {
"new_key_expires_at": 123,
"revoke_current": True
}
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({new_key_expires_at: 123, revoke_current: true})
};
fetch('https://api.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate', 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.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate",
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([
'new_key_expires_at' => 123,
'revoke_current' => true
]),
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.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate"
payload := strings.NewReader("{\n \"new_key_expires_at\": 123,\n \"revoke_current\": true\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.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"new_key_expires_at\": 123,\n \"revoke_current\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate")
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 \"new_key_expires_at\": 123,\n \"revoke_current\": true\n}"
response = http.request(request)
puts response.read_body{
"api_key_id": "<string>",
"api_key_name": "<string>",
"token": "<string>"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}API keys d’utilisateurs de service (Entreprise) [Bêta]
Effectuer une rotation de l’API key pour l’utilisateur de service
Effectuer la rotation d’une clé d’API pour un utilisateur de service.
Crée une nouvelle clé. Par défaut, révoque l’ancienne clé ; définissez revoke_current=false pour une rotation progressive où les deux clés restent temporairement actives. Renvoie 404 si la clé est introuvable, 400 si la clé n’est pas active, et 409 tant que les clés statiques d’utilisateur de service sont désactivées pour l’Enterprise, sauf si l’utilisateur de service prend en charge SCIM ou un Outpost actif.
POST
/
v3beta1
/
enterprise
/
service-users
/
{service_user_id}
/
api-keys
/
{api_key_id}
/
rotate
Effectuer une rotation de l’API key pour l’utilisateur de service
curl --request POST \
--url https://api.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"new_key_expires_at": 123,
"revoke_current": true
}
'import requests
url = "https://api.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate"
payload = {
"new_key_expires_at": 123,
"revoke_current": True
}
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({new_key_expires_at: 123, revoke_current: true})
};
fetch('https://api.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate', 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.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate",
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([
'new_key_expires_at' => 123,
'revoke_current' => true
]),
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.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate"
payload := strings.NewReader("{\n \"new_key_expires_at\": 123,\n \"revoke_current\": true\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.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"new_key_expires_at\": 123,\n \"revoke_current\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3beta1/enterprise/service-users/{service_user_id}/api-keys/{api_key_id}/rotate")
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 \"new_key_expires_at\": 123,\n \"revoke_current\": true\n}"
response = http.request(request)
puts response.read_body{
"api_key_id": "<string>",
"api_key_name": "<string>",
"token": "<string>"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}Autorisations
Nécessite un utilisateur de service ou un jeton d’accès personnel disposant de l’autorisationManageAccountServiceUsers au niveau de l’entreprise.Autorisations
Identifiant de compte de service (préfixe : cog_)
Paramètres de chemin
ID de l’utilisateur de service (préfixe : service-user-)
Exemple:
"service-user-abc123def456"
Corps
application/json

