ত্রুটি এবং সীমা

স্থিতিশীল error code, সীমাবদ্ধ retry এবং pagination।

সর্বশেষ আপডেট: ৩০ সেপ, ২০২৬

Error contract

ম্যানেজমেন্ট ত্রুটিতে error (মানুষের পাঠযোগ্য) এবং code (স্থিতিশীল) থাকে। Message text নয়, code এবং HTTP status-এর উপর ভিত্তি করে branch করুন। Scope ত্রুটিতে required এবং missing_scope থাকতে পারে; retry-যোগ্য রেসপন্সে retryAfter, retryable এবং Retry-After থাকতে পারে। মালিকানা ব্যর্থতায় 404 ফেরত আসে, যাতে অন্য ওয়ালেটের রিসোর্স প্রকাশ না পায়।

{ "error": "Insufficient scope", "code": "insufficient_scope", "required": "write" }
  • 400: অবৈধ JSON, অবৈধ অনুরোধ বা প্রত্যাখ্যাত destination।
  • 401: authentication অনুপস্থিত/অবৈধ বা প্রত্যাখ্যাত signature।
  • 402: অপর্যাপ্ত credits বা প্রয়োজনীয় Slot ক্যাপাসিটি।
  • 403: অপর্যাপ্ত Scope বা অন্য কোনো সুস্পষ্ট permission সীমাবদ্ধতা।
  • 404: অনুপস্থিত বা অন্যের রিসোর্স।
  • 409: conflict, সক্রিয় idempotency lease, পুনর্ব্যবহৃত key বা বন্ধ থাকা asset।
  • 410: মেয়াদোত্তীর্ণ টপআপ draft।
  • 422: পেমেন্ট যাচাই ব্যর্থ।
  • 429: rate limit বা নিঃশেষিত security fallback ক্যাপাসিটি।
  • 503: অনুপলব্ধ মূল্য, signer বা সাময়িক নির্ভরতা।

নিরাপদে retry করুন

Retry-After মেনে চলুন এবং jitter সহ exponential backoff এবং একটি সীমিত attempt budget ব্যবহার করুন। একটি idempotent অপারেশন একই key এবং body দিয়ে পুনরাবৃত্তি করুন। Authentication ব্যর্থতা বা প্রত্যাখ্যাত permission অন্ধভাবে retry করবেন না। শুধু প্রথম রেসপন্স timeout হয়েছে বলে কখনো দ্বিতীয় সাবস্ক্রিপশন কিনবেন না। বিদ্যমান নির্দেশ আর ব্যবহারযোগ্য না থাকলে তবেই quote বা draft নতুন করে নিন।

Rate limit

Challenge এবং token বিনিময় প্রতি IP-তে প্রতি মিনিটে 30টি অনুরোধে সীমিত। টপআপ draft, সাবস্ক্রিপশন ক্রয় এবং watch তৈরি প্রতি ওয়ালেটে প্রতি মিনিটে 10টিতে সীমিত। Watch PATCH/DELETE প্রতি মিনিটে 60টি অনুমোদন করে; settings PUT এবং message preview প্রতি মিনিটে 30টি; alert export প্রতি ঘণ্টায় 10টি। সীমা idempotency-র আগে প্রযোজ্য, replay সহ। Redis অনুপলব্ধ থাকলে একটি সীমাবদ্ধ process-local fallback ব্যবহৃত হয়; fallback ক্যাপাসিটি নিঃশেষ হলে security limit fail closed হয়।

Recipient তৈরি এবং target পরিবর্তন প্রতি ওয়ালেটে প্রতি ঘণ্টায় 10টি ভাগ করে নেয়। Confirmation mail-এর ওয়ালেট এবং canonical-destination budget আছে। Throttle করা resend 429-এর বদলে sent: false সহ HTTP 200 ফেরত দিতে পারে; ওই field পরীক্ষা করুন। Recipient তৈরি confirmationSent: false জানাতে পারে। একটি pending target অযাচাইকৃত থাকে এবং টেস্ট বা alert গ্রহণ করতে পারে না।

Account ledger এবং watch তালিকা limit এবং একটি opaque Cursor গ্রহণ করে। nextCursor null না হওয়া পর্যন্ত অনুসরণ করুন; Cursor ব্যাখ্যা বা পরিবর্তন করবেন না। Alert history এর বদলে শূন্য-ভিত্তিক page এবং pageSize ব্যবহার করে, সাথে filter এবং sorting। Export 5,000 সারিতে সীমাবদ্ধ। দুটি pagination মডেল মেশাবেন না।

curl 'https://ftso.app/api/x402/watches?limit=20' \
  -H 'authorization: Bearer fbx_READ_TOKEN'
# Follow the returned nextCursor, URL-encoded, on the next request.

সম্পূর্ণ স্থিতিশীল-code enum OpenAPI ডকুমেন্ট-এ প্রকাশিত। Permission-এর জন্য দেখুন অপারেশন রেফারেন্স।