פיתוח חוויות שינה באמצעות Google Health API

ממשק Google Health API מספק סוגי נתונים שעוקבים אחרי דפוסי השינה של המשתמש, כולל משך השינה, איכות השינה ומדדים פיזיולוגיים בזמן מנוחה. המדדים האלה עוזרים לאפליקציות לספק תובנות לגבי התאוששות, היגיינת שינה ומגמות בריאותיות לטווח ארוך.

מדדים פיזיולוגיים כמו שונות קצב הלב (HRV), רמת החמצן בדם (SpO2) וקצב הנשימה נרשמים במיוחד במהלך השינה, כי הגוף נמצא במצב יציב של מנוחה. ה-API מאפשר לתעד נתונים בסיסיים על הבריאות האוטונומית והנשימתית של המשתמש ללא הפרעות של גורמי לחץ במהלך היום, פעילות גופנית או תנאים סביבתיים משתנים.

חשוב להבין את ההבדלים בין סוגי הנתונים האלה כדי לקבוע אילו מדדים מתאימים לאפליקציה שלכם.

סוגי נתונים נתמכים

ה-API תומך בסוגי הנתונים הבאים למדידת שינה:

טבלה: סוגי נתוני השינה ב-Google Health API
סוג הנתונים פעולות
זמינות
היקף
Daily Heart Rate Variability
dataType: daily-heart-rate-variability
filter parameter: daily_heart_rate_variability
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Oxygen Saturation
dataType: daily-oxygen-saturation
filter parameter: daily_oxygen_saturation
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
קצב נשימה יומי
dataType: daily-respiratory-rate
filter parameter: daily_respiratory_rate
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Sleep Temperature Derivations
dataType: daily-sleep-temperature-derivations
filter parameter: daily_sleep_temperature_derivations
סוג הרשומה: יומי

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
שונות קצב הלב
dataType: heart-rate-variability
filter parameter: heart_rate_variability
סוג הרשומה: Sample

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
רמת החמצן בדם
dataType: oxygen-saturation
filter parameter: oxygen_saturation
סוג הרשומה: Sample

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
סיכום השינה של קצב הנשימה
dataType: respiratory-rate-sleep-summary
filter parameter: respiratory_rate_sleep_summary
סוג הרשומה: Sample

מכשירים תואמים

רשימה, התאמה .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
שינה
dataType: sleep
filter parameter: sleep
סוג הרשומה: סשן

מכשירים תואמים

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly

רשומות שינה והתעוררויות קצרות

רשומת שינה (Sleep) מייצגת אירוע שינה נפרד, כמו שינה בלילה או תנומה במהלך היום. היא כוללת פירוט של שלבי שינה לא חופפים, לצד מרווחי מעבר קצרים למצב ערות שנקראים התעוררויות קצרות.

  • Sleep Session (Sleep): מייצג אירוע שינה נפרד (LIGHT, DEEP, REM, AWAKE שלבי שינה) שמחלק את ציר הזמן הרציף של השינה העיקרית.
  • התעוררויות קצרות (shortAwakenings): מעברים קצרים למצב ערות או התעוררויות שמתרחשות בזמן מנוחה. בניגוד למרווחי שלבים רגילים AWAKE (שמחלקים את ההתקדמות הרציפה של שלבי השינה שלא חופפים), התעוררויות קצרות הן פלחים נפרדים שיכולים לחפוף לשלבי שינה סמוכים. הם מספקים תצוגה מפורטת של חוסר מנוחה והתעוררויות קצרות בלי לשבש את המבנה העיקרי של שלבי השינה.

דוגמה

{
  "name": "sleeps/12345",
  "startTime": "2026-04-20T22:30:00Z",
  "endTime": "2026-04-21T06:30:00Z",
  "sleepType": "STAGES",
  "sleepStages": [
    {
      "startTime": "2026-04-20T22:30:00Z",
      "endTime": "2026-04-20T23:45:00Z",
      "type": "LIGHT"
    },
    {
      "startTime": "2026-04-20T23:45:00Z",
      "endTime": "2026-04-21T01:15:00Z",
      "type": "DEEP"
    }
  ],
  "shortAwakenings": [
    {
      "startTime": "2026-04-20T23:10:00Z",
      "endTime": "2026-04-20T23:11:30Z",
      "type": "AWAKE"
    }
  ]
}

יצירת רשומת שינה

כדי ליצור רשומת שינה, שולחים בקשת POST לנקודת הקצה sleep data points. התשובה כוללת את השדה name שמכיל את data-point-id, שאפשר להשתמש בו בבקשת Update (Patch) או Delete.

בקשה

POST https://health.googleapis.com/v4/users/me/dataTypes/sleep/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "sleep": {
    "interval": {
      "startTime": "2026-06-07T22:00:00Z",
      "startUtcOffset": "-14400s",
      "endTime": "2026-06-08T06:00:00Z",
      "endUtcOffset": "-14400s"
    },
    "type": "STAGES",
    "stages": [
      {
        "startTime": "2026-06-07T22:00:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-07T22:30:00Z",
        "endUtcOffset": "-14400s",
        "type": "LIGHT"
      },
      {
        "startTime": "2026-06-07T22:30:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-07T23:45:00Z",
        "endUtcOffset": "-14400s",
        "type": "DEEP"
      },
      {
        "startTime": "2026-06-07T23:45:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T02:15:00Z",
        "endUtcOffset": "-14400s",
        "type": "LIGHT"
      },
      {
        "startTime": "2026-06-08T02:15:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T02:45:00Z",
        "endUtcOffset": "-14400s",
        "type": "REM"
      },
      {
        "startTime": "2026-06-08T02:45:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T05:15:00Z",
        "endUtcOffset": "-14400s",
        "type": "LIGHT"
      },
      {
        "startTime": "2026-06-08T05:15:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T06:00:00Z",
        "endUtcOffset": "-14400s",
        "type": "REM"
      }
    ]
  }
}

תשובה

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/sleep/dataPoints/data-point-id",
    "sleep": {
      "interval": {
        "startTime": "2026-06-07T22:00:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T06:00:00Z",
        "endUtcOffset": "-14400s"
      },
      "type": "STAGES",
      "stages": [
        {
          "startTime": "2026-06-07T22:00:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-07T22:30:00Z",
          "endUtcOffset": "-14400s",
          "type": "LIGHT"
        },
        {
          "startTime": "2026-06-07T22:30:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-07T23:45:00Z",
          "endUtcOffset": "-14400s",
          "type": "DEEP"
        },
        {
          "startTime": "2026-06-07T23:45:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T02:15:00Z",
          "endUtcOffset": "-14400s",
          "type": "LIGHT"
        },
        {
          "startTime": "2026-06-08T02:15:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T02:45:00Z",
          "endUtcOffset": "-14400s",
          "type": "REM"
        },
        {
          "startTime": "2026-06-08T02:45:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T05:15:00Z",
          "endUtcOffset": "-14400s",
          "type": "LIGHT"
        },
        {
          "startTime": "2026-06-08T05:15:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T06:00:00Z",
          "endUtcOffset": "-14400s",
          "type": "REM"
        }
      ]
    }
  }
}

נתונים יומיים שנגזרים מטמפרטורת הגוף בזמן השינה

המדד 'שינויים בטמפרטורת העור במהלך השינה' מודד את השינויים בטמפרטורת העור של המשתמש במהלך השינה בהשוואה לנתוני הבסיס שלו. הנתונים האלה מדווחים בדרך כלל פעם ביום אחרי רשומת שינה משמעותית.

קצב הנשימה

קצב הנשימה נמדד לפי מספר הנשימות של המשתמש בדקה. במהלך השינה, זהו מדד חשוב לניטור איכות השינה והפרעות פוטנציאליות. ה-API תומך בדגימות של קצב הנשימה (respiratory-rate), בסיכומים יומיים (daily-respiratory-rate) ובסיכומי שינה ברמת הסשן (respiratory-rate-sleep-summary).

שונות קצב הלב (HRV)

שונות קצב הלב (HRV) היא מדד לשינויים במרווחי הזמן בין פעימות הלב. זהו מדד מרכזי למצב של מערכת העצבים האוטונומית. ערך גבוה של HRV במהלך השינה בדרך כלל מעיד על התאוששות טובה ועל מוכנות, בעוד שערך נמוך של HRV יכול להעיד על לחץ או על אימון יתר. ה-API תומך בדגימות של HRV ‏ (heart-rate-variability) ובסיכומים יומיים (daily-heart-rate-variability).

‫Oxygen Saturation (SpO2) (רמת החמצן בדם (סטורציה))

סטורציה מייצגת את אחוז ההמוגלובין הרווי בחמצן ביחס להמוגלובין הכולל בדם. מעקב אחר רמת החמצן בדם (SpO2) במהלך השינה חיוני כדי לזהות הפרעות נשימה פוטנציאליות ולוודא שרמות החמצן של המשתמש מספיקות לאורך הלילה. ה-API תומך בדגימות של רמת החמצן בדם (oxygen-saturation) ובסיכומים יומיים (daily-oxygen-saturation).

תמונה הוליסטית של בריאות השינה וההתאוששות

כל מדד מספק תובנות ספציפיות, אבל יש קשר הדוק בין המדדים, וביחד הם מספקים תמונה כוללת של ההתאוששות של המשתמש. שלבי השינה (שינה קלה, שינה עמוקה, שנת REM) מספקים את הבסיס המבני למנוחה, בעוד שסמנים פיזיולוגיים כמו HRV וסטורציה מצביעים על האופן שבו הגוף מגיב פיזית למנוחה הזו. לדוגמה, שינה איכותית עם שינה עמוקה אופטימלית קשורה בדרך כלל ל-HRV גבוה יותר, שמצביע על התאוששות יעילה של מערכת העצבים האוטונומית.

השילוב של הנתונים האלה עם נתונים שנגזרים מקצב הנשימה וטמפרטורת השינה מאפשר לאפליקציות לזהות הפרעות פוטנציאליות. עלייה פתאומית בקצב הנשימה או חריגה מטמפרטורת השינה יכולות להסביר למה משתמש מסוים בילה פחות זמן בשלבים של שינה משקמת. ניתוח משולב של סוגי הנתונים האלה מאפשר למפתחים לספק הערכה מקיפה של היגיינת השינה ומגמות בריאותיות לטווח ארוך.

הנחיות

כשמשלבים מדדי שינה באפליקציה, כדאי לפעול לפי ההנחיות הבאות:

  • פרטי סשן: כדי להציג את שלבי השינה של המשתמש (שינה קלה, שינה עמוקה, שנת REM, ערות) ואת ההתעוררויות הקצרות, צריך לשלוח שאילתה לגבי סוג הנתונים sleep.
  • מעקב פיזיולוגי: כדי לעקוב אחרי הבריאות בצורה מתקדמת, אפשר לשלב את נתוני רשומת השינה עם מדדים פיזיולוגיים ומדדי התאוששות כמו respiratory-rate-sleep-summary, daily-sleep-temperature-derivations, daily-heart-rate-variability ו-daily-oxygen-saturation.
  • התאמה: משתמשים בפעולה reconcile כדי לוודא שיומני שינה חופפים ממכשירים שונים (לדוגמה, מכשיר לביש וחיישן מזרן) ימוזגו לרשומה אחת של שינה.

חישוב הזמן הכולל בשינה עמוקה

כדי לחשב את הזמן הכולל שמשתמש שהה בשלב שינה עמוקה משקמת בלילה מסוים:

  1. מריצים שאילתה על סוג הנתונים sleep לטווח הזמן שצוין.
  2. חוזרים על הפעולה ברשימת השלבים ומזהים את המרווחים שבהם stageType הערך הוא DEEP.
  3. מחשבים את משך הזמן (שעת הסיום – שעת ההתחלה) של כל מרווח שינה עמוקה ומסכמים אותם.

הסכום שמתקבל הוא משך השינה העמוקה הפיזי הכולל באותו סשן.