# Proxy dalam pesanan

`GET /account/api/v1/orders/{id}/proxies`

## Otorisasi

`Authorization: Bearer YOUR_ARNPROXY_API_KEY`

`Accept: application/json`

Izin yang diperlukan: `read + optional credentials`

## Parameter

| Nama | Tipe | Wajib / Bersyarat | Nilai bawaan | Keterangan |
|---|---|---|---|---|
| `id` (path) | integer | Wajib | — | ID catatan milik sendiri untuk operasi ini; 1–2147483647. Bukan nomor pesanan tampilan atau ID penyedia. |
| `after_id` (query) | integer | Opsional | `0` | Gunakan next_after_id dari respons sebelumnya; kursor ID menaik, dimulai dari 0. |
| `limit` (query) | integer | Opsional | `25` | 1–100; bawaan 25. |
| `include_credentials` (query) | string | Opsional | `"0"` | "0" atau "1"; bawaan "0". "1" memerlukan izin credentials dan layanan aktif. |

## Contoh permintaan

### 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 \
    'https://www.arnproxy.com/account/api/v1/orders/YOUR_ORDER_ID/proxies'
```

### python

```python
import os, requests

headers = {"Authorization": "Bearer " + os.environ["ARNPROXY_API_KEY"]}
response = requests.get(
    "https://www.arnproxy.com/account/api/v1/orders/YOUR_ORDER_ID/proxies",
    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}` };
const response = await fetch("https://www.arnproxy.com/account/api/v1/orders/YOUR_ORDER_ID/proxies", {
  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')];
$ch = curl_init('https://www.arnproxy.com/account/api/v1/orders/YOUR_ORDER_ID/proxies');
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/orders/YOUR_ORDER_ID/proxies", body)
  if err != nil { panic(err) }
  req.Header.Set("Authorization", "Bearer "+os.Getenv("ARNPROXY_API_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/orders/YOUR_ORDER_ID/proxies");
request.Headers.Authorization = new AuthenticationHeaderValue(
    "Bearer", Environment.GetEnvironmentVariable("ARNPROXY_API_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/orders/YOUR_ORDER_ID/proxies"))
    .header("Authorization", "Bearer " + System.getenv("ARNPROXY_API_KEY"))
    .header("Accept", "application/json")
    .GET()
    .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
```

## Respons · HTTP 200

```json
{
  "ok": true,
  "data": {
    "items": [
      {
        "id": 12345,
        "endpoint": "192.0.2.10:8080",
        "last_service_date": "2030-02-01 00:00:00",
        "timezone": "Europe/Istanbul"
      }
    ],
    "next_after_id": null,
    "order_id": 10001,
    "source": "arnproxy_records"
  },
  "meta": {
    "request_id": "000000000000000000000001",
    "phase": "public_v1",
    "source": "arnproxy_records"
  }
}
```

| Nama | Tipe | Bersyarat | Keterangan |
|---|---|---|---|
| `ok` | boolean | — | Penanda berhasil; jika false, periksa error.code. |
| `data` | object | — | Hasil khusus operasi; contoh bersifat ilustratif dan sintetis. |
| `data.items` | array | — | Catatan halaman ini atau string koneksi terformat; daftar kosong dapat valid. |
| `data.items[]` | object | — | Catatan halaman ini atau string koneksi terformat; daftar kosong dapat valid. |
| `data.items[].id` | integer | — | ID catatan ARNPROXY terkait; gunakan alih-alih ID internal penyedia. |
| `data.items[].endpoint` | string | — | IP/host proxy dan port opsional, tanpa kredensial; format tak terverifikasi dapat bernilai null. |
| `data.items[].last_service_date` | string | — | Hari layanan terakhir: saat ini, sebelumnya, atau proyeksi harga. Proyeksi tidak memperpanjang. |
| `data.items[].timezone` | string | — | Zona waktu kolom tanggal terkait; null berarti belum terverifikasi. |
| `data.next_after_id` | integer|null | — | Kursor halaman berikutnya; null berarti tidak ada halaman lanjutan. |
| `data.order_id` | integer | — | ID catatan ARNPROXY terkait; gunakan alih-alih ID internal penyedia. |
| `data.source` | string | — | Sumber data; catatan lokal dan kueri penyedia langsung merupakan bukti berbeda. |
| `meta` | object | — | Metadata korelasi permintaan dan sumber data. |
| `meta.request_id` | string | — | ID korelasi permintaan HTTP ini, bukan kunci operasi atau ID pesanan. |
| `meta.phase` | string | — | Nilai khusus operasi untuk phase. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
| `meta.source` | string | — | Sumber data; catatan lokal dan kueri penyedia langsung merupakan bukti berbeda. |
| `data.items[].credentials` | object | Bersyarat | Hanya dengan include_credentials=1 dan izin credentials. |
| `data.items[].credentials.username` | string | Bersyarat | Nama pengguna pengiriman utama. |
| `data.items[].credentials.password` | string | Bersyarat | Kata sandi pengiriman utama; rahasiakan. |

## Perilaku & catatan penting

- id ialah ID catatan pesanan ARNPROXY, bukan nomor tampilan. Kueri pengiriman tidak memulai pemeriksaan penyedia langsung atau pengiriman ulang.
- Keluaran berkredensial memerlukan izin credentials. Jangan catat atau kirim string koneksi, kata sandi, atau header Authorization ke dukungan.

Autentikasi dan validasi dapat menolak permintaan sebelum dijalankan. Lihat referensi kesalahan dan simpan request_id untuk dukungan. Jangan kirim kunci atau kata sandi.

[Kesalahan & batas](https://docs.arnproxy.com/id/api-v1/errors)
