كيف يعمل الربط؟
بعد اعتماد طلبك تحصل على مفتاح API مرتبط بموقعك وصلاحياته. يرسل سكربتك طلبًا إلى الواجهة، ثم يستقبل JSON موحدًا يحتوي على التطبيقات أو أحدث إصدار لتطبيق محدد.
وثائق عملية لربط متجرك بواجهة التطبيقات، قراءة آخر الإصدارات، التعامل مع الاستجابات والأخطاء، ثم طلب مفتاح API مخصص لموقعك.
curl -X GET \
"https://k7gps.com/api/v1/apps" \
-H "Accept: application/json" \
-H "Authorization: Bearer API_TOKEN"
بعد اعتماد طلبك تحصل على مفتاح API مرتبط بموقعك وصلاحياته. يرسل سكربتك طلبًا إلى الواجهة، ثم يستقبل JSON موحدًا يحتوي على التطبيقات أو أحدث إصدار لتطبيق محدد.
كل طلب محمي يجب أن يحمل المفتاح بهذه الصيغة. لا ترسل المفتاح داخل الرابط ولا تعرضه في JavaScript العام.
Authorization: Bearer API_TOKEN
Accept: application/json/api/v1/appsapps.readيعيد جميع التطبيقات المتاحة للتكامل.
/api/v1/apps/{bundle_id}/latestapps.latestيعيد أحدث إصدار لتطبيق واحد اعتمادًا على Bundle ID.
مثال: com.example.plus
{
"success": true,
"count": 2,
"data": [
{
"id": 15,
"title": "Plus App",
"bundle_id": "com.example.plus",
"version": "2.8.0",
"description": "وصف مختصر",
"features": "المزايا",
"image_url": "https://k7gps.com/uploads/apps/icon.png",
"file_url": "https://k7gps.com/uploads/apps/app.ipa",
"details_url": "https://k7gps.com/app-details/15",
"updated_at": "2026-07-14 20:30:00"
}
],
"server_time": "2026-07-14T20:30:00+03:00"
}{
"success": true,
"data": {
"id": 15,
"title": "Plus App",
"bundle_id": "com.example.plus",
"version": "2.8.0",
"file_url": "https://k7gps.com/uploads/apps/app.ipa",
"updated_at": "2026-07-14 20:30:00"
}
}{
"success": false,
"code": "INVALID_TOKEN",
"message": "Invalid or expired API token"
}اختر اللغة وانسخ المثال مباشرة. استبدل API_TOKEN بالمفتاح المعتمد.
$ch = curl_init('https://k7gps.com/api/v1/apps');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'Accept: application/json',
'Authorization: Bearer API_TOKEN'
]
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
if ($response === false || $error !== '') {
throw new RuntimeException($error ?: 'Connection failed');
}
$data = json_decode($response, true);
if ($status !== 200 || empty($data['success'])) {
throw new RuntimeException($data['message'] ?? 'API request failed');
}
foreach ($data['data'] as $app) {
echo $app['title'] . ' - ' . $app['version'];
}const response = await fetch('https://k7gps.com/api/v1/apps', {
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer API_TOKEN'
}
});
const data = await response.json();
if (!response.ok || !data.success) {
throw new Error(data.message || 'API request failed');
}
console.log(data.data);import requests
response = requests.get(
'https://k7gps.com/api/v1/apps',
headers={
'Accept': 'application/json',
'Authorization': 'Bearer API_TOKEN'
},
timeout=30
)
data = response.json()
if not response.ok or not data.get('success'):
raise RuntimeError(data.get('message', 'API request failed'))
for app in data['data']:
print(app['title'], app['version'])var request = URLRequest(url: URL(string: "https://k7gps.com/api/v1/apps")!)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField: "Accept")
request.setValue("Bearer API_TOKEN", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: request) { data, response, error in
guard error == nil, let data = data else { return }
let http = response as? HTTPURLResponse
guard http?.statusCode == 200 else { return }
let result = try? JSONSerialization.jsonObject(with: data)
print(result ?? "Invalid response")
}.resume()curl -X GET "https://k7gps.com/api/v1/apps" \
-H "Accept: application/json" \
-H "Authorization: Bearer API_TOKEN"MISSING_TOKENلم يتم إرسال المفتاح.
أضف Authorization Bearer.
INVALID_TOKENالمفتاح غير صالح أو منتهي.
راجع المفتاح أو اطلب تجديده.
PERMISSION_DENIEDالصلاحية غير مضافة للمفتاح.
اطلب تفعيل الصلاحية المطلوبة.
APP_NOT_FOUNDBundle ID غير موجود.
تحقق من القيمة المرسلة.
NOT_FOUNDالمسار غير موجود.
راجع إصدار ومسار API.
RATE_LIMITتم تجاوز الحد الساعي.
انتظر أو اطلب رفع الحد.
نفذ الطلب من Backend وليس من صفحة المتصفح.
استخدم مهلة 20–30 ثانية وتعامل مع فشل الاتصال.
أعد المحاولة عند 5xx أو انقطاع الشبكة فقط.
احتفظ بـHTTP status وcode وmessage للتشخيص.
أرسل بيانات الموقع وحدد وسيلة تواصل واحدة على الأقل. تتم مراجعة الطلب يدويًا، وبعد الموافقة يتم تزويدك بالمفتاح والصلاحيات عبر وسيلة التواصل المختارة.