אסימון אחד, שנוצר בפאנל
נשלח כ-bearer token. ניתן להגביל אותו לקריאה בלבד או לשירות בודד, לפי הצורך; ה-tokens בלתי תלויים בסיסמה, וביטול של אחד מהם לעולם לא מנתק את החיבור.
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 תהיה זמינה, ומועד ההפסקה שלה יוצהר שנה מראש.
שרתים
אחסון נתונים
רשת
קטלוג
חיוב
כל מה שפאנל הלקוח יכול לעשות נמצא כאן, ואין כאן דבר שחסר בפאנל הלקוח. כאשר השניים אינם תואמים, זהו באג — ניתן לדווח לנו מפאנל הלקוח והוא מתוקן במקום להיות מתועד כהתנהגות מכוונת.
איך זה מתנהג
ה-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 לפני שאפשר ליצור דבר כלשהו, ותשאול פעם בשנייה נמצא בתוך המגבלה.
אין צורך בבקשת אישור
ללא חשבון מפתחים, ללא אישור, וללא סביבת בדיקות שמתנהגת אחרת מסביבת הייצור.