ספק תעבורה שני פעיל בקישינב — 20 Gbps של קיבולת מעורבת. חיבור תעבורה מעורבת בנפח 20 Gbps פעיל כעת למה מולדובה

טוקן אחד, וכל מה שפאנל הלקוח יכול לעשות

JSON דרך HTTPS. אין צורך ב-SDK, אין צורך בחשבון מפתחים נפרד, ואין endpoint שקיים בפאנל אך לא כאן.

יצירת שרת

curl -X POST https://api.vpsoffshore.com/v1/servers \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"plan":"reef","image":"debian-13"}'

מחזיר build id באופן מיידי. המכונה עונה על SSH כשישים שניות מאוחר יותר, והכתובת מנותבת לפני שפרטי הגישה נשלחים.

20 נקודת קצה

הכול, בחמש קבוצות

כתובת URL בסיסית https://api.vpsoffshore.com/v1. הגרסה מצוינת בנתיב; v1 תמשיך לפעול גם כש-v2 תהיה זמינה, ומועד ההפסקה שלה יוצהר שנה מראש.

שרתים

GET /servers כל שירות בחשבון, כולל מצב, חבילה וכתובות.
POST /servers יוצרים אחד. מתקבל מיד מזהה build; השרת נגיש כדקה לאחר מכן.
GET /servers/{id} שירות אחד, כולל שימוש חי במשאבים בשעה האחרונה.
PATCH /servers/{id} החלפת החבילה. שינוי גודל ללא התקנה מחדש, במקומות שבהם הדיסק מאפשר זאת.
DELETE /servers/{id} משמידים אותו. הדיסקים נשמרים 14 יום, ואז נמחקים לפני הקצאה מחדש.
POST /servers/{id}/actions reboot · shutdown · start · rebuild · rescue · reset-password.

אחסון נתונים

GET /servers/{id}/snapshots תמונות מצב לשירות אחד, מהחדש לישן.
POST /servers/{id}/snapshots תמונת מצב אחת. דקה, כך שהיא מהירה ולא מכפילה את השימוש בדיסק.
POST /snapshots/{id}/restore שחזור במקום, או לשירות אחר מאותה חבילה או גדולה יותר.
DELETE /snapshots/{id} הסרת תמונת מצב.

רשת

GET /servers/{id}/addresses כתובות מנותבות לשירות, v4 ו-v6.
POST /servers/{id}/addresses בקשת כתובת נוספת, או /29.
PUT /addresses/{ip}/rdns הגדרת reverse DNS. נכנס לתוקף תוך דקה, לא ברענון האזור הבא.
GET /servers/{id}/bandwidth מוני העברת נתונים. למידע בלבד — אין מכסה לחרוג ממנה.

קטלוג

GET /plans כל חבילה עם המפרט והמחיר שלה. אותו המקור שממנו האתר הזה נבנה.
GET /images תמונות מערכת וקובצי ISO זמינים, כולל אלה שהועלו.
POST /images ניתן להעלות ISO לפי כתובת URL. האתחול מתבצע עם מסוף מחובר.

חיוב

GET /invoices חשבוניות, ששולמו וכאלה שטרם שולמו, עם המטבע ועסקת השרשרת.
POST /invoices/{id}/pay הפקת כתובת תשלום עבור אחד מבין 8 המטבעות הנתמכים.
GET /credits זיכויי SLA שהוענקו, עם האירוע שהוביל לכל אחד מהם.

כל מה שפאנל הלקוח יכול לעשות נמצא כאן, ואין כאן דבר שחסר בפאנל הלקוח. כאשר השניים אינם תואמים, זהו באג — ניתן לדווח לנו מפאנל הלקוח והוא מתוקן במקום להיות מתועד כהתנהגות מכוונת.

איך זה מתנהג

ארבע החלטות שניתן להבחין בהן תוך שעה

ה-API נשפט לפי הנתיבים הגרועים שלו, לא לפי הטובים. שלושה מתוך הארבעה הבאים עוסקים במה שקורה כשמשהו משתבש.

אסימון אחד, שנוצר בפאנל

נשלח כ-bearer token. ניתן להגביל אותו לקריאה בלבד או לשירות בודד, לפי הצורך; ה-tokens בלתי תלויים בסיסמה, וביטול של אחד מהם לעולם לא מנתק את החיבור.

JSON בכניסה, JSON ביציאה, ללא צורך ב-SDK

HTTPS פשוט ללא מעטפת מותאמת אישית, ללא נפילה חזרה ל-XML וללא טקס חתימה. אם curl מסוגל לבצע את זה, יש כבר לקוח (client) מתאים. ספריות רשמיות קיימות ל-Go, Python ו-TypeScript, ואף אחת מהן אינה נדרשת.

מגבלות קצב שלא ניתן להיתקל בהן בטעות

600 בקשות בדקה לכל טוקן, 60 עבור קריאות יצירה. כל תגובה נושאת את התקציב שנותר בכותרת, וחריגה ממנו מחזירה 429 עם מספר השניות הנדרש להמתנה — לעולם לא השמטה שקטה.

שגיאות שאומרות מה לעשות

קוד 4xx נושא קוד קריא למכונה, משפט קריא לבני אדם, ואת השדה הבעייתי. עדיף להחזיר שגיאה ארוכה משגיאה קצרה שיש לנחש.

שני הדברים שנכתבים פעם אחת

אימות, וכיצד נראית שגיאה

כדאי לקרוא את שניהם לפני כתיבת הקריאה הראשונה, ולא אחרי הכשל הראשון.

אימות

curl https://api.vpsoffshore.com/v1/servers \
  -H "Authorization: Bearer $TOKEN"

הטוקנים נוצרים בפאנל, וניתן להגביל אותם לקריאה בלבד או לשירות אחד בלבד. הם בלתי תלויים בסיסמה, וביטול של טוקן אינו מנתק מהמערכת בשום מקום.

קריאת מגבלת הקצב

X-RateLimit-Remaining: 574
X-RateLimit-Reset: 41

על כל תגובה, לא רק על זו שנכשלת. חריגה מהמגבלה מחזירה 429 עם מספר השניות להמתנה, לעולם לא נשירה שקטה ולעולם לא תגובה מקוצרת.

שגיאה מצביעה על השדה

{"error":"plan_unknown",
 "message":"No plan named 'reff'. Did you mean 'reef'?",
 "field":"plan"}

קוד קריא למכונה, משפט קריא לבני אדם והשדה הבעייתי. שגיאות ארוכות זולות יותר מקצרות שצריך לנחש.

תשאול סטטוס בנייה

curl https://api.vpsoffshore.com/v1/servers/$ID \
  -H "Authorization: Bearer $TOKEN" | jq .state

עובר מ-building ל-running. אין צורך לרשום webhook לפני שאפשר ליצור דבר כלשהו, ותשאול פעם בשנייה נמצא בתוך המגבלה.

אין צורך בבקשת אישור

האסימון נמצא בפאנל, והפאנל מגיע יחד עם השרת הראשון

ללא חשבון מפתחים, ללא אישור, וללא סביבת בדיקות שמתנהגת אחרת מסביבת הייצור.

שפה

האתר הזה בשפה לבחירה

זמין ב28 שפות כיום. השאר נמצאות בתהליך תרגום.