Nonaktifkan perpanjangan otomatis
POST
/account/api/v1/auto-renewal/disableKonfirmasikan operasi dengan sengaja
Operasi ini dapat mengubah catatan, saldo, atau pengaturan layanan. Baca cakupan dan catatan terlebih dahulu. Jika hasil tidak pasti, periksa operasi yang sama, jangan memulai yang baru.
Otorisasi
| Authorization | Bearer YOUR_ARNPROXY_API_KEY |
|---|---|
| Izin yang diperlukan | renewals |
| Accept | application/json |
| Content-Type | application/json |
| Idempotency-Key | 16–100 huruf, angka, _ atau -. Simpan dan gunakan nilai yang sama untuk operasi yang sama. |
Parameter
| Nama | Tipe | Keterangan |
|---|---|---|
Idempotency-Key | string | 16–100 huruf/angka/_/-. Pertahankan nilai untuk operasi/status; jangan pakai lagi dengan isi berbeda. |
settings | object[] | 1–1000 pengaturan perpanjangan saldo sendiri dengan ID unik. Pengaturan kartu/PayPal tidak dapat dikelola. |
settings[].id | integer | ID pengaturan sendiri dari auto_renewal_settings. |
settings[].revision | string | revision 64 karakter dari baris pengaturan yang sama. |
terms | boolean | Persetujuan harus berupa boolean JSON true, bukan string "true". |
Isi permintaan
Ganti YOUR_/FROM_ dengan nilai katalog, kutipan harga, atau cakupan terkait. Persetujuan pada contoh tetap false; setujui operasi nyata secara sengaja.
{
"settings": [
{
"id": "YOUR_SETTING_ID",
"revision": "FROM_SETTINGS_REVISION"
}
],
"terms": false
}Contoh permintaan
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' \
--request POST --header 'Content-Type: application/json' \
--data-binary @request.json \
'https://www.arnproxy.com/account/api/v1/auto-renewal/disable'Contoh tidak dijalankan di halaman ini. Simpan kunci API dalam variabel lingkungan server, bukan URL atau kode browser. Siapkan request.json untuk contoh POST.
{"curl":"printf \u0027Authorization: Bearer %s\\n\u0027 \u0022$ARNPROXY_API_KEY\u0022 |\n curl --silent --show-error --header @- \\\n --header \u0027Accept: application\/json\u0027 \\\n --connect-timeout 10 --max-time 30 \\\n --header \u0027Idempotency-Key: YOUR_SAVED_OPERATION_KEY\u0027 \\\n --request POST --header \u0027Content-Type: application\/json\u0027 \\\n --data-binary @request.json \\\n \u0027https:\/\/www.arnproxy.com\/account\/api\/v1\/auto-renewal\/disable\u0027","python":"import os, requests\n\nheaders = {\u0022Authorization\u0022: \u0022Bearer \u0022 + os.environ[\u0022ARNPROXY_API_KEY\u0022]}\nheaders[\u0022Idempotency-Key\u0022] = \u0022YOUR_SAVED_OPERATION_KEY\u0022\nimport json\nwith open(\u0022request.json\u0022, encoding=\u0022utf-8\u0022) as f:\n payload = json.load(f)\nresponse = requests.post(\n \u0022https:\/\/www.arnproxy.com\/account\/api\/v1\/auto-renewal\/disable\u0022,\n headers=headers, json=payload,\n timeout=(10, 30), allow_redirects=False\n)\nprint(response.status_code, response.text)\n# No automatic write retry.","javascript":"const headers = { Authorization: `Bearer ${process.env.ARNPROXY_API_KEY}` };\nheaders[\u0027Idempotency-Key\u0027] = \u0027YOUR_SAVED_OPERATION_KEY\u0027;\nconst { readFile } = await import(\u0027node:fs\/promises\u0027);\nheaders[\u0027Content-Type\u0027] = \u0027application\/json\u0027;\nconst body = await readFile(\u0027request.json\u0027, \u0027utf8\u0027);\nconst response = await fetch(\u0022https:\/\/www.arnproxy.com\/account\/api\/v1\/auto-renewal\/disable\u0022, {\n method: \u0027POST\u0027, headers, redirect: \u0027error\u0027,\n signal: AbortSignal.timeout(30000), body\n});\nconsole.log(response.status, await response.text());\n\/\/ A write timeout is ambiguous; query its saved operation.","php":"\u003C?php\n$headers = [\u0027Accept: application\/json\u0027,\n \u0027Authorization: Bearer \u0027.getenv(\u0027ARNPROXY_API_KEY\u0027)];\n$headers[] = \u0027Idempotency-Key: YOUR_SAVED_OPERATION_KEY\u0027;\n$headers[] = \u0027Content-Type: application\/json\u0027;\n$ch = curl_init(\u0027https:\/\/www.arnproxy.com\/account\/api\/v1\/auto-renewal\/disable\u0027);\ncurl_setopt_array($ch, [\n CURLOPT_RETURNTRANSFER =\u003E true,\n CURLOPT_HTTPHEADER =\u003E $headers,\n CURLOPT_FOLLOWLOCATION =\u003E false,\n CURLOPT_SSL_VERIFYPEER =\u003E true, CURLOPT_SSL_VERIFYHOST =\u003E 2,\n CURLOPT_CONNECTTIMEOUT =\u003E 10, CURLOPT_TIMEOUT =\u003E 30,\n CURLOPT_POST =\u003E true,\n CURLOPT_POSTFIELDS =\u003E file_get_contents(\u0027request.json\u0027),\n]);\n$result = curl_exec($ch);\nif ($result === false) {\n \/\/ Do not repeat a write; use the original operation key.\n throw new RuntimeException(\u0027Transport result unknown\u0027);\n}\necho curl_getinfo($ch, CURLINFO_HTTP_CODE).PHP_EOL.$result;\ncurl_close($ch);","go":"package main\n\nimport (\n \u0022fmt\u0022\n \u0022io\u0022\n \u0022net\/http\u0022\n \u0022os\u0022\n \u0022time\u0022\n)\n\nfunc main() {\n client := \u0026http.Client{Timeout: 30*time.Second,\n CheckRedirect: func(req *http.Request, via []*http.Request) error {\n return http.ErrUseLastResponse\n }}\n var body io.Reader\n file, err := os.Open(\u0022request.json\u0022); if err != nil { panic(err) }\n defer file.Close(); body = file\n req, err := http.NewRequest(\u0022POST\u0022, \u0022https:\/\/www.arnproxy.com\/account\/api\/v1\/auto-renewal\/disable\u0022, body)\n if err != nil { panic(err) }\n req.Header.Set(\u0022Authorization\u0022, \u0022Bearer \u0022+os.Getenv(\u0022ARNPROXY_API_KEY\u0022))\n req.Header.Set(\u0022Idempotency-Key\u0022, \u0022YOUR_SAVED_OPERATION_KEY\u0022)\n req.Header.Set(\u0022Content-Type\u0022, \u0022application\/json\u0022)\n res, err := client.Do(req); if err != nil { panic(err) }\n defer res.Body.Close()\n data, err := io.ReadAll(res.Body); if err != nil { panic(err) }\n fmt.Println(res.StatusCode, string(data))\n}","csharp":"using System;\nusing System.IO;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\nusing var handler = new HttpClientHandler { AllowAutoRedirect = false };\nusing var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };\nusing var request = new HttpRequestMessage(HttpMethod.Post,\n \u0022https:\/\/www.arnproxy.com\/account\/api\/v1\/auto-renewal\/disable\u0022);\nrequest.Headers.Authorization = new AuthenticationHeaderValue(\n \u0022Bearer\u0022, Environment.GetEnvironmentVariable(\u0022ARNPROXY_API_KEY\u0022));\nrequest.Headers.Add(\u0022Idempotency-Key\u0022, \u0022YOUR_SAVED_OPERATION_KEY\u0022);\nrequest.Content = new StringContent(\n await File.ReadAllTextAsync(\u0022request.json\u0022), Encoding.UTF8, \u0022application\/json\u0022);\nusing var response = await client.SendAsync(request);\nConsole.WriteLine((int)response.StatusCode);\nConsole.WriteLine(await response.Content.ReadAsStringAsync());\n\/\/ Never automatically retry an ambiguous write.","java":"import java.net.URI;\nimport java.net.http.*;\nimport java.nio.charset.StandardCharsets;\nimport java.nio.file.*;\n\n\/\/ Inside your application method:\nvar client = HttpClient.newHttpClient();\nvar request = HttpRequest.newBuilder(URI.create(\u0022https:\/\/www.arnproxy.com\/account\/api\/v1\/auto-renewal\/disable\u0022))\n .header(\u0022Authorization\u0022, \u0022Bearer \u0022 + System.getenv(\u0022ARNPROXY_API_KEY\u0022))\n .header(\u0022Accept\u0022, \u0022application\/json\u0022)\n .header(\u0022Idempotency-Key\u0022, System.getenv(\u0022ARNPROXY_OPERATION_KEY\u0022))\n .header(\u0022Content-Type\u0022, \u0022application\/json\u0022)\n .POST(HttpRequest.BodyPublishers.ofString(\n Files.readString(Path.of(\u0022request.json\u0022), StandardCharsets.UTF_8)))\n .build();\nvar response = client.send(request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.statusCode());"}Respons
200Respons berhasil
{
"ok": true,
"data": {
"state": "completed",
"action": "disable",
"settings": [
{
"id": 20,
"proxy_id": 12345,
"order_number": null,
"active": false,
"payment_method": "balance",
"time_id": 101,
"currency": "TRY",
"next_renewal_date": "2030-02-01",
"next_attempt_at": null,
"last_status": "disabled",
"revision": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"managed_via_website": false,
"timezone": "Europe/Istanbul"
}
],
"payment_method": "balance",
"configuration_only": true,
"immediate_charge": false,
"balance_changed": false,
"proxy_expiry_changed": false,
"provider_requests": 0,
"payment_requests": 0,
"consent_version": "balance_current_pricing_v1",
"api_key_revocation_stops_existing_renewals": false,
"source": "existing_website_auto_renewal",
"completed_at": "2030-01-01T12:00:00+00:00",
"replayed": false
},
"meta": {
"request_id": "000000000000000000000001",
"phase": "public_v1",
"source": "arnproxy_records"
}
}Kolom dan tipe respons
| Nama | Tipe | Keterangan |
|---|---|---|
ok | boolean | Penanda berhasil; jika false, periksa error.code. |
data | object | Hasil khusus operasi; contoh bersifat ilustratif dan sintetis. |
data.state | string | Status catatan/operasi. accepted bukan terkirim; completed bukan tes koneksi. |
data.action | string | Nilai khusus operasi untuk action. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
data.settings | array | Nilai khusus operasi untuk settings. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
data.settings[] | object | Nilai khusus operasi untuk settings. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
data.settings[].id | integer | ID catatan ARNPROXY terkait; gunakan alih-alih ID internal penyedia. |
data.settings[].proxy_id | integer | ID catatan ARNPROXY terkait; gunakan alih-alih ID internal penyedia. |
data.settings[].order_number | string|null | Nomor pesanan tampilan; tidak sama dengan kolom yang meminta id. |
data.settings[].active | boolean | Apakah catatan aktif; pengaturan historis nonaktif dapat tetap tersimpan. |
data.settings[].payment_method | string | Metode saldo/kartu/PayPal; pengelolaan API hanya mendukung saldo. |
data.settings[].time_id | integer | ID periode/paket GB lokal, bukan jumlah hari atau GB. |
data.settings[].currency | string | Mata uang transaksi akun: TRY atau USD. |
data.settings[].next_renewal_date | string | Hari perpanjangan/waktu coba ulang tersimpan, bukan bukti debit. |
data.settings[].next_attempt_at | string|null | Hari perpanjangan/waktu coba ulang tersimpan, bukan bukti debit. |
data.settings[].last_status | string | Nilai khusus operasi untuk last status. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
data.settings[].revision | string | Sidik kesegaran untuk disalin tanpa perubahan ke perubahan/konfirmasi harga terkait. |
data.settings[].managed_via_website | boolean | Nilai khusus operasi untuk managed via website. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
data.settings[].timezone | string | Zona waktu kolom tanggal terkait; null berarti belum terverifikasi. |
data.payment_method | string | Metode saldo/kartu/PayPal; pengelolaan API hanya mendukung saldo. |
data.configuration_only | boolean | Nilai khusus operasi untuk configuration only. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
data.immediate_charge | boolean | Dampak yang dilaporkan; pengaturan perpanjangan otomatis dapat menimbulkan debit terpisah kelak. |
data.balance_changed | boolean | Dampak yang dilaporkan; pengaturan perpanjangan otomatis dapat menimbulkan debit terpisah kelak. |
data.proxy_expiry_changed | boolean | Dampak yang dilaporkan; pengaturan perpanjangan otomatis dapat menimbulkan debit terpisah kelak. |
data.provider_requests | integer | Nilai khusus operasi untuk provider requests. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
data.payment_requests | integer | Nilai khusus operasi untuk payment requests. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
data.consent_version | string | Nilai khusus operasi untuk consent version. Pertahankan tipe yang dikembalikan dan baca catatan perilaku. |
data.api_key_revocation_stops_existing_renewals | boolean | false: pencabutan kunci tidak menonaktifkan perpanjangan otomatis; matikan pengaturan terpisah. |
data.source | string | Sumber data; catatan lokal dan kueri penyedia langsung merupakan bukti berbeda. |
data.completed_at | string | Stempel waktu sesuai representasi API; tanggal contoh sintetis. |
data.replayed | boolean | Hasil tersimpan dari operasi sama, bukan bukti debit/tindakan baru. |
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. |
Respons kesalahan
{
"ok": false,
"error": { "code": "INVALID_API_KEY" },
"meta": { "request_id": "000000000000000000000001" }
}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 →
Perilaku & catatan penting
- Resource ini hanya mengatur perpanjangan saldo, tidak menagih/memperpanjang sekarang. Cron lama nanti memakai harga saat itu. Pencabutan kunci tidak mematikan pengaturan; nonaktifkan terpisah. Kartu/PayPal tetap melalui situs. Tanpa promo; diskon jumlah per negara dan syarat memilih seluruh pesanan IPv6 tetap. Menonaktifkan tidak membatalkan perpanjangan yang sudah mulai/selesai.
- Timeout/5xx bukan bukti perubahan gagal. Gunakan Idempotency-Key awal untuk status. Jangan ulang dengan kunci baru; GET tidak mengirim ulang perubahan.
- Pengaturan saldo sendiri pada proxy kedaluwarsa juga dapat dimatikan. Tidak membatalkan perpanjangan/debit yang telah mulai atau selesai.