API স্পেসিফিকেশন

API স্পেসিফিকেশন বিভাগটি প্ল্যাটফর্মের সাথে ইন্টিগ্রেট করার জন্য প্রয়োজনীয় প্রযুক্তিগত উপাদানগুলির একটি বিস্তারিত ওভারভিউ প্রদান করে, যার মধ্যে রয়েছে অনুমোদনের সুযোগ, ডেটা টাইপের সংজ্ঞা এবং এন্ডপয়েন্ট স্ট্রাকচার। এই API হল পুরনো Fitbit Web API-এর কৌশলগত বিবর্তন, যা আরও স্থিতিশীল এবং সামঞ্জস্যপূর্ণ ডেভেলপার অভিজ্ঞতা নিশ্চিত করতে আধুনিক ইনফ্রাস্ট্রাকচারে পুনর্নির্মাণ করা হয়েছে।

দূরবীন

Google Health API স্কোপ ব্যবহার করার জন্য আপনাকে অবশ্যই অনুমোদনের অনুরোধ আপডেট করতে হবে। আপনার অ্যাপ রিড বা রাইট অপারেশন সাপোর্ট করে কিনা তা স্কোপ নির্ধারণ করে। স্কোপ প্রয়োগ করা সংক্রান্ত নির্দেশাবলী অনুসরণ করুন, যেখানে শুধুমাত্র প্রয়োজনীয় স্কোপের জন্য অনুরোধ করা, ডেটা পাঠানোর সময় শুধুমাত্র রাইট অ্যাক্সেস কনফিগার করা এবং আংশিক সম্মতি সুন্দরভাবে ম্যানেজ করার কথা বলা হয়েছে।

Google Health API স্কোপ হল একটি HTTP URL যা https://www.googleapis.com/auth/googlehealth.{scope} দিয়ে শুরু হয়। যেমন, https://www.googleapis.com/auth/googlehealth.activity_and_fitness.writeonly।

স্কোপ ম্যাপিং

Fitbit Web API স্কোপ কীভাবে Google Health API স্কোপে ম্যাপ করা হয় তা এখানে দেওয়া হল:

টেবিল: Fitbit Web API থেকে Google Health API স্কোপ ম্যাপিং
Fitbit Web API স্কোপ Google Health API স্কোপ
অ্যাক্টিভিটি .activity_and_fitness.readonly
.activity_and_fitness.writeonly
blood_glucose .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
cardio_fitness .activity_and_fitness.readonly
.activity_and_fitness.writeonly
ইলেকট্রোকার্ডিওগ্রাম .ecg.readonly
হার্টরেট .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
irregular_rhythm_notifications .irn.readonly
লোকেশন .location.readonly
পুষ্টি .nutrition.readonly
.nutrition.writeonly
oxygen_saturation .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
প্রোফাইল .profile.readonly
.profile.writeonly
respiratory_rate .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
সেটিংস .settings.readonly
.settings.writeonly
ঘুম সংক্রান্ত ডেটা .sleep.readonly
.sleep.writeonly
তাপমাত্রা .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
ওজন সংক্রান্ত ডেটা .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

ডেটার প্রকার

এখানে Google Health API ডেটার প্রকারের তালিকা এবং কীভাবে সেগুলি Fitbit Web API-তে ম্যাপ করা হয় তা দেওয়া হল।

টেবিল: Fitbit Web API থেকে Google Health API ডেটা টাইপ ম্যাপিং
Fitbit Web API ডেটার ধরন Google Health API ডেটার ধরন
  dataType
বিবরণ
অ্যাক্টিভিটি ক্যালোরি অ্যাক্টিভ এনার্জি বার্ন হয়েছে
  active-energy-burned
অ্যাক্টিভ পিরিয়ডে খরচ হওয়া ক্যালোরি দেখায়, যার মধ্যে ওই পিরিয়ডের BMR অন্তর্ভুক্ত। Google Health API-তে, active-energy-burned ডেটা টাইপে (যা বেসাল রেট বাদ দিয়ে শুধুমাত্র অ্যাক্টিভিটি-বার্ন ট্র্যাক করে) BMR যোগ করে এটি আবার তৈরি করা যেতে পারে।
অ্যাক্টিভ জোন মিনিট অ্যাক্টিভ জোন মিনিট
  active-zone-minutes
ব্যবহারকারীর অ্যাক্টিভিটি লেভেলে পরিবর্তন অন্তর্ভুক্ত করে অ্যাক্টিভিটি লেভেল
  activity-level
নির্দিষ্ট সময়সীমা জুড়ে ব্যবহারকারীর অ্যাক্টিভিটি লেভেল (যেমন, বসে থাকা বা অ্যাক্টিভ) ক্যাপচার করে।
উচ্চতা উচ্চতা
  altitude
অ্যাক্টিভিটি caloriesBMR বিশ্রামকালে খরচ হওয়া ক্যালোরি
  basal-energy-burned
নির্দিষ্ট সময়সীমা জুড়ে বেসাল মেটাবলিক রেটের (BMR) কারণে বার্ন হওয়া ক্যালোরি।
ব্লাড গ্লুকোজ ব্লাড গ্লুকোজ
  blood-glucose
শরীরে থাকা ফ্যাট সংক্রান্ত ডেটা শরীরের চর্বি
  body-fat
প্রতিটি হার্ট রেট জোনে caloriesOut হার্ট রেট জোনে ক্যালোরি
  calories-in-heart-rate-zone
তাপমাত্রা (মূল) শরীরের মূল তাপমাত্রা
  core-body-temperature
HRV-এর সারাংশ দৈনিক হার্ট রেটের তারতম্য
  daily-heart-rate-variability
SpO2-এর সারাংশ দৈনিক অক্সিজেন স্যাচুরেশন
  daily-oxygen-saturation
যাচাই করা ঘুমের পরিমাপ থেকে গণনা করা রক্তে অক্সিজেন স্যাচুরেশনের মাত্রা (SpO2) পরিসংখ্যানের দৈনিক সারসংক্ষেপ।
বিশ্রামকালীন হার্ট রেট সংক্রান্ত ডেটা দৈনিক বিশ্রামকালীন হার্ট রেট
  daily-resting-heart-rate
শরীরের তাপমাত্রার ডেটা দৈনিক ঘুমের তাপমাত্রার পরিবর্তন
  daily-sleep-temperature-derivations
দূরত্ব দূরত্ব
  distance
ইলেকট্রোকার্ডিওগ্রাম (ECG) ইলেকট্রোকার্ডিওগ্রাম (ECG)
  electrocardiogram
রেকর্ড করা অ্যাক্টিভিটি ব্যায়াম
  exercise
রেকর্ড করা ওয়ার্কআউট বা এক্সারসাইজ সেশন, যার মধ্যে শুরু/শেষের সময়, অ্যাক্টিভিটির ধরন ও সেশন মেট্রিক অন্তর্ভুক্ত।
ফ্লোর ফ্লোর
  floors
খাবার খাবার
  food
খাবার পরিমাপের ইউনিট খাবার পরিমাপের ইউনিট
  food-measurement-unit
হার্ট রেট হার্ট রেট
  heart-rate
HRV ইন্ট্রাডে হার্ট রেটের তারতম্য
  heart-rate-variability
অনিয়মিত রিদম সংক্রান্ত বিজ্ঞপ্তি (IRN) অনিয়মিত রিদম সংক্রান্ত বিজ্ঞপ্তি
  irregular-rhythm-notification
খাবারের লগ পুষ্টি সংক্রান্ত লগ
  nutrition-log
SpO2 ইন্ট্রাডে অক্সিজেন স্যাচুরেশন
  oxygen-saturation
শুধুমাত্র যাচাই করা মিনিট-লেভেল SpO2 পরিমাপ দেখায় এবং মোশন আর্টিফ্যাক্ট বা কম সেন্সর কনফিডেন্সের কারণে ভুল হিসেবে ফ্ল্যাগ করা রিডিং বাদ দেয়। Fitbit Web API শুধুমাত্র ৫০% সেন্টিনেল ভ্যালু বাদ দেয়, তাই Google Health API একই সময়সীমার জন্য কম ডেটা পয়েন্ট দেখায়। আরও তথ্যের জন্য, অক্সিজেন স্যাচুরেশন ফিল্টারিং দেখুন।
ব্যবহারকারী দৌড়ানোর সময় VO2 ম্যাক্স ভ্যালু দৌড়ানোর VO2 ম্যাক্স
  run-vo2-max
অ্যাক্টিভিটি টাইম সিরিজ মিনিট অলস বসে থাকার সময়সীমা
  sedentary-period
ঘুম ঘুম
  sleep
ধাপ ধাপ
  steps
অ্যাক্টিভিটি টাইম সিরিজ সাঁতারের স্ট্রোক সাঁতারের ল্যাপ সংক্রান্ত ডেটা
  swim-lengths-data
অ্যাক্টিভিটি caloriesOut মোট ক্যালোরি
  total-calories
একটি নির্দিষ্ট সময়সীমার মধ্যে ব্যবহারকারীর খরচ করা ক্যালোরির সম্পূর্ণ সংখ্যা, যার মধ্যে বেসাল মেটাবলিক রেট এবং অ্যাক্টিভ এনার্জি খরচ হওয়া অন্তর্ভুক্ত।
VO2 ম্যাক্স ভ্যালু VO2 ম্যাক্স
  vo2-max
ওজন ওজন
  weight

গণনা

Google Health API-তে ম্যাপিং ও নিয়ম Fitbit Web API-এর থেকে আলাদা।

অক্সিজেন স্যাচুরেশন ফিল্টার করা

মিনিট-লেভেল ব্লাড অক্সিজেন স্যাচুরেশনের মাত্রা (oxygen-saturation) কোয়েরি করার সময়, Google Health API, লিগ্যাসি Fitbit Web API-এর তুলনায় আরও কঠোর ডেটা বৈধতা ফিল্টারিং প্রয়োগ করে:

  • পুরনো Fitbit Web API (v1 এবং v3) শুধুমাত্র ৫০% সেন্টিনেল ভ্যালু সহ SpO2 স্যাম্পেল বাদ দেয়।
  • Google Health API (v4) যাচাইকরণ অ্যালগরিদম দ্বারা অবৈধ হিসেবে ফ্ল্যাগ করা সমস্ত SpO2 স্যাম্পেল বাদ দেয়। হাত নড়াচড়া করলে বা কব্জিতে ডিভাইসটি ঢিলেঢালাভাবে পরলে, অপটিক্যাল সেন্সর সিগন্যাল নির্ভরযোগ্য হয় না, কনফিডেন্স স্কোর ৫০%-এর নিচে নেমে গেলে, ভুল রিডিংয়ের ঠিক ৩ মিনিট আগে ও পরে অথবা সঠিক রিডিং টানা ৪ মিনিটের কম সময় ধরে চললে, সেই মিনিটকে ভুল হিসেবে চিহ্নিত করা হয়।

Google Health API শুধুমাত্র ৫০% সেন্টিনেল ভ্যালু নয়, বরং সব ভুল পরিমাপ সরিয়ে দেয়, তাই এটি একই সময়সীমার জন্য Fitbit Web API-এর তুলনায় কম oxygen-saturation ডেটা পয়েন্ট দেখায় এবং মিনিট-বাই-মিনিট কভারেজে ফাঁক থাকা প্রত্যাশিত। ফেরত আসা মিনিট-লেভেল রিডিং ব্যবহারকারীর daily-oxygen-saturation স্লিপ সামারি গণনা করার জন্য ব্যবহৃত যাচাইকৃত ডেটা পয়েন্টের সাথে সামঞ্জস্যপূর্ণ। আরও তথ্যের জন্য, মিনিট-লেভেল SpO2 ফিল্টারিং ও ডেটা বৈধতা দেখুন।

অ্যাক্টিভিটি লেভেল, MET ও স্টেপ থ্রেশহোল্ড

Google Health API-তে, ব্যবহারকারীর প্রতি মিনিটের অ্যাক্টিভিটি লেভেল তার মেটাবলিক ইকুইভ্যালেন্ট অফ টাস্ক (MET) এবং স্টেপ কাউন্ট থেকে পাওয়া যায়।

অ্যাক্টিভিটি লেভেল হার্ট রেট ডিভাইস হার্ট রেট পরিমাপ করে না এমন ডিভাইস
বসে থাকা ≤ ১.৫ METs ≤ ১.৫ METs
হালকা অ্যাক্টিভ > ১.৫ MET এবং ≤ ৪.২ MET > ১.৫ MET এবং ≤ ৩.৫ MET
মোটামুটি অ্যাক্টিভ > ৪.২ MET এবং < ৬.০ MET
(খুব অ্যাক্টিভ থাকার শর্ত পূরণ না হলে)
> ৩.৫ MET এবং < ৬.০ MET
(খুব অ্যাক্টিভ থাকার শর্ত পূরণ না হলে)
খুব অ্যাক্টিভ ≥ ৬.০ METs, অথবা ≥ ৫.০ METs, যেখানে প্রতি মিনিটে ১৫০ বা তার বেশি পা হাঁটার হার রয়েছে ≥ ৬.০ METs, অথবা ≥ ৫.০ METs, যেখানে প্রতি মিনিটে ১৫০ বা তার বেশি পা হাঁটার হার রয়েছে

অ্যাক্টিভ মিনিটে MODERATELY_ACTIVE এবং VERY_ACTIVE মিনিট একসাথে থাকে। তবে, অত্যন্ত অ্যাক্টিভ মিনিট তখনই ক্রেডিট করা হয় যখন এটি অন্তত ১০ মিনিটের একটানা স্ট্রিকের মধ্যে ঘটে, যেখানে কম অ্যাক্টিভিটির জন্য সর্বাধিক ২ মিনিটের গ্যাপ অনুমোদিত।

বসে থাকার সময় ও ঘুম

বসে থাকার সময়সীমার মধ্যে ঘুমের সময় অন্তর্ভুক্ত নয়। দৈনিক রোলআপে, দিনের মোট মিনিট (১,৪৪০ মিনিট) থেকে ঘুমের মিনিট এবং অ্যাক্টিভ মিনিট (হালকা অ্যাক্টিভ, মাঝারি অ্যাক্টিভ এবং খুব অ্যাক্টিভ) বিয়োগ করে অলস মিনিট গণনা করা হয়:

Sedentary Minutes = 1440 - Sleep Minutes - Lightly Active Minutes - Moderately Active Minutes - Very Active Minutes

বডি মাস ইনডেক্স (BMI)

Google Health API-তে বিল্ট-ইন BMI ডেটার ধরন দেখানো হয় না, তাই অ্যাপ্লিকেশনকে অবশ্যই উচ্চতা ও ওজনের রেকর্ড ব্যবহার করে ক্লায়েন্ট-সাইডে বডি মাস ইনডেক্স হিসেব করতে হবে:

  1. ওজন ডেটা টাইপের weightGrams ফিল্ড থেকে ব্যবহারকারীর ওজন গ্রামে পুনরুদ্ধার করুন। এটি কিলোগ্রামে (১,০০০ দিয়ে ভাগ করুন) বা পাউন্ডে (৪৫৩.৫৯২৩৭ দিয়ে ভাগ করুন) কনভার্ট করুন।
  2. উচ্চতা ডেটা টাইপের heightMillimeters ফিল্ড থেকে ব্যবহারকারীর উচ্চতা মিলিমিটারে পান। এটি মিটারে (১,০০০ দিয়ে ভাগ করুন) বা ইঞ্চিতে (২৫.৪ দিয়ে ভাগ করুন) কনভার্ট করুন।
  3. BMI ভ্যালু গণনা করতে নিম্নলিখিত ফর্মুলাগুলির মধ্যে একটি ব্যবহার করুন:
    • মেট্রিক ফর্মুলা: BMI = weight (kg) / [height (m)]^2
    • ইম্পেরিয়াল ফর্মুলা: BMI = (weight (lbs) / [height (in)]^2) * 703

BMI-এর ফলাফল নিম্নলিখিত বিভাগের সাথে সম্পর্কিত:

ওজনের বিভাগ BMI রেঞ্জ
স্বাভাবিকের চেয়ে কম ওজন ১৮.৫-এর কম
স্বাস্থ্যকর ওজন ১৮.৫ থেকে ২৪.৯
অতিরিক্ত ওজন ২৫ থেকে ২৯.৯
স্থূলতা ৩০ বা তার বেশি

ব্যাসাল মেটাবলিক রেট (BMR)

বিশ্রাম নেওয়ার সময় শরীরের প্রাথমিক ক্রিয়াকলাপের জন্য প্রয়োজনীয় ন্যূনতম ক্যালোরির সংখ্যাকে বেসাল মেটাবলিক রেট (BMR) বলা হয়। Google Health API-তে কোনও বিল্ট-ইন BMR ডেটা টাইপ নেই, তাই অ্যাপ্লিকেশনকে হ্যারিস-বেনেডিক্ট ফর্মুলা ব্যবহার করে ক্লায়েন্ট-সাইডে এটি গণনা করতে হবে। আরও জানতে Wikipedia-তে Harris–Benedict সমীকরণ সংক্রান্ত নিবন্ধ দেখুন।

এই গণনা করতে:

  1. ওজন ডেটা টাইপের weightGrams ফিল্ড থেকে ব্যবহারকারীর ওজন গ্রামে পান এবং কিলোগ্রামে কনভার্ট করুন (১,০০০ দিয়ে ভাগ করুন)। পাউন্ডকে কিলোগ্রামে কনভার্ট করতে, ২.২ দিয়ে ভাগ করুন।
  2. উচ্চতা ডেটার ধরন থেকে heightMillimeters ফিল্ডে মিলিমিটারে ব্যবহারকারীর উচ্চতা পুনরুদ্ধার করুন এবং সেন্টিমিটারে কনভার্ট করুন (১০ দিয়ে ভাগ করুন)। ইঞ্চি থেকে সেন্টিমিটারে পরিবর্তন করতে, ২.৫৪ দিয়ে গুণ করুন।
  3. প্রোফাইল রিসোর্সের age ফিল্ড থেকে ব্যবহারকারীর বয়স বছরে পুনরুদ্ধার করুন।
  4. Google Health API এই ফিল্ড প্রকাশ করে না বলে, স্বতন্ত্রভাবে জৈবিক লিঙ্গ সংক্রান্ত তথ্য সংগ্রহ করুন (যেমন, ব্যবহারকারীকে প্রম্পট করে বা আপনার নিজস্ব ডেটাবেসে এটি বজায় রেখে)।
  5. ব্যবহারকারীর জৈবিক লিঙ্গের উপর ভিত্তি করে নিম্নলিখিত ফর্মুলাগুলির মধ্যে একটি ব্যবহার করুন:
    • পুরুষ: BMR = 66 + (13.7 x weight_kg) + (5 x height_cm) - (6.8 x age_years)
    • মহিলা: BMR = 655 + (9.6 x weight_kg) + (1.8 x height_cm) - (4.7 x age_years)

দৈনিক মোট এনার্জি খরচ (TDEE)

দৈনিক মোট শক্তি খরচ (TDEE) হল একজন ব্যক্তি একদিনে মোট কত ক্যালোরি খরচ করেন তার একটি অনুমান, যা BMR এবং শারীরিক অ্যাক্টিভিটি উভয়কেই বিবেচনা করে। ব্যবহারকারীর TDEE অনুমান করতে, BMR ভ্যালুকে তার লাইফস্টাইলের সাথে সম্পর্কিত অ্যাক্টিভিটি ফ্যাক্টর দিয়ে গুণ করুন:

অ্যাক্টিভিটি লেভেল বিবরণ গুণক
বসে থাকা খুব কম বা কোনও ব্যায়াম নয়। BMR x 1.2
অল্প অ্যাক্টিভ প্রতি সপ্তাহে ১–৩ দিন ব্যায়াম। BMR x 1.375
মোটামুটি অ্যাক্টিভ প্রতি সপ্তাহে ৩–৫ দিন ব্যায়াম। BMR x 1.55
খুব অ্যাক্টিভ প্রতি সপ্তাহে ৬–৭ দিন ব্যায়াম। BMR x 1.725
অতিরিক্ত অ্যাক্টিভ খুব কঠিন এক্সারসাইজ বা শারীরিক পরিশ্রমের কাজ। BMR x 1.9

এন্ডপয়েন্ট

REST এন্ডপয়েন্ট সব ধরনের ডেটার জন্য একই ধরনের সিনট্যাক্স ব্যবহার করে।

  • পরিষেবা এন্ডপয়েন্ট: বেস HTTP URL পরিবর্তন হয়ে https://health.googleapis.com হয়ে যায়।
  • এন্ডপয়েন্ট সিনট্যাক্স: Google Health API সীমিত সংখ্যক এন্ডপয়েন্ট সাপোর্ট করে, যা বেশিরভাগ সাপোর্টেড ডেটার ধরন ব্যবহার করতে পারে। এটি সব ধরনের ডেটার জন্য সামঞ্জস্যপূর্ণ সিনট্যাক্স প্রদান করে এবং এন্ডপয়েন্ট ব্যবহার করা আরও সহজ করে তোলে।
  • ব্যবহারকারীর আইডি: এন্ডপয়েন্ট সিনট্যাক্সে ব্যবহারকারীর আইডি অথবা me উল্লেখ করতে হবে। আমাকে ব্যবহার করার সময়, অ্যাক্সেস টোকেন থেকে ব্যবহারকারীর আইডি অনুমান করা হয়।

উদাহরণ: এখানে Google Health API ব্যবহার করে কল করা GET Profile এন্ডপয়েন্টের একটি উদাহরণ দেওয়া হল

GET https://health.googleapis.com/v4/users/me/profile

এন্ডপয়েন্ট ম্যাপিং

উপলভ্য ডেটার ধরন এবং সেগুলি যে API পদ্ধতি সমর্থন করে তার একটি তালিকার জন্য Google Health API ডেটার ধরন টেবিল দেখুন।

Fitbit Web API এন্ডপয়েন্টের ধরন Google Health API
GET (লগ | সারসংক্ষেপ | দৈনিক সারসংক্ষেপ) যেখানে আপনি একটি দিনের ডেটার জন্য অনুরোধ করছেন windowSizeDays: 1-এর সাথে dailyRollUpটি পদ্ধতি (POST .../dataPoints:dailyRollUp)
GET (ইন্ট্রাডে) যেখানে আপনি গ্র্যানুলার ডেটার জন্য অনুরোধ করছেন listটি পদ্ধতি
তারিখ বা ইন্টারভাল অনুযায়ী GET (টাইম সিরিজ) তারিখের রেঞ্জ সহ rollUp বা dailyRollUp পদ্ধতি
GET (লগ তালিকা) listটি পদ্ধতি
লগ তৈরি ও আপডেট করুন patchটি পদ্ধতি
লগ মুছুন batchDeleteটি পদ্ধতি
প্রোফাইল পান users.getProfile ব্যবহারকারীর নির্দিষ্ট তথ্য রিটার্ন করে
users.getSettings ব্যবহারকারীর ইউনিট ও টাইমজোন রিটার্ন করে
প্রোফাইল আপডেট করুন users.updateProfile ব্যবহারকারীর নির্দিষ্ট তথ্য পরিবর্তন করে
users.updateSettings ব্যবহারকারীর ইউনিট এবং টাইমজোন পরিবর্তন করে
ব্যবহারকারীর আইডি পান users.getIdentity ব্যবহারকারীর Fitbit লিগ্যাসি ও Google ব্যবহারকারীর আইডি ফিরিয়ে দেয়।
ডিভাইস পান users.pairedDevices পেয়ার করা ডিভাইসের তালিকা দেখায়
সাবস্ক্রিপশন তৈরি করুন projects.subscribers.subscriptions.create ম্যানুয়ালি সাবস্ক্রিপশন তৈরি করে
সাবস্ক্রিপশন মুছুন projects.subscribers.subscriptions.delete সাবস্ক্রিপশন মুছে দিন
সাবস্ক্রিপশনের তালিকা পান projects.subscribers.subscriptions.list সব সাবস্ক্রিপশনের তালিকা দেখায়