كيف تصل حالات الفشل في OTO API، وكيف تعيد المحاولة بأمان، وكيف تتعامل مع انتهاء صلاحية الرمز، وما حدود الاستخدام، وما معنى كل حالة ورمز خطأ.
لا تُقيَّم عمليات الربط بما تفعله عندما يسير كل شيء على ما يرام، بل بما تفعله عندما تتعطل شركة شحن، أو تنتهي صلاحية رمز، أو يتعذّر تحويل عنوان إلى إحداثيات.
هناك ثلاثة أشكال مختلفة للفشل، وكل منها يحتاج إلى استجابة مختلفة.
الشكل
كيف يبدو؟
ما الذي تفعله؟
طلبك غير صحيح
استجابة 4xx مع رسالة تحدد الحقل.
صحّح الطلب وأعد إرساله. إعادة المحاولة دون تغيير ستفشل بالطريقة نفسها.
انتهت صلاحية الرمز
استجابة 401.
احصل على رمز وصول جديد وأعد المحاولة مرة واحدة. ابنِ ذلك منذ البداية، فهو سيحدث كل ساعة.
فشل في أحد الأنظمة اللاحقة
استجابة 5xx، أو انتهاء مهلة، أو استجابة ناجحة تحمل خطأً من شركة الشحن.
أعد المحاولة مع زيادة فترات الانتظار (Backoff). قد يكون الطلب قد نجح جزئيًا، لذا اجعل تكراره آمنًا.
الشكل الثالث هو الأخطررفض شركة الشحن للحجز ليس خطأً من OTO، ولذلك لا يصل دائمًا بوصفه فشل HTTP. ببساطة، لا تُنشأ الشحنة ويبقى الطلب متوقفًا.وهذا تحديدًا هو غرض Webhook من نوع shipmentError: إذ يحمل errorCode، وerrorMessage الخاصة بـ OTO، ونص رد شركة الشحن الخام في deliveryCompanyResponse، وغالبًا ما يكون السبب بسيطًا وقابلًا للإصلاح، مثل مدينة أو رمز بريدي ناقص. ومن دونه لا يعلم أحد بالمشكلة حتى يسأل العميل.
لا تُعد محاولة طلبات الإنشاء عشوائيًا أبدًا. الاستدعاءان createOrder وcreateShipment يغيّران الحالة. فإذا انتهت مهلة استدعاء، تحقق من وجود الكائن قبل إعادة إرساله، فاستدعاء orderDetails أقل تكلفة بكثير من شحنة مكررة.
زد فترات الانتظار أسّيًا. إعادة المحاولة المتلاحقة على خدمة متعثرة تُفاقم المشكلة ولا تُسرّع شيئًا.
ضع حدًا أقصى للمحاولات ثم صعّد المشكلة. الطلب الذي فشل خمس مرات يحتاج إلى شخص، لا إلى محاولة سادسة.
احتفظ بالطلبات الفاشلة. جدول «dead-letter» للطلبات التي لم تنجح أبدًا هو ما يكشف لك النمط: شركة شحن واحدة، أو مدينة واحدة، أو منتج واحد بلا وزن.
تبقى رموز الوصول صالحة لمدة ساعة، لذا ستواجه عملية الربط التي تعمل لفترات طويلة استجابة 401 بشكل اعتيادي. تعامل معها كإشارة لا كعطل: جدّد الرمز وأعد إرسال الطلب مرة واحدة. ولا تُطلق تنبيهًا إلا إذا فشل التجديد نفسه، لأن ذلك يعني أن بيانات الاعتماد خاطئة لا قديمة.
الاستعلام المتكرر هو ما يوقع عملية الربط في المشكلات، وغالبًا ما يكون حلقة تسأل عن حالات طلبات لم تتغير. ويُزيل Webhook هذه الحلقة تمامًا، وهذا هو الحل الحقيقي. وإذا كان لا بد من الاستعلام، فاجعله محددًا: فلتر حسب التاريخ والحالة بدلًا من جلب كل شيء ثم المقارنة.
تتوفر القائمة الكاملة لحالات الطلبات ورموز أخطاء المنصة على apis.tryoto.com، تحت List Of Statuses وError Codes. وكلتاهما تُولَّدان مع نقاط النهاية، لذا تبقيان متوافقتين مع ما تُعيده الواجهة فعليًا.
اربط الحالات مرة واحدة وفي مكان واحدلن يستخدم نظامك وOTO المصطلحات نفسها، ومكان التحويل بينهما جدول ربط واحد، لا مقارنات نصية متناثرة في الكود.عند ظهور حالة جديدة، يتغير جدول واحد. والبديل هو البحث عن المواضع السبعة التي تتحقق من delivered.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OTO Docs","description":"Product documentation for OTO, the ecommerce operations platform and shipping gateway for merchants in Saudi Arabia, the UAE and Türkiye.","colors":{"primary":"#506EFE","light":"#3D5FFF","dark":"#506EFE"},"logo":{"light":"https://mintcdn.com/oto/50MvmFcOsjmCy_H4/images/docs-logo.png?fit=max\u0026auto=format\u0026n=50MvmFcOsjmCy_H4\u0026q=85\u0026s=e77cede9643d5290bd5ff9ef3cd62084","dark":"https://mintcdn.com/oto/CC-n0HhbZXZkyIOY/images/docs-logo-dark.png?fit=max\u0026auto=format\u0026n=CC-n0HhbZXZkyIOY\u0026q=85\u0026s=0eaa761eda10edc1248ec73a7a464915"},"favicon":{"light":"https://mintcdn.com/oto/jqSnxa8fmU8MbKy9/images/oto-logo-51232.png?fit=max\u0026auto=format\u0026n=jqSnxa8fmU8MbKy9\u0026q=85\u0026s=40c563a4988902b756905551f7dfa08e","dark":"https://mintcdn.com/oto/jqSnxa8fmU8MbKy9/images/oto-logo-51232.png?fit=max\u0026auto=format\u0026n=jqSnxa8fmU8MbKy9\u0026q=85\u0026s=40c563a4988902b756905551f7dfa08e"},"background":{"color":{"light":"#F5F7F9","dark":"#111111"}},"navbar":{"links":[{"href":"https://tryoto.com","label":"Home"},{"href":"https://support.tryoto.com","label":"Help center"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.tryoto.com"}},"seo":{"organization":{"id":"https://tryoto.com/#organization","name":"OTO","url":"https://tryoto.com","logo":"https://docs.tryoto.com/images/oto-logo-51232.png","sameAs":["https://www.linkedin.com/company/tryotocom","https://x.com/tryotocom","https://www.instagram.com/tryotocom","https://www.facebook.com/tryotocom","https://www.youtube.com/@tryotocom"]}},"fonts":{"family":"Ping ARLT Regular","source":"https://storage.googleapis.com/tryoto-public/public/assets/fonts/PingARLT-Regular.woff2","format":"woff2"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":""},{"language":"ar","navbar":{"links":[{"href":"https://tryoto.com","label":"الرئيسية"},{"href":"https://support.tryoto.com/ar","label":"مركز المساعدة"}],"primary":{"type":"button","label":"لوحة التحكم","href":"https://app.tryoto.com"}},"href":"ar"},{"language":"tr","navbar":{"links":[{"href":"https://tryoto.com","label":"Anasayfa"},{"href":"https://support.tryoto.com/tr","label":"Yardım Merkezi"}],"primary":{"type":"button","label":"Gösterge Paneli","href":"https://app.tryoto.com"}},"href":"tr"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"oto","hasAudioNarration":false,"actualSubdomain":"oto","customDomains":["docs.tryoto.com"],"gitSource":{"type":"github","owner":"otoglobal","repo":"oto-docs","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":"","_id":"6ad8ce8fad82cbcc460c882d"},"chroma":{"latestBuiltDeploymentHistoryId":"6addbb84b128bc39b5e5b942","collectionId":"d72dffa9-51ec-43cf-8cd6-cc0c06f5df60","liveDeploymentHistoryId":"6addbb84b128bc39b5e5b942","schemaVersion":"v3"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6addbb84b128bc39b5e5b942","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"ar","tag":"الأنظمة","count":43},{"language":"en","tag":"Modules","count":43},{"language":"tr","tag":"Modüller","count":43},{"language":"ar","tag":"عمليات الربط","count":8},{"language":"en","tag":"Integrations","count":8},{"language":"tr","tag":"Entegrasyonlar","count":8},{"language":"ar","tag":"المطورون","count":6},{"language":"ar","tag":"البدء","count":6},{"language":"ar","tag":"إشعارات العملاء","count":6},{"language":"ar","tag":"إدارة المخزون","count":6},{"language":"ar","tag":"OMS متعدد القنوات","count":6},{"language":"en","tag":"Developers","count":6},{"language":"en","tag":"Get started","count":6},{"language":"en","tag":"Customer Notification","count":6},{"language":"en","tag":"Inventory Management","count":6},{"language":"en","tag":"Omnichannel OMS","count":6},{"language":"tr","tag":"Geliştiriciler","count":6},{"language":"tr","tag":"Başlarken","count":6},{"language":"tr","tag":"Müşteri Bildirimleri","count":6},{"language":"tr","tag":"Envanter Yönetimi","count":6},{"language":"tr","tag":"Omnichannel OMS","count":6},{"language":"ar","tag":"OTO FLEX","count":5},{"language":"ar","tag":"إدارة الشحن","count":5},{"language":"ar","tag":"إدارة المستودعات","count":5},{"language":"en","tag":"OTO FLEX","count":5},{"language":"en","tag":"Shipping Management","count":5},{"language":"en","tag":"Warehouse Management","count":5},{"language":"tr","tag":"OTO FLEX","count":5},{"language":"tr","tag":"Kargo Yönetimi","count":5},{"language":"tr","tag":"Depo Yönetimi","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"rtl.css","content":":is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #navbar button.lg\\:hidden>div+div,:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#content-area, #page-title, #header, #table-of-contents, #sidebar-content, #mobile-nav, #pagination, #footer),:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=menu]{direction:rtl;text-align:right}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area ul{padding-left:0;padding-right:0}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area ul>li{padding-left:0;padding-right:2rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area ul>li::before{left:auto;right:.5rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area blockquote{border-left:0;border-right:.25rem solid currentColor;padding-left:0;padding-right:1em}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area :is(table, th, td){text-align:right}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area :is(pre, code, .code-block, .code-group, .frame svg, [data-badge]){direction:ltr;unicode-bidi:isolate;text-align:left}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #mobile-nav #localization-select-trigger svg,:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #page-context-menu.ml-auto,:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #pagination [data-component-part=pagination-next]{margin-left:0;margin-right:auto}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #page-context-menu-button{border-radius:0 var(--radius-xl, 0.75rem) var(--radius-xl, 0.75rem) 0;border-left-width:0;border-right-width:1px}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #page-context-menu-button+button{border-radius:var(--radius-xl, 0.75rem) 0 0 var(--radius-xl, 0.75rem)}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #navbar button.lg\\:hidden>div+div svg,:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=menuitem] .font-medium>svg{scale:-1 1}@media (min-width:1024px){:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]):has(#page-context-menu button[aria-expanded=true]) [role=menu][data-align=end]{translate:calc(100% - var(--anchor-width, 0px)) 0;transform-origin:0 -4px}}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area em{unicode-bidi:plaintext}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area :is(h1, h2, h3, h4, h5, h6)>.absolute>a{display:none}@media (min-width:1024px){:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area :is(h1, h2, h3, h4, h5, h6)>.absolute>a{display:flex;margin-left:0;translate:2.5rem 0}}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #sidebar-content>div{padding-right:0;padding-left:2rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) .sidebar-group-header{padding-left:0;padding-right:1rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) :is(a, button)[style*=padding-left]{padding-left:.75rem!important;text-align:right}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) :is(a, button):is([style*=\"padding-left:1rem\"], [style*=\"padding-left: 1rem\"]){padding-right:1rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) :is(a, button):is([style*=\"padding-left:1.75rem\"], [style*=\"padding-left: 1.75rem\"]){padding-right:1.75rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) :is(a, button):is([style*=\"padding-left:2.5rem\"], [style*=\"padding-left: 2.5rem\"]){padding-right:2.5rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) button[aria-expanded]:not([aria-haspopup]) svg{margin-right:0;margin-left:-.125rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) :is(#sidebar-content, #mobile-nav) button[aria-expanded=false]:not([aria-haspopup]) svg{scale:-1 1}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #table-of-contents a{padding-left:0;padding-right:calc(var(--toc-padding-left, 0rem) + var(--toc-focus-padding, 0rem))}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #pagination [data-component-part=pagination-prev] svg{rotate:180deg}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #pagination [data-component-part=pagination-next] svg{rotate:none}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=dialog]:has(#topbar-cta-button){direction:rtl;text-align:right}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=dialog]:has(#topbar-cta-button)>button{right:auto;left:.375rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) [role=dialog]:has(#topbar-cta-button) li:first-child>a{padding-left:30px;padding-right:.75rem}@media (min-width:1024px){:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #navbar{direction:rtl}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #topbar-cta-button svg{scale:-1 1}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) div:has(>#sidebar){flex-direction:row-reverse}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-container>div:has(>#content-area){flex-direction:row}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #content-area{padding-left:.25rem;padding-right:5.7rem;margin-left:0;margin-right:-3rem}:is(html[data-current-path=\"/ar\"], html[data-current-path^=\"/ar/\"]) #table-of-contents-layout{padding-left:0;padding-right:2.5rem}}"}],"page":{"pagePath":"ar/developers/errors-and-rate-limits","slug":"/ar/developers/errors-and-rate-limits","pageMetadata":{"title":"أخطاء واجهة API وحدود الاستخدام","sidebarTitle":"الأخطاء وحدود الاستخدام","description":"كيف تصل حالات الفشل في OTO API، وكيف تعيد المحاولة بأمان، وكيف تتعامل مع انتهاء صلاحية الرمز، وما حدود الاستخدام، وما معنى كل حالة ورمز خطأ.","href":"/ar/developers/errors-and-rate-limits"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"كيف تصل حالات الفشل في OTO API، وكيف تعيد المحاولة بأمان، وكيف تتعامل مع انتهاء صلاحية الرمز، وما حدود الاستخدام، وما معنى كل حالة ورمز خطأ.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table,Tip,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`لا تُقيَّم عمليات الربط بما تفعله عندما يسير كل شيء على ما يرام، بل بما تفعله عندما تتعطل شركة شحن، أو تنتهي صلاحية رمز، أو يتعذّر تحويل عنوان إلى إحداثيات.`}),`\n`,_jsx(Heading,{level:`2`,id:`كيف-تصل-حالات-الفشل؟`,children:`كيف تصل حالات الفشل؟`}),`\n`,_jsx(_components.p,{children:`هناك ثلاثة أشكال مختلفة للفشل، وكل منها يحتاج إلى استجابة مختلفة.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`الشكل`}),_jsx(_components.th,{children:`كيف يبدو؟`}),_jsx(_components.th,{children:`ما الذي تفعله؟`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`طلبك غير صحيح`})}),_jsx(_components.td,{children:`استجابة 4xx مع رسالة تحدد الحقل.`}),_jsx(_components.td,{children:`صحّح الطلب وأعد إرساله. إعادة المحاولة دون تغيير ستفشل بالطريقة نفسها.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`انتهت صلاحية الرمز`})}),_jsx(_components.td,{children:`استجابة 401.`}),_jsx(_components.td,{children:`احصل على رمز وصول جديد وأعد المحاولة مرة واحدة. ابنِ ذلك منذ البداية، فهو سيحدث كل ساعة.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`فشل في أحد الأنظمة اللاحقة`})}),_jsx(_components.td,{children:`استجابة 5xx، أو انتهاء مهلة، أو استجابة ناجحة تحمل خطأً من شركة الشحن.`}),_jsx(_components.td,{children:`أعد المحاولة مع زيادة فترات الانتظار (Backoff). قد يكون الطلب قد نجح جزئيًا، لذا اجعل تكراره آمنًا.`})]})]})]}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`الشكل الثالث هو الأخطر`})}),_jsx(_components.p,{children:`رفض شركة الشحن للحجز ليس خطأً من OTO، ولذلك لا يصل دائمًا بوصفه فشل HTTP. ببساطة، لا تُنشأ الشحنة ويبقى الطلب متوقفًا.`}),_jsxs(_components.p,{children:[`وهذا تحديدًا هو غرض `,_jsx(_components.a,{href:`/ar/developers/webhook-events`,children:`Webhook`}),` من نوع `,_jsx(_components.code,{children:`shipmentError`}),`: إذ يحمل `,_jsx(_components.code,{children:`errorCode`}),`، و`,_jsx(_components.code,{children:`errorMessage`}),` الخاصة بـ OTO، ونص رد شركة الشحن الخام في `,_jsx(_components.code,{children:`deliveryCompanyResponse`}),`، وغالبًا ما يكون السبب بسيطًا وقابلًا للإصلاح، مثل مدينة أو رمز بريدي ناقص. ومن دونه لا يعلم أحد بالمشكلة حتى يسأل العميل.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`إعادة-المحاولة-بأمان`,children:`إعادة المحاولة بأمان`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`لا تُعد محاولة طلبات الإنشاء عشوائيًا أبدًا.`}),` الاستدعاءان `,_jsx(_components.code,{children:`createOrder`}),` و`,_jsx(_components.code,{children:`createShipment`}),` يغيّران الحالة. فإذا انتهت مهلة استدعاء، تحقق من وجود الكائن قبل إعادة إرساله، فاستدعاء `,_jsx(_components.code,{children:`orderDetails`}),` أقل تكلفة بكثير من شحنة مكررة.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`زد فترات الانتظار أسّيًا.`}),` إعادة المحاولة المتلاحقة على خدمة متعثرة تُفاقم المشكلة ولا تُسرّع شيئًا.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`ضع حدًا أقصى للمحاولات ثم صعّد المشكلة.`}),` الطلب الذي فشل خمس مرات يحتاج إلى شخص، لا إلى محاولة سادسة.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`احتفظ بالطلبات الفاشلة.`}),` جدول «dead-letter» للطلبات التي لم تنجح أبدًا هو ما يكشف لك النمط: شركة شحن واحدة، أو مدينة واحدة، أو منتج واحد بلا وزن.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`انتهاء-صلاحية-الرمز-ليس-خطأً`,children:`انتهاء صلاحية الرمز ليس خطأً`}),`\n`,_jsx(_components.p,{children:`تبقى رموز الوصول صالحة لمدة ساعة، لذا ستواجه عملية الربط التي تعمل لفترات طويلة استجابة 401 بشكل اعتيادي. تعامل معها كإشارة لا كعطل: جدّد الرمز وأعد إرسال الطلب مرة واحدة. ولا تُطلق تنبيهًا إلا إذا فشل التجديد نفسه، لأن ذلك يعني أن بيانات الاعتماد خاطئة لا قديمة.`}),`\n`,_jsx(Heading,{level:`2`,id:`حدود-الاستخدام`,children:`حدود الاستخدام`}),`\n`,_jsxs(_components.p,{children:[`الاستعلام المتكرر هو ما يوقع عملية الربط في المشكلات، وغالبًا ما يكون حلقة تسأل عن حالات طلبات لم تتغير. ويُزيل `,_jsx(_components.a,{href:`/ar/developers/webhook-events`,children:`Webhook`}),` هذه الحلقة تمامًا، وهذا هو الحل الحقيقي. وإذا كان لا بد من الاستعلام، فاجعله محددًا: فلتر حسب التاريخ والحالة بدلًا من جلب كل شيء ثم المقارنة.`]}),`\n`,_jsx(Heading,{level:`2`,id:`مرجع-الحالات-ورموز-الأخطاء`,children:`مرجع الحالات ورموز الأخطاء`}),`\n`,_jsxs(_components.p,{children:[`تتوفر القائمة الكاملة لحالات الطلبات ورموز أخطاء المنصة على `,_jsx(_components.a,{href:`https://apis.tryoto.com`,children:`apis.tryoto.com`}),`، تحت `,_jsx(_components.strong,{children:`List Of Statuses`}),` و`,_jsx(_components.strong,{children:`Error Codes`}),`. وكلتاهما تُولَّدان مع نقاط النهاية، لذا تبقيان متوافقتين مع ما تُعيده الواجهة فعليًا.`]}),`\n`,_jsxs(Tip,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`اربط الحالات مرة واحدة وفي مكان واحد`})}),_jsx(_components.p,{children:`لن يستخدم نظامك وOTO المصطلحات نفسها، ومكان التحويل بينهما جدول ربط واحد، لا مقارنات نصية متناثرة في الكود.`}),_jsxs(_components.p,{children:[`عند ظهور حالة جديدة، يتغير جدول واحد. والبديل هو البحث عن المواضع السبعة التي تتحقق من `,_jsx(_components.code,{children:`delivered`}),`.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`صفحات-ذات-صلة`,children:`صفحات ذات صلة`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/ar/developers/webhook-events`,children:`أحداث Webhook`}),` — حيث تظهر أخطاء الشحنات.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/ar/developers/authentication`,children:`التوثيق`}),` — مدة صلاحية الرمز وتجديده.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/ar/modules/shipping-management/carrier-integration`,children:`ربط شركات الشحن`}),` — لماذا ترفض شركة الشحن حجزًا.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"أخطاء واجهة API وحدود الاستخدام","sidebarTitle":"الأخطاء وحدود الاستخدام","description":"كيف تصل حالات الفشل في OTO API، وكيف تعيد المحاولة بأمان، وكيف تتعامل مع انتهاء صلاحية الرمز، وما حدود الاستخدام، وما معنى كل حالة ورمز خطأ.","href":"/ar/developers/errors-and-rate-limits"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"كيف تصل حالات الفشل؟","slug":"كيف-تصل-حالات-الفشل؟","depth":2,"children":[]},{"title":"إعادة المحاولة بأمان","slug":"إعادة-المحاولة-بأمان","depth":2,"children":[]},{"title":"انتهاء صلاحية الرمز ليس خطأً","slug":"انتهاء-صلاحية-الرمز-ليس-خطأً","depth":2,"children":[]},{"title":"حدود الاستخدام","slug":"حدود-الاستخدام","depth":2,"children":[]},{"title":"مرجع الحالات ورموز الأخطاء","slug":"مرجع-الحالات-ورموز-الأخطاء","depth":2,"children":[]},{"title":"صفحات ذات صلة","slug":"صفحات-ذات-صلة","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/oto/5e4908087dc78be6/adsping.js"],"subdomain":"oto","siteName":"OTO Docs","title":"أخطاء واجهة API وحدود الاستخدام - OTO Docs","relatedPagesConfig":{"enabled":true,"limit":3,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/developers/errors-and-rate-limits","matchLevel":1},"ar":{"href":"/ar/developers/errors-and-rate-limits","matchLevel":0},"tr":{"href":"/tr/developers/errors-and-rate-limits","matchLevel":1}}},"lastModified":"2026-10-22T15:40:14.631Z","originalFileLocation":"ar/developers/errors-and-rate-limits.mdx","locale":"ar"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"كيف تصل حالات الفشل في OTO API، وكيف تعيد المحاولة بأمان، وكيف تتعامل مع انتهاء صلاحية الرمز، وما حدود الاستخدام، وما معنى كل حالة ورمز خطأ.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OTO Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"أخطاء واجهة API وحدود الاستخدام - OTO Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"كيف تصل حالات الفشل في OTO API، وكيف تعيد المحاولة بأمان، وكيف تتعامل مع انتهاء صلاحية الرمز، وما حدود الاستخدام، وما معنى كل حالة ورمز خطأ.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OTO Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://oto.mintlify.app/_mintlify/api/og/v2?division=%D8%A7%D9%84%D9%85%D8%B7%D9%88%D8%B1%D9%88%D9%86\u0026amp;title=%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1+%D9%88%D8%A7%D8%AC%D9%87%D8%A9+API+%D9%88%D8%AD%D8%AF%D9%88%D8%AF+%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85\u0026amp;description=%D9%83%D9%8A%D9%81+%D8%AA%D8%B5%D9%84+%D8%AD%D8%A7%D9%84%D8%A7%D8%AA+%D8%A7%D9%84%D9%81%D8%B4%D9%84+%D9%81%D9%8A+OTO+API%D8%8C+%D9%88%D9%83%D9%8A%D9%81+%D8%AA%D8%B9%D9%8A%D8%AF+%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D9%88%D9%84%D8%A9+%D8%A8%D8%A3%D9%85%D8%A7%D9%86%D8%8C+%D9%88%D9%83%D9%8A%D9%81+%D8%AA%D8%AA%D8%B9%D8%A7%D9%85%D9%84+%D9%85%D8%B9+%D8%A7%D9%86%D8%AA%D9%87%D8%A7%D8%A1+%D8%B5%D9%84%D8%A7%D8%AD%D9%8A%D8%A9+%D8%A7%D9%84%D8%B1%D9%85%D8%B2%D8%8C+%D9%88%D9%85%D8%A7+%D8%AD%D8%AF%D9%88%D8%AF+%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85%D8%8C+%D9%88%D9%85%D8%A7+%D9%85%D8%B9%D9%86%D9%89+%D9%83%D9%84+%D8%AD%D8%A7%D9%84%D8%A9+%D9%88%D8%B1%D9%85%D8%B2+%D8%AE%D8%B7%D8%A3.\u0026amp;theme=fb0540dacc0ff6c761581805\u0026amp;signature=5d62edb845328a2c648a200ed99062abdd64fda3b8c242110da0ab7d70b28fa6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"أخطاء واجهة API وحدود الاستخدام - OTO Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"كيف تصل حالات الفشل في OTO API، وكيف تعيد المحاولة بأمان، وكيف تتعامل مع انتهاء صلاحية الرمز، وما حدود الاستخدام، وما معنى كل حالة ورمز خطأ.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://oto.mintlify.app/_mintlify/api/og/v2?division=%D8%A7%D9%84%D9%85%D8%B7%D9%88%D8%B1%D9%88%D9%86\u0026amp;title=%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1+%D9%88%D8%A7%D8%AC%D9%87%D8%A9+API+%D9%88%D8%AD%D8%AF%D9%88%D8%AF+%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85\u0026amp;description=%D9%83%D9%8A%D9%81+%D8%AA%D8%B5%D9%84+%D8%AD%D8%A7%D9%84%D8%A7%D8%AA+%D8%A7%D9%84%D9%81%D8%B4%D9%84+%D9%81%D9%8A+OTO+API%D8%8C+%D9%88%D9%83%D9%8A%D9%81+%D8%AA%D8%B9%D9%8A%D8%AF+%D8%A7%D9%84%D9%85%D8%AD%D8%A7%D9%88%D9%84%D8%A9+%D8%A8%D8%A3%D9%85%D8%A7%D9%86%D8%8C+%D9%88%D9%83%D9%8A%D9%81+%D8%AA%D8%AA%D8%B9%D8%A7%D9%85%D9%84+%D9%85%D8%B9+%D8%A7%D9%86%D8%AA%D9%87%D8%A7%D8%A1+%D8%B5%D9%84%D8%A7%D8%AD%D9%8A%D8%A9+%D8%A7%D9%84%D8%B1%D9%85%D8%B2%D8%8C+%D9%88%D9%85%D8%A7+%D8%AD%D8%AF%D9%88%D8%AF+%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85%D8%8C+%D9%88%D9%85%D8%A7+%D9%85%D8%B9%D9%86%D9%89+%D9%83%D9%84+%D8%AD%D8%A7%D9%84%D8%A9+%D9%88%D8%B1%D9%85%D8%B2+%D8%AE%D8%B7%D8%A3.\u0026amp;theme=fb0540dacc0ff6c761581805\u0026amp;signature=5d62edb845328a2c648a200ed99062abdd64fda3b8c242110da0ab7d70b28fa6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/oto/S_K-Ar2SQPcQI6e_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OTO Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#506EFE\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/ar/developers/errors-and-rate-limits.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.tryoto.com/developers/errors-and-rate-limits\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://docs.tryoto.com/tr/developers/errors-and-rate-limits\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.tryoto.com/developers/errors-and-rate-limits\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://tryoto.com/#organization\",\"name\":\"OTO\",\"url\":\"https://tryoto.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.tryoto.com/images/oto-logo-51232.png\"},\"sameAs\":[\"https://www.linkedin.com/company/tryotocom\",\"https://x.com/tryotocom\",\"https://www.instagram.com/tryotocom\",\"https://www.facebook.com/tryotocom\",\"https://www.youtube.com/@tryotocom\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tryoto.com#website\",\"name\":\"OTO Docs\",\"url\":\"https://docs.tryoto.com\",\"publisher\":{\"@id\":\"https://tryoto.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits#webpage\",\"url\":\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits\",\"name\":\"أخطاء واجهة API وحدود الاستخدام\",\"description\":\"كيف تصل حالات الفشل في OTO API، وكيف تعيد المحاولة بأمان، وكيف تتعامل مع انتهاء صلاحية الرمز، وما حدود الاستخدام، وما معنى كل حالة ورمز خطأ.\",\"dateModified\":\"2026-10-22T15:40:14.631Z\",\"isPartOf\":{\"@id\":\"https://docs.tryoto.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"المطورون\",\"item\":\"https://docs.tryoto.com/ar/developers/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"أخطاء واجهة API وحدود الاستخدام\",\"item\":\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits#article\",\"headline\":\"أخطاء واجهة API وحدود الاستخدام\",\"name\":\"أخطاء واجهة API وحدود الاستخدام\",\"description\":\"كيف تصل حالات الفشل في OTO API، وكيف تعيد المحاولة بأمان، وكيف تتعامل مع انتهاء صلاحية الرمز، وما حدود الاستخدام، وما معنى كل حالة ورمز خطأ.\",\"url\":\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tryoto.com/ar/developers/errors-and-rate-limits#webpage\"},\"dateModified\":\"2026-10-22T15:40:14.631Z\",\"publisher\":{\"@id\":\"https://tryoto.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tryoto.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OTO Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OTO Docs","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/developers/errors-and-rate-limits"}]},{"language":"ar","navbar":{"links":[{"href":"https://tryoto.com","label":"الرئيسية"},{"href":"https://support.tryoto.com/ar","label":"مركز المساعدة"}],"primary":{"type":"button","label":"لوحة التحكم","href":"https://app.tryoto.com"}},"groups":[{"group":"البدء","pages":[{"title":"منصة لإدارة عمليات التجارة الإلكترونية وبوابة شحن","sidebarTitle":"الرئيسية","href":"/ar"},{"title":"ما هي OTO؟","href":"/ar/get-started/what-is-oto"},{"title":"المفاهيم الأساسية: الطلبات والشحنات والمخزون والمراكز","sidebarTitle":"المفاهيم الأساسية","href":"/ar/get-started/core-concepts"},{"title":"بنية المنصة","href":"/ar/get-started/architecture"},{"title":"البدء السريع: اشحن أول طلب مع OTO","sidebarTitle":"البدء السريع","href":"/ar/get-started/quickstart"},{"title":"مسرد مصطلحات OTO","sidebarTitle":"مسرد المصطلحات","href":"/ar/get-started/glossary"}]},{"group":"الأنظمة","pages":[{"group":"OMS متعدد القنوات","pages":[{"title":"OMS متعدد القنوات","sidebarTitle":"نظرة عامة","href":"/ar/modules/omnichannel-oms/overview"},{"title":"مزامنة الطلبات: كيف تصل الطلبات إلى OTO","sidebarTitle":"مزامنة الطلبات","href":"/ar/modules/omnichannel-oms/order-sync"},{"title":"توجيه الطلبات بين المستودعات والمتاجر","sidebarTitle":"توجيه الطلبات","href":"/ar/modules/omnichannel-oms/order-routing"},{"title":"تصحيح العناوين والبيانات","href":"/ar/modules/omnichannel-oms/order-data-correction"},{"title":"فحوصات ما قبل التجهيز","href":"/ar/modules/omnichannel-oms/prefulfillment"},{"title":"تجهيز الطلبات في المستودعات والمتاجر","sidebarTitle":"تجهيز الطلبات","href":"/ar/modules/omnichannel-oms/order-fulfillment"}]},{"group":"قنوات البيع","pages":[{"title":"قنوات البيع","sidebarTitle":"نظرة عامة","href":"/ar/modules/sales-channels/overview"},{"title":"ربط قناة بيع ومزامنتها","sidebarTitle":"مزامنة القنوات","href":"/ar/modules/sales-channels/sync"},{"title":"مزامنة حالة الطلب والتتبع مع متجرك","sidebarTitle":"تحديثات الحالة والتتبع","href":"/ar/modules/sales-channels/updates"},{"title":"Checkout API لأسعار الشحن الفورية","sidebarTitle":"Checkout API","href":"/ar/modules/sales-channels/checkout-api"}]},{"group":"إدارة الشحن","pages":[{"title":"إدارة الشحن","sidebarTitle":"نظرة عامة","href":"/ar/modules/shipping-management/overview"},{"title":"ربط شركات الشحن وإعدادها","sidebarTitle":"ربط شركات الشحن","href":"/ar/modules/shipping-management/carrier-integration"},{"title":"إنشاء الشحنات وطباعة بوالص الشحن وتتبع الطرود","sidebarTitle":"الشحن والتتبع","href":"/ar/modules/shipping-management/shipping-and-tracking"},{"title":"أتمتة الشحن وقواعد اختيار شركة الشحن","sidebarTitle":"أتمتة الشحن","href":"/ar/modules/shipping-management/shipping-automation"},{"title":"مطابقة فواتير الشحن","href":"/ar/modules/shipping-management/shipping-invoices-reconciliation"}]},{"group":"إدارة المرتجعات","pages":[{"title":"إدارة المرتجعات","sidebarTitle":"نظرة عامة","href":"/ar/modules/return-management/overview"},{"title":"بوابة الإرجاع وطلبات إرجاع العملاء","sidebarTitle":"مرتجعات العملاء","href":"/ar/modules/return-management/customer-returns"},{"title":"استلام الشحنات المرتجعة وفحصها","sidebarTitle":"استلام الشحنات المرتجعة","href":"/ar/modules/return-management/returns-receiving"},{"title":"قواعد أتمتة المرتجعات","sidebarTitle":"أتمتة المرتجعات","href":"/ar/modules/return-management/return-automation"}]},{"group":"إدارة المراكز","pages":[{"title":"إدارة المراكز","sidebarTitle":"نظرة عامة","href":"/ar/modules/hubs-management/overview"},{"title":"إضافة المستودعات والفروع وإعدادها","sidebarTitle":"إعداد المراكز","href":"/ar/modules/hubs-management/hubs-management"}]},{"group":"إشعارات العملاء","pages":[{"title":"إشعارات العملاء","sidebarTitle":"نظرة عامة","href":"/ar/modules/customer-notification/overview"},{"title":"صفحات التتبع والتأكيد بهوية علامتك التجارية","sidebarTitle":"الصفحات بعلامتك التجارية","href":"/ar/modules/customer-notification/branded-pages"},{"title":"إشعارات الرسائل النصية (SMS)","sidebarTitle":"الرسائل النصية (SMS)","href":"/ar/modules/customer-notification/sms"},{"title":"إشعارات البريد الإلكتروني","sidebarTitle":"البريد الإلكتروني","href":"/ar/modules/customer-notification/email"},{"title":"إشعارات عبر الواتساب","sidebarTitle":"واتساب","href":"/ar/modules/customer-notification/whatsapp"},{"title":"مسارات عمل مخصّصة للإشعارات","sidebarTitle":"مسارات العمل المخصّصة","href":"/ar/modules/customer-notification/custom-workflows"}]},{"group":"إدارة المستودعات","pages":[{"title":"إدارة المستودعات","sidebarTitle":"نظرة عامة","href":"/ar/modules/warehouse-management/overview"},{"title":"تطبيق OTO PACK لموظفي المستودع","sidebarTitle":"تطبيق OTO PACK","href":"/ar/modules/warehouse-management/ops"},{"title":"طرق تجهيز الطلبات والموجات في المستودع","sidebarTitle":"طرق تجهيز الطلبات","href":"/ar/modules/warehouse-management/picking-methods"},{"title":"التعبئة والإرسال","href":"/ar/modules/warehouse-management/packing-dispatch"},{"title":"استلام الواردات والتخزين","href":"/ar/modules/warehouse-management/inbound-putaway"}]},{"group":"إدارة المخزون","pages":[{"title":"إدارة المخزون","sidebarTitle":"نظرة عامة","href":"/ar/modules/inventory-management/overview"},{"title":"تتبع المخزون","href":"/ar/modules/inventory-management/inventory-tracking"},{"title":"المخزون الوارد","href":"/ar/modules/inventory-management/inbound-inventory"},{"title":"مزامنة المخزون مع قنوات البيع","sidebarTitle":"مزامنة المخزون","href":"/ar/modules/inventory-management/inventory-sync"},{"title":"إعداد كتالوج المنتجات ووحدات SKU","sidebarTitle":"إعداد المنتجات","href":"/ar/modules/inventory-management/product-configuration"},{"title":"جرد المخزون في تطبيق OTO PACK","sidebarTitle":"جرد المخزون","href":"/ar/modules/inventory-management/inventory-count"}]},{"group":"OTO FLEX","pages":[{"title":"OTO FLEX: التوصيل بسائقيك الخاصين","sidebarTitle":"نظرة عامة","href":"/ar/modules/oto-flex/overview"},{"title":"إدارة السائقين والأسطول","sidebarTitle":"إدارة الأسطول","href":"/ar/modules/oto-flex/fleet-management"},{"title":"تخطيط التوصيل وإسناد السائقين","sidebarTitle":"التخطيط","href":"/ar/modules/oto-flex/planning"},{"title":"استلام الطلب بواسطة السائق في OTO FLEX","sidebarTitle":"استلام الطلب","href":"/ar/modules/oto-flex/pickup"},{"title":"توصيل الميل الأخير في OTO FLEX","sidebarTitle":"التوصيل","href":"/ar/modules/oto-flex/delivery"}]}]},{"group":"عمليات الربط","pages":[{"title":"نظرة عامة على عمليات الربط","sidebarTitle":"نظرة عامة","href":"/ar/integrations/overview"},{"title":"عمليات ربط قنوات البيع","sidebarTitle":"قنوات البيع","href":"/ar/integrations/sales-channels"},{"title":"عمليات ربط الأسواق الإلكترونية","sidebarTitle":"الأسواق الإلكترونية","href":"/ar/integrations/marketplaces"},{"title":"الربط مع أنظمة ERP","sidebarTitle":"أنظمة ERP","href":"/ar/integrations/erp-systems"},{"title":"الربط مع أنظمة POS","sidebarTitle":"أنظمة POS","href":"/ar/integrations/pos-systems"},{"title":"الربط مع شركات الشحن","sidebarTitle":"شركات الشحن","href":"/ar/integrations/carriers"},{"title":"مزودو الرسائل النصية والبريد الإلكتروني وواتساب","sidebarTitle":"مزودو خدمات المراسلة","href":"/ar/integrations/messaging-providers"},{"title":"خدمات الويب هوك للتحديثات الفورية","sidebarTitle":"خدمات الويب هوك","href":"/ar/integrations/webhooks"}]},{"group":"المطورون","pages":[{"title":"نظرة عامة على OTO API","sidebarTitle":"نظرة عامة","href":"/ar/developers/overview"},{"title":"التوثيق في واجهة API","sidebarTitle":"التوثيق","href":"/ar/developers/authentication"},{"title":"مرجع REST API","href":"/ar/developers/rest-api-reference"},{"title":"أحداث Webhook وبياناتها","sidebarTitle":"أحداث Webhook","href":"/ar/developers/webhook-events"},{"title":"مجموعة Postman لواجهة OTO API","sidebarTitle":"مجموعة Postman","description":"استدعِ OTO API من Postman على بيئة التجربة قبل أن تكتب أي شيفرة، مع تجربة أولى في عشر دقائق من رمز الوصول إلى أول طلب.","href":"/ar/developers/postman-collection"},{"title":"أخطاء واجهة API وحدود الاستخدام","sidebarTitle":"الأخطاء وحدود الاستخدام","href":"/ar/developers/errors-and-rate-limits"}]},{"group":"المنصة","pages":[{"title":"الأمان والامتثال","description":"كيف تحمي OTO بياناتك: خيارات الاستضافة ومنها الاستضافة داخل المملكة، والتحكم في الوصول، وبيانات الاعتماد، والتشفير، والاختبارات، وضوابط مكافحة الاحتيال.","href":"/ar/platform/security-and-compliance"},{"title":"المستخدمون والأدوار والصلاحيات","href":"/ar/platform/users-roles-and-permissions"},{"title":"التوطين: اللغات والعملة والمناطق الزمنية","sidebarTitle":"التوطين","href":"/ar/platform/localization"},{"title":"التعاون والإشعارات","href":"/ar/platform/collaboration-and-notifications"},{"title":"إخطارات المنصة","sidebarTitle":"الإخطارات","href":"/ar/platform/announcements"}]},{"group":"الباقات والأسعار","pages":[{"title":"الباقات والأسعار والإضافات","sidebarTitle":"الباقات ومكوّناتها","href":"/ar/pricing/plans-and-packaging"}]}]},{"language":"tr","navbar":{"links":[{"href":"https://tryoto.com","label":"Anasayfa"},{"href":"https://support.tryoto.com/tr","label":"Yardım Merkezi"}],"primary":{"type":"button","label":"Gösterge Paneli","href":"https://app.tryoto.com"}},"pages":[{"title":"tr","href":"/tr/developers/errors-and-rate-limits"}]}]},"title":"أخطاء واجهة API وحدود الاستخدام - OTO Docs","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":[],"chunks":[]}