توثيق API إنشاء مخططات توزيع المساحات#
URL الأساسي:
https://api.ideal.house
الإصدار: v1
آخر تحديث: 2026-08-09
📖 نظرة عامة#
تُولّد API إنشاء مخططات توزيع المساحات مخطط طابق مفاهيمي سكني واحداً باللونين الأسود والأبيض ومن منظور علوي وبأسلوب CAD، بناءً على متطلبات غرف منظمة وتوجيه نصي مخصصة اختيارية أو صورة مرجعية.
النواتج مخصصة للاستكشاف الأولي للتخطيط. ليست مرسوماً إنشائياً، ويجب على مختص مؤهل مراجعة الأبعاد والهندسة المُولَّدة ومواضع التجهيزات الثابتة والتوافق مع اللوائح.
سير العمل غير متزامن:
- إنشاء مهمة — قدّم معلمات مخطط الطابق واحصل على
taskId. - استعلم عن النتائج دورياً — استعلم عن نقطة نهاية النتائج باستخدام
taskIdحتى تصل المهمة إلى حالة نهائية.
🔐 المصادقة#
يجب أن تتضمن جميع طلبات API العامة مفتاح API.
| الرأس | مطلوب | القيمة |
|---|---|---|
APIKEY | ✅ نعم | مفتاح API الخاص بك |
Content-Type | ✅ نعم لـ POST | application/json |
[!WARNING] احتفظ بمفتاح API الخاص بك بأمان. لا تكشفه في أكواد جانب العميل أو المستودعات العامة.
💰 خصم الرصيد#
يتم خصم الرصيد بعد إنشاء مهمة التوليد بنجاح. إذا فشلت المهمة في النهاية، يتم رد الرصيد المخصوم تلقائياً. إرجاع رصيد غير كافٍ رمز الخطأ 9051.
النموذج (modelType) | حجم المخرج | الرصيد |
|---|---|---|
Base | 1536 × 1024 | 10 |
Pro | 2496 × 1664 | 20 |
لا يدعم Flash بواسطة API مخططات توزيع المساحات.
انظر مرجع خصم الرصيد لسلوك الفوترة الشائع.
📌 نقاط نهاية API#
1. إنشاء مهمة مخطط طابق#
تُنشئ مهمة توليد مخطط طابق وتُعيد معرف مهمة فريد.
نقطة النهاية
POST /api/v1/floorPlan/generate
رؤوس الطلب
| الرأس | مطلوب | الوصف |
|---|---|---|
APIKEY | ✅ نعم | مفتاح مصادقة API |
Content-Type | ✅ نعم | يجب أن يكون application/json |
جسم الطلب#
| الحقل | النوع | مطلوب | الوصف | الافتراضي |
|---|---|---|---|---|
bedrooms | integer | ❌ لا | عدد غرف النوم من 0 إلى 5 | 2 |
bathrooms | number | ❌ لا | إجمالي عدد الحمامات من 0.5 إلى 4، بخطوات 0.5 | 1.5 |
totalArea | string | ✅ نعم | إجمالي مساحة الهدف الموجوبة مع وحدة m² أو ft²، مثل 220 m² أو 1386 ft² | — |
bedroomAreaRanges | array<object> | ❌ لا | إرشادات اختيارية لتحديد مساحة غرف النوم. انظر مدى مساحة غرف النوم | مشتق من totalArea عند حذفه |
bathroomDetails | object | ❌ لا | تفضيلات للحمامات الكاملة فقط. انظر تفاصيل الحمامات | — |
kitchenDetails | object | ❌ لا | تكوين مطبخ اختياري. انظر تفاصيل المطبخ | — |
keyRooms | array<string> | ❌ لا | غرف أو مساحات إضافية. انظر الغرف الرئيسية | [] |
prompt | string | ❌ لا | أولويات تخطيط إضافية. لا يمكنها تجاوز الأعداد المحددة في الحقول المنظمة أو القيود البصرية الصلبة | "" |
refImageUrl | string | ❌ لا | URL صورة مرجعية متاحة للعامة | "" |
modelType | string | ❌ لا | نطاق: Base، Pro | Base |
[!IMPORTANT] يُتحقق حالياً من
bedroomsكـ0–5وbathroomsكـ0.5–4بواسطة API العام. لا توسع القيم المتاحة في واجهة مستخدم عميل آخر هذه الحدود الخدمية.
قواعد الطلب العامة#
- جميع قيم النطاق حساسة لحالة الأحرف ويجب أن تستخدم القيم الإنجليزية المعروضة في هذا المستند.
totalAreaهو إجمالي مساحة هدف يستخدم لتوجيه المقياس والتناسب؛ لا يُعامل كبُعد إنشائي دقيق.- يُقتصر النص المطلوب المخصص الفعلي على أول 800 حرفاً عند تجميع النص المطلوب للصورة المنظمة.
- الحقول المنظمة لها الأسبقية على التعليمات المتضاربة في
prompt. - تُنشئ المهمة الناجحة صورة واحدة بالضبط.
📐 إجمالي المساحة#
totalArea يحتوي على قيمة رقمية موجوبة واحدة تليها وحدة مساحة.
| الوحدة | مثال |
|---|---|
m² | 220 m² |
ft² | 1386 ft² |
يُنصح بوجود مسافة بيضاء قبل الوحدة. تُقبل القيم العشرية عندما تكون موجوبة.
أمثلة صالحة:
{
"totalArea": "200 m²"
}
{
"totalArea": "1850 ft²"
}
🛏️ مدى مساحة غرف النوم#
يُقدم bedroomAreaRanges إرشادات لتحديد المساحة نسبية لغرف النوم. لا يطلب تسميات مساحة رقمية في الصورة المُنشأة.
لكل عنصر الشكل التالي:
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
name | string | ❌ لا | هوية غرفة النوم، على سبيل المثال Room 1 (Master) أو Room 2 |
minArea | string | ❌ لا | الحد الأدنى للمساحة الموجب |
maxArea | string | ❌ لا | الحد الأقصى للمساحة الموجب; لا يمكن أن يكون أقل من minArea |
unit | string | ❌ لا | نطاق: m²، ft²; استخدم نفس وحدة totalArea |
مثال على مدى صريح
{
"bedroomAreaRanges": [
{
"name": "Room 1 (Master)",
"minArea": "30",
"maxArea": "40",
"unit": "m²"
},
{
"name": "Room 2",
"minArea": "20",
"maxArea": "30",
"unit": "m²"
}
]
}
القواعد عند تقديم مصفوفة غير فارغة:
- يجب أن يساوي طولها
bedrooms. - يجب أن يكون كل
minAreaوmaxAreaمُقدَّم كسلسلة رقمية موجوبة. - عند تقديم كلتا القيمتين،
minArea <= maxArea. unit، عند تقديمه، يجب أن يكونm²أوft².- يتم الحفاظ على الأسماء. العناصر الفارغة أو null لا توفر إرشادات لتحديد المساحة.
مدى تلقائي عند حذفه#
يمكن حذف الحقل أو إرساله كمصفوفة فارغة. عندما لا يحتوي أي عنصر على minArea أو maxArea فعال، يستخرج مسار التوليد المنظم نطاقات داخلية لمساحات غرف النوم من totalArea و bedrooms:
- يبدأ ميزانية مساحة غرف النوم بنسبة 20% من إجمالي المساحة لغرفة نوم واحدة.
- تزيد الميزانية بمقدار 7.5 نقطة مئوية لكل غرفة نوم إضافية، بحد أقصى 50%.
- تتلقى غرفة النوم الأولى وزنًا لتحديد المساحة قدره
1.3; كل غرفة نوم أخرى تتلقى وزن1.0. - كل هدف يصبح مدى تقريبي
±10%، مدوراً إلى وحدات مساحة صحيحة. - الوحدة تُوروثة من
totalArea. - يتم الاحتفاظ بأسماء الغرف غير الفارغة الحالية; وإلا يستخدم الخادم
Room 1وRoom 2، وهلم جرا.
بالنسبة لـ 200 m² و 4 من غرف النوم، فإن الإرشاد المشتق الحالي هو تقريباً:
[
{ "name": "Room 1", "minArea": "23", "maxArea": "28", "unit": "m²" },
{ "name": "Room 2", "minArea": "18", "maxArea": "22", "unit": "m²" },
{ "name": "Room 3", "minArea": "18", "maxArea": "22", "unit": "m²" },
{ "name": "Room 4", "minArea": "18", "maxArea": "22", "unit": "m²" }
]
هذه القيم إرشادات داخلية لتحديد النسب، ولا تضمن المساحات النهائية للغرف. تكون للنطاقات الصريحة الصالحة الأولوية دائمًا على النطاقات المحسوبة تلقائيًا.
عندما يكون bedrooms هو 0، احذف bedroomAreaRanges أو أرسل [].
🛁 تفاصيل الحمامات#
bathrooms يمثل العدد الإجمالي للحمامات:
- جزؤه الصحيح هو عدد الحمامات الكاملة.
- كسر
.5يضيف حماماً نصفياً واحداً. - يتم مطالبة كل حمام كامل ليشمل مرحاض، ومغسلة/حوض، ودش أو منطقة رطبة.
- الحمام النصفي يحتوي على مرحاض ومغسلة/حوض فقط، بدون دش أو حوض استحمام.
bathroomDetails يضبط إعدادات الحمامات الكاملة فقط:
{
"bathroomDetails": {
"fullBathroomOptions": [
{
"name": "Bathroom 1",
"wetDrySeparation": "yes",
"bathtub": "required"
},
{
"name": "Bathroom 2",
"wetDrySeparation": "no",
"bathtub": "optional"
}
]
}
}
| الحقل | النوع | القيم المسموحة | الوصف |
|---|---|---|---|
name | string | Bathroom 1، Bathroom 2، وما إلى ذلك | هوية عرض اختيارية |
wetDrySeparation | string / null | yes، no، null | ما إذا كان يجب عرض منطقة رطبة منفصلة |
bathtub | string / null | no، optional، required، null | تفضيل حوض الاستحمام |
القواعد:
fullBathroomOptions.lengthلا يمكن أن يتجاوزfloor(bathrooms).- قد تحتوي المصفوفة على الحمامات الكاملة فقط التي تم اختيار تفضيلاتها.
- قيمة
nullتعني غير محدد. - حوض الاستحمام المطلوب إضافي إلى أدوات الحمام الكاملة القياسية; لا يستبدل المرحاض أو الدش.
- الفصل الرطب/الجاف هو جدار داخلي داخل حمام محسوب، وليس حماماً إضافياً.
🍳 تفاصيل المطبخ#
جميع حقول kitchenDetails الفرعية اختيارية. احذف الكائن بالكامل عندما لا يتم اختيار تفضيل مطبخ.
{
"kitchenDetails": {
"type": "open",
"size": "standard",
"layout": "U",
"islandType": "preparation",
"storage": "maximum",
"features": ["breakfast nook", "pantry"]
}
}
| الحقل | النوع | القيم المسموحة |
|---|---|---|
type | string | open, semi-open, closed |
size | string | small, standard, large, extra large |
layout | string | I, L, U, gallery |
islandType | string | no, preparation, cooking, entertainment |
storage | string | minimal, standard, maximum |
features | array<string> | eating bar, breakfast nook, pantry |
التكوين الجزئي صالح. على سبيل المثال:
{
"kitchenDetails": {
"type": "semi-open"
}
}
🚪 الغرف الرئيسية#
يقبل keyRooms مصفوفة من هذه القيم الدقيقة:
| القيمة | الوصف |
|---|---|
walk-in closet | خزانة ملابس مخصصة متصلة بمنطقة غرفة نوم |
laundry room | مساحة غسيل مخصصة |
storage room | غرفة تخزين عامة |
utility room | غرفة ميكانيكية أو خدمة |
home office | مكتب أو غرفة دراسة مخصصة |
garage | مرآب مع فتحة مركبة خارجية ودخول داخلي للمنزل |
pantry | مخزن مجاور للمطبخ |
combined living-dining | منطقة معيشة ومائدة مشتركة واحدة |
balcony | شرفة خارجية متصلة بمساحة معيشة أو غرفة نوم رئيسية |
كما يُقبل قيمة الويب القديمة balcon ويُعاد تطبيعها إلى balcony.
القواعد:
- تُتجاهل القيم الفارغة وتُزال القيم المكررة.
- يتم طلب الغرف الرئيسية المختارة مرة واحدة.
- تُستبعد المساحات الاختيارية غير المختارة من توزيع الغرف المُنشأ.
- إذا ظهر
pantryفي كل منkitchenDetails.featuresوkeyRooms، فسيتم طلب مخزن واحد فقط.
مثال:
{
"keyRooms": [
"garage",
"home office",
"combined living-dining"
]
}
🖼️ صورة مرجعية#
refImageUrl اختيارية ويجب أن تكون مباشرة في متناول خادم API.
المتطلبات:
- التنسيق: JPG/JPEG، PNG، أو WebP.
- الحد الأقصى لحجم الملف: 20 ميجابايت.
- الحد الأدنى للأبعاد: 128 × 128 بكسل.
- الحد الأقصى للأبعاد: 6,000 × 6,000 بكسل. يتم تصغير الصور الأكبر حجماً بشكل متناسب قبل المعالجة.
تُوجّه الصورة المرجعية التخطيط، والتجاور، والتناسب، أو النمط البصري. لا تتجاوز عدّ الغرف المنظمة أو القيود الصلبة الأخرى.
🤖 أنواع النموذج#
| القيمة | الوصف |
|---|---|
Base | الافتراضي. جودة توليد متوازنة، مخرج 1536 × 1024 |
Pro | مخرج 2496 × 1664 عالي الدقة مع وقت توليد أطول متوقع |
يتم دعم Base و Pro فقط.
حقول غير موجودة في العقد التجاري العام#
لا ينبغي الاعتماد على الحقول التالية من قبل عملاء API العامة:
| الحقل | ملاحظات |
|---|---|
imageNumbers | المولد الحالي يُعيد دائماً صورة واحدة; هذا الحقل غير ضروري |
extData | بيانات تعريف تتبع مجموعة مهام الويب الداخلية; يجب على العملاء العامة حذفه |
isApiCall | يحدده نقطة نهاية API، وليس جسم الطلب |
genByMember | بيانات تعريف توليد داخلية، ليس حقل طلب مخطط الطابق |
الحقول القديمة المُزالة التي لا يجب إرسالها:
floorplanSetting
roomCounts
grossArea
totalAreaValue
totalAreaUnit
totalAreaType
fullBathrooms
halfBathrooms
halfBathroomRequirement
kitchenType
diningRooms
livingRooms
extras
referenceImage
hasDetailOptions
📥 أمثلة إنشاء المهمة#
طلب بسيط مع نطاقات لمساحات غرف نوم تلقائية#
curl -X POST "https://api.ideal.house/api/v1/floorPlan/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"modelType": "Pro",
"prompt": "Upper floor of a two-story Saudi Arabian villa with a master bedroom, family living area, staircase landing, and balcony"
}'
طلب كامل#
cURL
curl -X POST "https://api.ideal.house/api/v1/floorPlan/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"bedrooms": 3,
"bathrooms": 2.5,
"totalArea": "220 m²",
"bedroomAreaRanges": [
{"name": "Room 1 (Master)", "minArea": "30", "maxArea": "40", "unit": "m²"},
{"name": "Room 2", "minArea": "20", "maxArea": "30", "unit": "m²"},
{"name": "Room 3", "minArea": "20", "maxArea": "30", "unit": "m²"}
],
"bathroomDetails": {
"fullBathroomOptions": [
{"name": "Bathroom 1", "wetDrySeparation": "yes", "bathtub": "required"},
{"name": "Bathroom 2", "wetDrySeparation": "no", "bathtub": "optional"}
]
},
"kitchenDetails": {
"type": "open",
"size": "standard",
"layout": "U",
"islandType": "preparation",
"storage": "maximum",
"features": ["breakfast nook", "pantry"]
},
"keyRooms": ["garage", "home office", "combined living-dining"],
"prompt": "Bright modern home with good natural lighting",
"refImageUrl": "https://example.com/reference-plan.png",
"modelType": "Pro"
}'
Java (OkHttp)
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class FloorPlanApiExample {
private static final String BASE_URL = "https://api.ideal.house";
private static final String API_KEY = "your_api_key_here";
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
String json = """
{
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"keyRooms": ["walk-in closet", "balcony"],
"prompt": "Upper floor with a master bedroom and family living area",
"modelType": "Pro"
}
""";
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/floorPlan/generate")
.addHeader("APIKEY", API_KEY)
.addHeader("Content-Type", "application/json")
.post(RequestBody.create(json, MediaType.parse("application/json")))
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
}
}
Python (requests)
import requests
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
payload = {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"keyRooms": ["walk-in closet", "balcony"],
"prompt": "Upper floor with a master bedroom and family living area",
"modelType": "Pro",
}
response = requests.post(
f"{BASE_URL}/api/v1/floorPlan/generate",
headers={"APIKEY": API_KEY, "Content-Type": "application/json"},
json=payload,
)
response.raise_for_status()
print("Task ID:", response.json()["data"])
Node.js (axios)
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function createFloorPlanTask() {
const response = await axios.post(
`${BASE_URL}/api/v1/floorPlan/generate`,
{
bedrooms: 4,
bathrooms: 2,
totalArea: '200 m²',
keyRooms: ['walk-in closet', 'balcony'],
prompt: 'Upper floor with a master bedroom and family living area',
modelType: 'Pro'
},
{
headers: {
APIKEY: API_KEY,
'Content-Type': 'application/json'
}
}
);
console.log('Task ID:', response.data.data);
return response.data.data;
}
createFloorPlanTask();
استجابة نجاح إنشاء المهمة#
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| الحقل | النوع | الوصف |
|---|---|---|
code | integer | يشير 0 إلى أن المهمة تم إنشاؤها بنجاح |
message | string | رسالة الاستجابة |
data | long | معرف المهمة المستخدم لاستعلام نقطة نهاية النتيجة |
2. الحصول على نتيجة المهمة#
يعيد تقدم المهمة والصورة المُنشأة عند توفرها.
نقطة النهاية
GET /api/v1/floorPlan/result?taskId={taskId}
رؤوس الطلب
| الرأس | مطلوب | الوصف |
|---|---|---|
APIKEY | ✅ نعم | مفتاح مصادقة API |
معاملات الاستعلام
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
taskId | long | ✅ نعم | معرف المهمة المعاد من نقطة النهاية للإنشاء |
أمثلة طلب النتيجة#
cURL
curl -X GET "https://api.ideal.house/api/v1/floorPlan/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Python الاستعلام الدوري
import time
import requests
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
task_id = 1234567890123456789
while True:
response = requests.get(
f"{BASE_URL}/api/v1/floorPlan/result",
headers={"APIKEY": API_KEY},
params={"taskId": task_id},
)
response.raise_for_status()
task = response.json()["data"]
print(task["status"], task["percentage"], task["waitNumber"])
if task["status"] in ("Success", "Failed", "Termination"):
break
time.sleep(3)
if task["status"] == "Success":
print("Result URL:", task["output"]["resultUrl"])
Node.js الاستعلام الدوري
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function pollFloorPlanResult(taskId) {
while (true) {
const response = await axios.get(
`${BASE_URL}/api/v1/floorPlan/result`,
{
headers: { APIKEY: API_KEY },
params: { taskId }
}
);
const task = response.data.data;
console.log(task.status, task.percentage, task.waitNumber);
if (['Success', 'Failed', 'Termination'].includes(task.status)) {
if (task.status === 'Success') {
console.log('Result URL:', task.output.resultUrl);
}
return task;
}
await new Promise(resolve => setTimeout(resolve, 3000));
}
}
pollFloorPlanResult('1234567890123456789');
استجابة مهمة مكتملة#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Success",
"waitNumber": 0,
"percentage": 100,
"input": {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"bedroomAreaRanges": [
{"name": "Room 1", "minArea": "23", "maxArea": "28", "unit": "m²"},
{"name": "Room 2", "minArea": "18", "maxArea": "22", "unit": "m²"},
{"name": "Room 3", "minArea": "18", "maxArea": "22", "unit": "m²"},
{"name": "Room 4", "minArea": "18", "maxArea": "22", "unit": "m²"}
],
"keyRooms": ["walk-in closet", "balcony"],
"prompt": "Upper floor with a master bedroom and family living area",
"modelType": "Pro"
},
"output": {
"resultUrl": "https://cdn.ideal.house/output/floor-plan.jpg",
"width": 2496,
"height": 1664
}
}
}
استجابة المعالجة#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Processing",
"waitNumber": 1,
"percentage": 45,
"input": {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"modelType": "Pro"
},
"output": null
}
}
استجابة مهمة فاشلة#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"bedrooms": 4,
"bathrooms": 2,
"totalArea": "200 m²",
"modelType": "Pro"
},
"output": null
}
}
حقول النتيجة#
| الحقل | النوع | الوصف |
|---|---|---|
id | long | معرف المهمة |
status | string | حالة المهمة الحالية |
waitNumber | integer | عدد المهام أمامك في الطابور; 0 يعني عدم وجود مهام مجدولة أمامك |
percentage | integer | نسبة مئوية تقريبية للإنهاء من 0 إلى 100 |
input | object | مدخل المهمة المعيَّر، بما في ذلك نطاقات مساحات غرف النوم المشتقة تلقائياً عند الاقتضاء |
output | object / null | المخرج المُنشأ عند نجاح المهمة; وإلا عادةً null |
output.resultUrl | string | URL موقّع للصورة المُنشأة لمخطط توزيع المساحات. |
output.width | integer | عرض المخرج بالبكسل |
output.height | integer | ارتفاع المخرج بالبكسل |
📊 حالة المهمة#
| الحالة | الوصف |
|---|---|
Unprocessed | تم إنشاء المهمة ولكنها لم تبدأ بعد |
Processing | يتم معالجة المهمة |
Success | اكتملت المهمة و output.resultUrl متاح |
Failed | فشلت المهمة |
Termination | تم قطع المهمة أو إنهاؤها |
استعلم دورياً كل 3–5 ثوانٍ. انظر حد مهمة API.
❌ استجابات الخطأ#
جميع استجابات الخطأ تستخدم هيكل الاستجابة الشائع:
{
"code": 1011,
"message": "bedroomAreaRanges size must match bedrooms",
"data": null
}
| الرمز | الاسم | الوصف | الإجراء المقترح |
|---|---|---|---|
1001 | FAILED | فشل عام في الطلب | تحقق من حقل message |
1003 | INTERNAL_ERROR | خطأ في الخادم الداخلي | أعد المحاولة لاحقاً; تواصل مع الدعم إذا استمر |
1011 | PARAM_ERROR | معامل طلب غير صالح | تحقق من الأعداد والوحدات والقيم الممكنة والمصفوفات المتداخلة |
5002 | API_KEY_INVALID | مفتاح API غير صالح أو مفقود | تحقق من رأس APIKEY |
9010 | SCAN_TEXT_ERROR | فشل المطالبة في مراجعة المحتوى | راجع النص المطلوب |
9038 | PROHIBITED_CONTENT | يحتوي المخرج المُنشأ على محتوى محظور | عدّل المدخلات وأعد المحاولة |
9051 | COINS_NOT_ENOUGH | رصيد غير كافٍ | أضف رصيداً وأعد المحاولة |
انظر مرجع رموز الأخطاء للحصول على قائمة الأخطاء الشاملة الكاملة.
🔄 ملاحظات تكامل الويب#
يستخدم تطبيق الويب الذي يتطلب تسجيل الدخول وAPI العامة نقاط نهاية وطرق مصادقة مختلفة:
| العميل | نقطة النهاية | المصادقة |
|---|---|---|
| تطبيق ويب | POST /floorPlan/generate | رأس token تسجيل الدخول |
| API عام | POST /api/v1/floorPlan/generate | رأس APIKEY |
أشكال الحقول التجارية متوافقة، لكن عملاء API العامة يجب أن يلتزموا بالحدود الخدمية والعقد العام في هذا المستند. على وجه التحديد:
- يمكن أن تتضمن عملاء الويب
imageNumbersوextDataالداخلية; عملاء العامة لا يحتاجونها. - يحدد API العام بيانات تعريف استدعاء API من نقطة النهاية والمصادقة. حقول الطلب مثل
isApiCallوgenByMemberغير ضرورية. - يُقبل
balconللتوافق ويتم تطبيعها إلىbalcony; يجب على التكاملات الجديدة إرسالbalcony. - تظل حدود الخادم العامة الحالية
0–5من غرف النوم و0.5–4من الحمامات حتى لو عرضت واجهة مستخدم أخرى مؤقتاً منتقي أوسع.