MASAR DEVELOPER PLATFORM
تطبيقات الويب والخوادم
أمثلة Server-to-Server للغات الويب الشائعة، مع نمط آمن للمتصفح يحمي مفتاح التكامل.
v1.0Read-onlyHTTPSJSON
قاعدة معمارية مهمة
لا ترسل مفتاح MASAR إلى المتصفح. تطبيق الويب في المتصفح يتصل بخادم مؤسستك، وخادمك وحده يتصل بـMASAR.
Browser / SPA
↓ HTTPS
Your trusted server
↓ Authorization: Bearer mapi_...
MASAR Partner APIJavaScript — Node.js
const baseUrl = "https://api.masardz.com/api/v1/partner";
const apiKey = process.env.MASAR_API_KEY;
const response = await fetch(`${baseUrl}/buses?page=1&per_page=25`, {
headers: { Authorization: `Bearer ${apiKey}`, Accept: "application/json" }
});
if (!response.ok) throw new Error(`MASAR HTTP ${response.status}`);
const body = await response.json();
console.log(body.data.items);TypeScript — Node.js
const baseUrl: string = "https://api.masardz.com/api/v1/partner";
const apiKey: string | undefined = process.env.MASAR_API_KEY;
const response: Response = await fetch(`${baseUrl}/buses?page=1&per_page=25`, {
headers: { Authorization: `Bearer ${apiKey}`, Accept: "application/json" }
});
if (!response.ok) throw new Error(`MASAR HTTP ${response.status}`);
const body: any = await response.json();
console.log(body.data.items);PHP
<?php
$apiKey = getenv('MASAR_API_KEY');
$url = 'https://api.masardz.com/api/v1/partner/buses?page=1&per_page=25';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Accept: application/json',
],
]);
$raw = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status !== 200) throw new RuntimeException("MASAR HTTP $status");
$data = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
print_r($data['data']['items']);Python
import os, requests
url = "https://api.masardz.com/api/v1/partner/buses"
headers = {"Authorization": f"Bearer {os.environ['MASAR_API_KEY']}"}
r = requests.get(url, headers=headers, params={"page": 1, "per_page": 25}, timeout=15)
r.raise_for_status()
for bus in r.json()["data"]["items"]:
print(bus["id"], bus.get("plate_number"))Go
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.masardz.com/api/v1/partner/buses?page=1&per_page=25", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("MASAR_API_KEY"))
req.Header.Set("Accept", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode != 200 { panic(fmt.Sprintf("MASAR HTTP %d: %s", resp.StatusCode, body)) }
fmt.Println(string(body))
}Ruby
require 'net/http'
require 'json'
uri = URI('https://api.masardz.com/api/v1/partner/buses?page=1&per_page=25')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = "Bearer #{ENV.fetch('MASAR_API_KEY')}"
req['Accept'] = 'application/json'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
raise "MASAR HTTP #{res.code}" unless res.code.to_i == 200
puts JSON.parse(res.body).dig('data', 'items')Frontend JavaScript
من المتصفح استدعِ API الخاصة بخادم مؤسستك فقط:
const response = await fetch('/api/fleet/buses');
if (!response.ok) throw new Error('تعذر تحميل الحافلات');
const buses = await response.json();