# Rotating-Vorgang prüfen

`GET /account/api/v1/rotating/status`

## Autorisierung

`Authorization: Bearer YOUR_ARNPROXY_API_KEY`

`Accept: application/json`

Erforderliche Berechtigung: `proxy_management`

`Idempotency-Key` · 16–100 Buchstaben, Ziffern, _ oder -. Für denselben Vorgang speichern und wiederverwenden.

## Parameter

| Name | Typ | Erforderlich / Bedingt | Standardwert | Beschreibung |
|---|---|---|---|---|
| `Idempotency-Key` (header) | string | Erforderlich | — | 16–100 Buchstaben/Ziffern/_/-. Für Vorgang und Status denselben Wert behalten; nicht mit anderem Inhalt wiederverwenden. |

## Anfragebeispiel

### curl

```curl
printf 'Authorization: Bearer %s\n' "$ARNPROXY_API_KEY" |
  curl --silent --show-error --header @- \
    --header 'Accept: application/json' \
    --connect-timeout 10 --max-time 30 \
    --header 'Idempotency-Key: YOUR_SAVED_OPERATION_KEY' \
    'https://www.arnproxy.com/account/api/v1/rotating/status'
```

### python

```python
import os, requests

headers = {"Authorization": "Bearer " + os.environ["ARNPROXY_API_KEY"]}
headers["Idempotency-Key"] = "YOUR_SAVED_OPERATION_KEY"
response = requests.get(
    "https://www.arnproxy.com/account/api/v1/rotating/status",
    headers=headers,
    timeout=(10, 30), allow_redirects=False
)
print(response.status_code, response.text)
# No automatic write retry.
```

### javascript

```javascript
const headers = { Authorization: `Bearer ${process.env.ARNPROXY_API_KEY}` };
headers['Idempotency-Key'] = 'YOUR_SAVED_OPERATION_KEY';
const response = await fetch("https://www.arnproxy.com/account/api/v1/rotating/status", {
  method: 'GET', headers, redirect: 'error',
  signal: AbortSignal.timeout(30000)
});
console.log(response.status, await response.text());
// A write timeout is ambiguous; query its saved operation.
```

### php

```php
<?php
$headers = ['Accept: application/json',
    'Authorization: Bearer '.getenv('ARNPROXY_API_KEY')];
$headers[] = 'Idempotency-Key: YOUR_SAVED_OPERATION_KEY';
$ch = curl_init('https://www.arnproxy.com/account/api/v1/rotating/status');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 30,
]);
$result = curl_exec($ch);
if ($result === false) {
    // Do not repeat a write; use the original operation key.
    throw new RuntimeException('Transport result unknown');
}
echo curl_getinfo($ch, CURLINFO_HTTP_CODE).PHP_EOL.$result;
curl_close($ch);
```

### go

```go
package main

import (
  "fmt"
  "io"
  "net/http"
  "os"
  "time"
)

func main() {
  client := &http.Client{Timeout: 30*time.Second,
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
      return http.ErrUseLastResponse
    }}
  var body io.Reader
  req, err := http.NewRequest("GET", "https://www.arnproxy.com/account/api/v1/rotating/status", body)
  if err != nil { panic(err) }
  req.Header.Set("Authorization", "Bearer "+os.Getenv("ARNPROXY_API_KEY"))
  req.Header.Set("Idempotency-Key", "YOUR_SAVED_OPERATION_KEY")
  res, err := client.Do(req); if err != nil { panic(err) }
  defer res.Body.Close()
  data, err := io.ReadAll(res.Body); if err != nil { panic(err) }
  fmt.Println(res.StatusCode, string(data))
}
```

### csharp

```csharp
using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

using var handler = new HttpClientHandler { AllowAutoRedirect = false };
using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };
using var request = new HttpRequestMessage(HttpMethod.Get,
    "https://www.arnproxy.com/account/api/v1/rotating/status");
request.Headers.Authorization = new AuthenticationHeaderValue(
    "Bearer", Environment.GetEnvironmentVariable("ARNPROXY_API_KEY"));
request.Headers.Add("Idempotency-Key", "YOUR_SAVED_OPERATION_KEY");
using var response = await client.SendAsync(request);
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(await response.Content.ReadAsStringAsync());
// Never automatically retry an ambiguous write.
```

### java

```java
import java.net.URI;
import java.net.http.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;

// Inside your application method:
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder(URI.create("https://www.arnproxy.com/account/api/v1/rotating/status"))
    .header("Authorization", "Bearer " + System.getenv("ARNPROXY_API_KEY"))
    .header("Accept", "application/json")
    .header("Idempotency-Key", System.getenv("ARNPROXY_OPERATION_KEY"))
    .GET()
    .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
```

## Antworten · HTTP 200, 202

```json
{
  "ok": true,
  "data": {
    "state": "completed",
    "proxy_id": 12345,
    "proxy_ids": [
      12345
    ],
    "rotation_seconds": 120,
    "authorization_scope": "package",
    "may_affect_other_proxies": false,
    "reason_code": null,
    "replayed": true,
    "provider_write_steps_sent": 1,
    "automatic_retry_started": false,
    "primary_credentials_changed": false,
    "authorized_ips_changed": false,
    "balance_changed": false,
    "proxy_expiry_changed": false
  },
  "meta": {
    "request_id": "000000000000000000000001",
    "phase": "public_v1",
    "source": "arnproxy_records"
  }
}
```

| Name | Typ | Bedingt | Beschreibung |
|---|---|---|---|
| `ok` | boolean | — | Erfolgskennzeichen; bei false error.code prüfen. |
| `data` | object | — | Vorgangsspezifisches Ergebnis; Beispiele sind synthetisch und dienen der Veranschaulichung. |
| `data.state` | string | — | Datensatz-/Vorgangsstatus. accepted bedeutet nicht geliefert, completed keinen Verbindungstest. |
| `data.proxy_id` | integer | — | Zugehörige ARNPROXY-Datensatz-ID statt interner Anbieter-ID verwenden. |
| `data.proxy_ids` | array | — | Proxy-IDs im für dieses Konto sichtbaren Umfang. |
| `data.proxy_ids[]` | integer | — | Proxy-IDs im für dieses Konto sichtbaren Umfang. |
| `data.rotation_seconds` | integer | — | Gespeicherte/gewünschte Rotation in Sekunden; Rotating-Pakete und Residential-Listen haben andere Regeln. |
| `data.authorization_scope` | string | — | Autorisierungsumfang; Bestell-/Paketaktionen können andere Zuordnungen beeinflussen. |
| `data.may_affect_other_proxies` | boolean | — | Andere Zuordnungen können durch den paket-/bestellweiten Umfang betroffen sein. |
| `data.reason_code` | string|null | — | Fester Grundcode oder null, niemals ungefilterter Anbieterfehlertext. |
| `data.replayed` | boolean | — | Gespeichertes Ergebnis desselben Vorgangs, kein Beweis für neue Abbuchung/Aktion. |
| `data.provider_write_steps_sent` | integer | — | Vorgangsspezifischer Wert für provider write steps sent. Rückgabetyp beibehalten und Verhaltenshinweise beachten. |
| `data.automatic_retry_started` | boolean | — | Ob diese Abfrage einen automatischen Neuversuch startete; im Beispiel false. |
| `data.primary_credentials_changed` | boolean | — | Vorgangsspezifischer Wert für primary credentials changed. Rückgabetyp beibehalten und Verhaltenshinweise beachten. |
| `data.authorized_ips_changed` | boolean | — | Vorgangsspezifischer Wert für authorized ips changed. Rückgabetyp beibehalten und Verhaltenshinweise beachten. |
| `data.balance_changed` | boolean | — | Gemeldete Vorgangswirkung; automatische Verlängerung kann später getrennte Abbuchungen verursachen. |
| `data.proxy_expiry_changed` | boolean | — | Gemeldete Vorgangswirkung; automatische Verlängerung kann später getrennte Abbuchungen verursachen. |
| `meta` | object | — | Metadaten zu Anfragezuordnung und Datenquelle. |
| `meta.request_id` | string | — | Kennung dieser HTTP-Anfrage, kein Vorgangsschlüssel oder Bestell-ID. |
| `meta.phase` | string | — | Vorgangsspezifischer Wert für phase. Rückgabetyp beibehalten und Verhaltenshinweise beachten. |
| `meta.source` | string | — | Datenquelle; lokale Datensätze und Live-Anbieterabfragen sind unterschiedliche Nachweise. |

## Verhalten & wichtige Hinweise

- Zuerst rotating_options mit eigener aktiver Proxy-ID aufrufen. Änderung betrifft das ganze Paket und eventuell andere Zuordnungen. terms=true und accept_package_scope=true erforderlich. 0 bedeutet jede Anfrage, Limit 0–86400 Sekunden. Zugangsdaten, autorisierte IPs, Guthaben und Ablauf bleiben gleich.

Authentifizierung und Validierung können eine Anfrage vor der Ausführung ablehnen. Beachten Sie die Fehlerreferenz und bewahren Sie request_id für den Support auf. Senden Sie niemals Schlüssel oder Passwörter.

[Fehler & Limits](https://docs.arnproxy.com/de/api-v1/errors)
