POST/v1/finance/report
الحصول على تقرير مالي موجز
finance_report
يعيد إجماليات فواتير المؤسسة أو مدفوعاتها، مجمّعة حسب ما يصل إلى ثلاثة أبعاد (الفئة، ومجموعة الفئات، ونوع نشاط المورّد، والمورّد، والمشتري، والطرف المقابل، والاتجاه، والعملة، والشهر، والربع، والسنة)، مع المقاييس invoiced وpaid وunpaid وtax. لا تشمل الإجماليات إلا المستندات المرئية للمستخدم (مجموعات ملف تعريف البيانات الخاص به وفئاته، والإعداد «الإجابة من البطاقات الموثقة فقط»)؛ وعوامل تصفية الطلب تضيّق هذا النطاق ولا توسّعه أبدًا.
في الوضع reporting (افتراضي)، تُحوَّل المبالغ إلى عملة التقارير للمؤسسة بالسعر في تاريخ المستند، وتُسرد المبالغ التي ليس لها سعر في conversion.unconverted. في الوضع original، لا تُجمع المبالغ بعملات مختلفة، وتصبح العملة بُعدًا من أبعاد الصف. إذا كانت الصفوف أكثر من limit، تكون قيمة truncated هي true، وتظل totals تغطي كل الصفوف. يتطلب ملف تعريف بيانات له وصول إلى البيانات المالية (finance.forbidden).
التقرير وقوائم الفواتير والمدفوعات وتصديرها عمليات قراءة رغم أنها تستخدم POST: فهي متاحة في وضع «View as» ولمفاتيح API ذات النطاق read (وكما في السابق، للمفاتيح ذات النطاق write).
المصادقة
أرسل مفتاح API في الترويسة Authorization: Authorization: Bearer <key>.
معاملات الترويسة
X-View-Asstringلمفاتيح API ذات الدور
adminفقط. ينفّذ الطلب بصفة ملف تعريف البيانات<profile>[:viewer|verifier|editor]، مثلemployee:viewer. لا يمكن لمفتاح التثبيت استخدام هذه الترويسة (403).
معاملات ملفات تعريف الارتباط
kb_view_asstringملف تعريف ارتباط وضع «View as» (عرض بصفة) للجلسة. تضبطه العملية
POST /auth/view-asوتمسحه العمليةDELETE /auth/view-as.
نص الطلب
application/json
basisstringالقيمة
invoices: الفواتير والإشعارات الدائنة والإيصالات. القيمةpayments: سجل المدفوعات (التدفق النقدي). معpaymentsيكون المقياس الوحيدpaid، ويُظهر البُعدdirectionوالإجمالي حركة الأموال،inأوout، أما التحويل بين كياناتك القانونية فقيمتهinternal.القيم المسموح بها:
invoicespaymentsالقيمة الافتراضية: "invoices"
group_byarray of FinanceDimensionitems ≤ 3
measuresarray of FinanceMeasureالقيمة الافتراضية
invoiced(وpaidمعpayments).currency_modeFinanceCurrencyModedate_basisstringالتاريخ الذي يحدد الفترة وعامل التصفية
from/to: تاريخ المستند أو تاريخ الدفع.القيم المسموح بها:
documentpaymentالقيمة الافتراضية: "document"
filtersFinanceFilterorder_bystringالمقياس أو البُعد الذي يُرتَّب حسبه. افتراضيًا، المقياس الأول بترتيب تنازلي.
order_descbooleanالقيمة الافتراضية: true
limitintegerالقيمة الافتراضية: 1000≥ 1, ≤ 10000
languagestringلغة تسميات الفئات ومجموعات الفئات،
en|ru. القيمة الافتراضيةen.
الاستجابات
200التقرير
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
currencystringعملة التقارير (الوضع
reporting).الإجماليات على كل الصفوف قبل الاقتطاع، سجل واحد لكل عملة (وفي التقرير المقسّم حسب الاتجاه، لكل عملة واتجاه،
FinanceReportTotal.direction).truncatedbooleanمطلوبlimitintegerمطلوبtotal_rowsintegerمطلوبعدد الصفوف المجمّعة قبل الاقتطاع.
conversionFinanceConversionwarningsarray of stringرموز التحذيرات:
profile_missing، لم تُحدَّد بيانات شركة المؤسسة، لذا يكون اتجاه الفاتورة افتراضيًاin؛catalog_missing، دليل الشركات غير محمَّل؛fx_rate_missing، بعض المبالغ بلا سعر صرف (conversion.unconverted)؛fx_rate_stale، بعض الأسعار قديمة؛enrichment_pending، بعض المستندات لا تزال قيد المعالجة ولا تدخل في الإجماليات. اعرض الرمز غير المعروف برسالة عامة.
400الطلب غير صالح: قيمة معامل أو حالة الكائن لا تسمح بالإجراء (الحقل `detail` رسالة نصية).
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
401لم تُرسَل بيانات اعتماد (لا ملف تعريف ارتباط للجلسة ولا مفتاح API)، أو لم يُعثر على المفتاح.
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
403الإجراء غير مسموح: الدور غير كافٍ، أو لا وصول إلى المجموعة أو البطاقة، أو يعمل الطلب في وضع «View as»، أو المؤسسة معلّقة أو محذوفة (الحقل `detail` كائن فيه `code: org_suspended | org_deleted`).
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
429طلبات كثيرة جدًا (`api.rate_limited`)، أو استُنفدت حصة المؤسسة للدقيقة أو اليوم أو الشهر (`api.quota_exceeded`؛ يحتوي الحقل `error.details` على `quota` و`limit` و`reset_at`)، أو بلغت المؤسسة حدها، أو خدمة الإجابات مشغولة (`answers.engine_busy`). انتظر المدة المذكورة في الترويسة `Retry-After`.
ترويسات الاستجابة
Retry-Afterعدد الثواني التي تنتظرها قبل إعادة محاولة الطلب.
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
503خدمة يعتمد عليها هذا الطلب غير متاحة مؤقتًا. أعد المحاولة لاحقًا.
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
رموز الأخطاء
الرموز التي قد تعيدها نقطة النهاية هذه في error.code، إضافةً إلى الرموز العامة لكل طلب.
إعادة المحاولة بأمان
أرسل الترويسة Idempotency-Key (قيمة UUID مثلًا) مع كل طلب POST وPATCH. إعادة المحاولة بالمفتاح نفسه خلال 24 ساعة تعيد الاستجابة المحفوظة بدل تنفيذ الطلب مرة أخرى.
حدود المعدل
تحمل الاستجابات الترويستين RateLimit وRateLimit-Policy، والترويسات الأقدم X-RateLimit-Limit وX-RateLimit-Remaining وX-RateLimit-Reset. وفي الاستجابة 429 الترويسة Retry-After بالثواني: انتظر ثم أعد المحاولة.