# Prime (`prime`)

## Quick Summary


```json
{
  "$ref": "#/components/schemas/prime.v1",
  "components": {
    "schemas": {
      "code.v1": {
        "title": "Annotation Code",
        "description": "Annotation codes that appear in Tidepool diabetes data records.\nThe annotation codes are primarily intended for machine processing, but they are usually readable enough to make sense.\nThese are by convention structured as series of strings separated by slashes (`/`), in order from more general to more specific.\nFor example:\n\n  * `wrong-device-time` or `time-change`, generic annotations.\n  * `basal/unknown-duration` or `bg/out-of-range`, generic annotations around a particular theme.\n  * `medtronic/basal/flat-rate`, a manufacturer-specific annotation.\n  * `medtronic600/smbg/user-rejected-remote-bg`, a device-specific annotation.",
        "type": "string",
        "minLength": 1,
        "pattern": "^[0-9a-z\\-_]+(/[0-9a-z\\-_]+(/[0-9a-z\\-_]+)?)?$",
        "enum": [
          "animas/basal/flat-rate",
          "animas/basal/marked-suspended-from-alarm",
          "animas/bolus/extended-equal-split",
          "animas/bolus/unknown-duration",
          "animas/out-of-sequence",
          "animas/status/fabricated-from-alarm",
          "basal/auto",
          "basal/intersects-incomplete-suspend",
          "basal/mismatched-series",
          "basal/unknown-duration",
          "bg/out-of-range",
          "carelink/basal/fabricated-from-schedule",
          "carelink/basal/fabricated-from-suppressed",
          "carelink/basal/off-schedule-rate",
          "carelink/bolus/missing-square-component",
          "carelink/wizard/long-search",
          "final-basal/fabricated-from-schedule",
          "insulet/basal/fabricated-from-schedule",
          "insulet/bolus/split-extended",
          "medtronic/basal/fabricated-from-schedule",
          "medtronic/basal/flat-rate",
          "medtronic/basal/one-second-gap",
          "medtronic/basal/time-change",
          "medtronic/status/fabricated-from-device-event",
          "medtronic/wizard/carb-to-exchange-ratio-deconverted",
          "medtronic600/smbg/bg-reading-received",
          "medtronic600/smbg/bg-sent-for-calib",
          "medtronic600/smbg/bg-si-fail-result-recd-frm-gst",
          "medtronic600/smbg/bg-si-pass-result-recd-frm-gst",
          "medtronic600/smbg/entered-as-bg-marker",
          "medtronic600/smbg/entered-in-bg-entry",
          "medtronic600/smbg/entered-in-bolus-wizard",
          "medtronic600/smbg/entered-in-meal-wizard",
          "medtronic600/smbg/entered-in-sensor-calib",
          "medtronic600/smbg/remote-bg-acceptance-screen-timeout",
          "medtronic600/smbg/user-accepted-remote-bg",
          "medtronic600/smbg/user-rejected-remote-bg",
          "medtronic600/smbg/user-rejected-sensor-calib",
          "spring-forward",
          "stats-how-calculated",
          "stats-how-calculated-average-cbg",
          "stats-how-calculated-average-smbg",
          "stats-how-calculated-range-cbg",
          "stats-how-calculated-range-smbg",
          "stats-how-calculated-ratio",
          "stats-insufficient-data",
          "status/incomplete-tuple",
          "tandem/basal/fabricated-from-new-day",
          "tandem/basal/temp-without-rate-change",
          "tandem/pumpSettingsOverride/estimated-duration",
          "tandem/pumpSettingsOverride/fabricated-from-new-day",
          "time-change",
          "uncertain-timestamp",
          "wizard/target-automated",
          "wrong-device-time"
        ],
        "example": "wrong-device-time"
      },
      "bgoutofrange.v1": {
        "title": "Blood Glucose Out of Range",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "bg/out-of-range"
            ],
            "example": "bg/out-of-range"
          },
          "value": {
            "type": "string",
            "enum": [
              "low",
              "high"
            ],
            "example": "low"
          },
          "threshold": {
            "type": "number",
            "example": 40
          }
        },
        "required": [
          "code",
          "value",
          "threshold"
        ]
      },
      "annotation.v1": {
        "title": "Annotation",
        "description": "Annotation attached to the diabetes data record to provide additional information. Annotation is at minimum a `code` (string) that describes the annotation. It may also include additional properties that further describe the annotation. The maximum size is 4K bytes.",
        "type": "object",
        "allOf": [
          {
            "type": "object",
            "properties": {
              "code": {
                "$ref": "#/components/schemas/code.v1"
              }
            },
            "required": [
              "code"
            ]
          },
          {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "code": {
                    "$ref": "#/components/schemas/code.v1"
                  }
                },
                "required": [
                  "code"
                ]
              },
              {
                "$ref": "#/components/schemas/bgoutofrange.v1"
              }
            ]
          }
        ]
      },
      "annotationarray.v1": {
        "title": "Annotation Array",
        "description": "An array of annotations.",
        "type": "array",
        "uniqueItems": true,
        "minItems": 0,
        "maxItems": 100,
        "items": {
          "$ref": "#/components/schemas/annotation.v1"
        }
      },
      "datetime.v1": {
        "title": "Date/Time",
        "description": "[RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) / [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) timestamp _with_ timezone information",
        "type": "string",
        "format": "date-time",
        "example": "2017-02-06T02:37:46Z",
        "x-go-type": "string"
      },
      "datasetid.v1": {
        "title": "Data Set ID",
        "type": "string",
        "pattern": "^(upid_[0-9a-f]{12}|upid_[0-9a-f]{32}|[0-9a-f]{32})$",
        "minLength": 17,
        "maxLength": 37,
        "example": "ce8cc5f7595575945f91fc6710db6fef",
        "x-tags": [
          "Data"
        ]
      },
      "association-type.v1": {
        "title": "Association Type",
        "description": "The type of the association. If type is `blob`, `datum`, or `image`, then `id` must also be specified. If type is `url`, then url must also be specified.",
        "type": "string",
        "enum": [
          "blob",
          "datum",
          "image",
          "url"
        ],
        "example": "blob",
        "x-go-type": "string"
      },
      "reason.v1": {
        "title": "Association Reason",
        "description": "The reason for the association.",
        "type": "string",
        "minLength": 1,
        "maxLength": 1000
      },
      "association-id.v1": {
        "title": "Association ID",
        "description": "The ID of the associated Tidepool resource if type is blob, datum, or image.",
        "type": "string"
      },
      "url.v1": {
        "title": "URL",
        "description": "URL",
        "type": "string",
        "format": "uri"
      },
      "blob.v1": {
        "title": "Association (blob)",
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/association-type.v1"
          },
          "reason": {
            "$ref": "#/components/schemas/reason.v1"
          },
          "id": {
            "$ref": "#/components/schemas/association-id.v1"
          },
          "url": {
            "$ref": "#/components/schemas/url.v1"
          }
        },
        "required": [
          "type",
          "id"
        ]
      },
      "datum.v1": {
        "title": "Association (datum)",
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/association-type.v1"
          },
          "reason": {
            "$ref": "#/components/schemas/reason.v1"
          },
          "id": {
            "$ref": "#/components/schemas/association-id.v1"
          },
          "url": {
            "$ref": "#/components/schemas/url.v1"
          }
        },
        "required": [
          "type",
          "id"
        ]
      },
      "image.v1": {
        "title": "Association (image)",
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/association-type.v1"
          },
          "reason": {
            "$ref": "#/components/schemas/reason.v1"
          },
          "id": {
            "$ref": "#/components/schemas/association-id.v1"
          },
          "url": {
            "$ref": "#/components/schemas/url.v1"
          }
        },
        "required": [
          "type",
          "id"
        ]
      },
      "url-association.v1": {
        "title": "Association (url)",
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/association-type.v1"
          },
          "reason": {
            "$ref": "#/components/schemas/reason.v1"
          },
          "id": {
            "$ref": "#/components/schemas/association-id.v1"
          },
          "url": {
            "$ref": "#/components/schemas/url.v1"
          }
        },
        "required": [
          "type",
          "id",
          "url"
        ]
      },
      "association.v1": {
        "title": "Association",
        "description": "Associate this resource with another Tidepool resource ID.",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/blob.v1"
          },
          {
            "$ref": "#/components/schemas/datum.v1"
          },
          {
            "$ref": "#/components/schemas/image.v1"
          },
          {
            "$ref": "#/components/schemas/url-association.v1"
          }
        ]
      },
      "associationarray.v1": {
        "title": "Association Array",
        "description": "An array of associations for the resource.",
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/association.v1"
        }
      },
      "clockdriftoffset.v1": {
        "title": "Clock Drift Offset",
        "description": "Clock drift offset, expressed as milliseconds.",
        "type": "integer",
        "format": "int64",
        "minimum": -86400000,
        "maximum": 86400000,
        "example": 0,
        "x-tags": [
          "Data"
        ]
      },
      "conversionoffset.v1": {
        "title": "Conversion Offset",
        "description": "Conversion offset, expressed as milliseconds.",
        "type": "integer",
        "format": "int64",
        "example": 0,
        "x-tags": [
          "Data"
        ]
      },
      "tidepooluserid": {
        "type": "string",
        "title": "Tidepool User ID",
        "pattern": "^([0-9a-f]{10}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$",
        "description": "String representation of a Tidepool User ID. Old style IDs are 10-digit strings consisting of only hexadeximcal digits. New style IDs are 36-digit [UUID v4](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_(random))",
        "readOnly": true,
        "x-go-type": "string"
      },
      "semanticversion.v1": {
        "title": "Semantic Version Number",
        "description": "[Semantic Version Number 2.0.0](http://semver.org/). Regex from their [site](https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string).",
        "type": "string",
        "minLength": 5,
        "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
        "example": "2.36.1"
      },
      "reversedomainname.v1": {
        "title": "Reverse Domain Name",
        "description": "Name in the [reverse domain name notation](https://en.wikipedia.org/wiki/Reverse_domain_name_notation).",
        "type": "string",
        "pattern": "^[a-zA-Z0-9](|[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])(\\.[a-zA-Z0-9](|[a-zA-Z0-9-]{0,61}[a-zA-Z0-9]))+$",
        "example": "org.tidepool.uploader"
      },
      "deduplicatordescriptor.v1": {
        "title": "Deduplicator Descriptor",
        "type": "object",
        "properties": {
          "hash": {
            "type": "string",
            "minLength": 1
          },
          "version": {
            "$ref": "#/components/schemas/semanticversion.v1"
          },
          "name": {
            "$ref": "#/components/schemas/reversedomainname.v1"
          }
        },
        "required": [
          "name",
          "version"
        ],
        "x-tags": [
          "Data"
        ]
      },
      "deviceid.v1": {
        "title": "Device ID",
        "description": "Globally unique to device and repeatable with each upload, e.g. device make and model with serial number",
        "type": "string",
        "minLength": 1,
        "example": "MMT-1711:12345678",
        "x-tags": [
          "Data"
        ]
      },
      "datetimenotz.v1": {
        "title": "Date/Time without Timezone",
        "description": "[RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) / [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) timestamp _without_ timezone information",
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$",
        "example": "2017-02-06T02:37:46",
        "x-go-type": "string"
      },
      "jsonpatch.v1": {
        "title": "JSONPatch",
        "oneOf": [
          {
            "properties": {
              "op": {
                "type": "string",
                "description": "The operation to perform.",
                "enum": [
                  "add",
                  "replace",
                  "test"
                ]
              },
              "path": {
                "type": "string",
                "description": "A JSON Pointer path."
              },
              "value": {
                "description": "The value to add, replace or test."
              }
            },
            "required": [
              "op",
              "path",
              "value"
            ]
          },
          {
            "properties": {
              "op": {
                "type": "string",
                "description": "The operation to perform.",
                "enum": [
                  "remove"
                ]
              },
              "path": {
                "type": "string",
                "description": "A JSON Pointer path."
              }
            },
            "required": [
              "op",
              "path"
            ]
          },
          {
            "properties": {
              "op": {
                "type": "string",
                "description": "The operation to perform.",
                "enum": [
                  "move",
                  "copy"
                ]
              },
              "from": {
                "description": "A JSON Pointer path pointing to the location to move/copy from.",
                "type": "string"
              },
              "path": {
                "type": "string",
                "description": "A JSON Pointer path."
              }
            },
            "required": [
              "op",
              "from",
              "path"
            ]
          }
        ],
        "type": "object",
        "description": "Only have this here because Stoplight doesn't seem to like using the JSONSchema directly as a ref from http://json.schemastore.org/json-patch"
      },
      "eventhistory.v1": {
        "title": "Event History [Proposed]",
        "description": "Revision history of the event",
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "time": {
              "$ref": "#/components/schemas/datetime.v1"
            },
            "changes": {
              "$ref": "#/components/schemas/jsonpatch.v1"
            }
          },
          "required": [
            "time",
            "changes"
          ]
        },
        "x-tags": [
          "Data"
        ]
      },
      "origin-id.v1": {
        "title": "Origin ID",
        "description": "Any external identifier uniquely identifying the resource at the origin source.",
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      },
      "name.v1": {
        "title": "Origin Name",
        "description": "A human-readable name for the origin source.",
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      },
      "payload.v1": {
        "title": "Payload",
        "description": "Grab bag field for data that isn't yet part of the data model. The maximum size is 4K bytes.",
        "type": "object",
        "additionalProperties": true
      },
      "origin-type.v1": {
        "title": "Origin Type",
        "description": "The type of the origin source.",
        "type": "string",
        "enum": [
          "application",
          "device",
          "manual",
          "service"
        ],
        "example": "device"
      },
      "version.v1": {
        "title": "Origin Version",
        "description": "The version of the origin source at the time the resources was obtained.",
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      },
      "origin.v1": {
        "title": "Origin",
        "description": "External origin information for the source of the resource.",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/origin-id.v1"
          },
          "name": {
            "$ref": "#/components/schemas/name.v1"
          },
          "payload": {
            "$ref": "#/components/schemas/payload.v1"
          },
          "time": {
            "$ref": "#/components/schemas/datetime.v1"
          },
          "type": {
            "$ref": "#/components/schemas/origin-type.v1"
          },
          "version": {
            "$ref": "#/components/schemas/version.v1"
          }
        },
        "required": [
          "id",
          "name",
          "time",
          "type",
          "version"
        ]
      },
      "longitude.v1": {
        "title": "Longitude",
        "description": "The prime meridian, which passes near the Royal Observatory, Greenwich, England, is defined as 0° longitude by convention. Positive longitudes are east of the prime meridian, and negative ones are west.",
        "type": "object",
        "properties": {
          "units": {
            "type": "string",
            "enum": [
              "degrees"
            ],
            "example": "degrees"
          },
          "value": {
            "type": "number",
            "format": "double",
            "minimum": -180,
            "maximum": 180,
            "example": -122.1625595
          }
        },
        "required": [
          "units",
          "value"
        ]
      },
      "latitude.v1": {
        "title": "Latitude",
        "description": "Latitude is an angle which ranges from -90° at the South pole to 0° at the Equator to 90° at the North pole.",
        "type": "object",
        "properties": {
          "units": {
            "type": "string",
            "enum": [
              "degrees"
            ],
            "example": "degrees"
          },
          "value": {
            "type": "number",
            "format": "double",
            "minimum": -90,
            "maximum": 90,
            "example": 37.4454404
          }
        },
        "required": [
          "units",
          "value"
        ]
      },
      "meters.v1": {
        "title": "Accuracy (meters)",
        "description": "Accuracy of a measurement, expressed as meters.",
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "maximum": 1000,
            "example": 42
          },
          "units": {
            "type": "string",
            "enum": [
              "meters"
            ],
            "example": "meters"
          }
        },
        "required": [
          "units"
        ]
      },
      "accuracy-feet.v1": {
        "title": "Accuracy (feet)",
        "description": "Accuracy of a measurement, expressed in `feet`.",
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "maximum": 3280,
            "example": 42
          },
          "units": {
            "type": "string",
            "enum": [
              "feet"
            ],
            "example": "feet"
          }
        },
        "required": [
          "units"
        ]
      },
      "accuracy.v1": {
        "title": "Accuracy",
        "description": "Accuracy of a measurement",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/meters.v1"
          },
          {
            "$ref": "#/components/schemas/accuracy-feet.v1"
          }
        ]
      },
      "floor.v1": {
        "title": "Floor",
        "type": "integer",
        "format": "int32",
        "minimum": -1000,
        "maximum": 1000
      },
      "elevation-meters.v1": {
        "title": "Elevation (meters)",
        "type": "object",
        "properties": {
          "units": {
            "type": "string",
            "enum": [
              "meters"
            ],
            "example": "meters"
          },
          "value": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "maximum": 10000,
            "example": 42
          }
        },
        "required": [
          "units",
          "value"
        ]
      },
      "elevation-feet.v1": {
        "title": "Elevation (feet)",
        "type": "object",
        "properties": {
          "units": {
            "type": "string",
            "enum": [
              "feet"
            ],
            "example": "feet"
          },
          "value": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "maximum": 32808,
            "example": 42
          }
        },
        "required": [
          "units",
          "value"
        ]
      },
      "elevation.v1": {
        "title": "Elevation",
        "description": "Elevation, expressed as `meters` or `feet`.",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/elevation-meters.v1"
          },
          {
            "$ref": "#/components/schemas/elevation-feet.v1"
          }
        ]
      },
      "gps.v1": {
        "title": "GPS",
        "description": "GPS coordinates and related information.",
        "type": "object",
        "properties": {
          "origin": {
            "$ref": "#/components/schemas/origin.v1"
          },
          "longitude": {
            "$ref": "#/components/schemas/longitude.v1"
          },
          "latitude": {
            "$ref": "#/components/schemas/latitude.v1"
          },
          "horizontalAccuracy": {
            "$ref": "#/components/schemas/accuracy.v1"
          },
          "verticalAccuracy": {
            "$ref": "#/components/schemas/accuracy.v1"
          },
          "floor": {
            "$ref": "#/components/schemas/floor.v1"
          },
          "elevation": {
            "$ref": "#/components/schemas/elevation.v1"
          }
        },
        "required": [
          "longitude",
          "latitude"
        ]
      },
      "location.v1": {
        "title": "Location",
        "type": "object",
        "description": "Location information associated with the resource. One or both of `name` and `gps` must be specified.",
        "properties": {
          "name": {
            "type": "string",
            "description": "A name for the location.",
            "minLength": 1,
            "maxLength": 100
          },
          "gps": {
            "$ref": "#/components/schemas/gps.v1"
          }
        }
      },
      "note.v1": {
        "title": "Note",
        "description": "A note associated with the resource.",
        "type": "string",
        "minLength": 1,
        "maxLength": 1000
      },
      "notearray.v1": {
        "title": "Note Array",
        "description": "An array of 1 to 100 notes.",
        "type": "array",
        "minItems": 1,
        "maxItems": 100,
        "items": {
          "$ref": "#/components/schemas/note.v1"
        }
      },
      "tag.v1": {
        "title": "Tag",
        "description": "A tag associated with the resource.",
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      },
      "tagarray.v1": {
        "title": "Tag Array",
        "description": "An array of tags.",
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/tag.v1"
        }
      },
      "timezonename.v1": {
        "title": "Time Zone",
        "description": "A string timezone name from the [IANA timezone database](https://www.iana.org/time-zones)",
        "type": "string",
        "example": "Europe/London",
        "x-tags": [
          "Data"
        ]
      },
      "timezoneoffset.v1": {
        "title": "Time Zone offset",
        "description": "Time zone offset, expressed as positive or negative number of minutes from UTC.",
        "type": "integer",
        "format": "int32",
        "minimum": -10080,
        "maximum": 10080,
        "example": -420,
        "x-tags": [
          "Data"
        ]
      },
      "datatype.v1": {
        "title": "Tidepool Data Type",
        "description": "Data type",
        "type": "string",
        "enum": [
          "alert",
          "basal",
          "bloodKetone",
          "bolus",
          "cbg",
          "cgmSettings",
          "controllerSettings",
          "controllerStatus",
          "deviceEvent",
          "deviceStatus",
          "dosingDecision",
          "food",
          "insulin",
          "physicalActivity",
          "pumpSettings",
          "pumpStatus",
          "reportedState",
          "smbg",
          "upload",
          "water",
          "wizard"
        ],
        "example": "upload",
        "x-tags": [
          "Data"
        ]
      },
      "uploadid.v1": {
        "title": "Upload ID",
        "description": "An upload identifier; this field should be the uploadId of the corresponding upload record",
        "type": "string",
        "pattern": "^([0-9a-f]{32}|upid_[0-9a-f]{12})$",
        "minLength": 17,
        "maxLength": 32,
        "example": "0d92d5c1c22117a18f3620b9e24d3c06",
        "x-tags": [
          "Data"
        ]
      },
      "base.v1": {
        "title": "Base",
        "description": "An abstract base data type for all Tidepool diabetes data objects.",
        "type": "object",
        "properties": {
          "annotations": {
            "$ref": "#/components/schemas/annotationarray.v1"
          },
          "archivedTime": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datetime.v1"
              }
            ],
            "readOnly": true
          },
          "archivedDatasetId": {
            "$ref": "#/components/schemas/datasetid.v1"
          },
          "associations": {
            "$ref": "#/components/schemas/associationarray.v1"
          },
          "clockDriftOffset": {
            "$ref": "#/components/schemas/clockdriftoffset.v1"
          },
          "conversionOffset": {
            "$ref": "#/components/schemas/conversionoffset.v1"
          },
          "createdTime": {
            "$ref": "#/components/schemas/datetime.v1"
          },
          "createdUserId": {
            "$ref": "#/components/schemas/tidepooluserid"
          },
          "deduplicator": {
            "$ref": "#/components/schemas/deduplicatordescriptor.v1"
          },
          "deletedTime": {
            "$ref": "#/components/schemas/datetime.v1"
          },
          "deletedUserId": {
            "$ref": "#/components/schemas/tidepooluserid"
          },
          "deviceId": {
            "$ref": "#/components/schemas/deviceid.v1"
          },
          "deviceTime": {
            "$ref": "#/components/schemas/datetimenotz.v1"
          },
          "guid": {
            "type": "string",
            "description": "A string ID. Added to each event during data processing in the Tidepool Uploader or upon ingestion by the platform data ingestion service.",
            "deprecated": true
          },
          "history": {
            "$ref": "#/components/schemas/eventhistory.v1"
          },
          "id": {
            "$ref": "#/components/schemas/datasetid.v1"
          },
          "location": {
            "$ref": "#/components/schemas/location.v1"
          },
          "modifiedTime": {
            "$ref": "#/components/schemas/datetime.v1"
          },
          "modifiedUserId": {
            "$ref": "#/components/schemas/tidepooluserid"
          },
          "notes": {
            "$ref": "#/components/schemas/notearray.v1"
          },
          "origin": {
            "$ref": "#/components/schemas/origin.v1"
          },
          "payload": {
            "$ref": "#/components/schemas/payload.v1"
          },
          "source": {
            "type": "string",
            "enum": [
              "carelink"
            ]
          },
          "tags": {
            "$ref": "#/components/schemas/tagarray.v1"
          },
          "time": {
            "$ref": "#/components/schemas/datetime.v1"
          },
          "timezone": {
            "$ref": "#/components/schemas/timezonename.v1"
          },
          "timezoneOffset": {
            "$ref": "#/components/schemas/timezoneoffset.v1"
          },
          "type": {
            "$ref": "#/components/schemas/datatype.v1"
          },
          "uploadId": {
            "$ref": "#/components/schemas/uploadid.v1"
          }
        },
        "required": [
          "id",
          "type",
          "time"
        ],
        "x-tags": [
          "Data"
        ]
      },
      "deviceevent-subtype.v1": {
        "title": "Device Event Sub Type",
        "type": "string",
        "enum": [
          "alarm",
          "calibration",
          "prime",
          "pumpSettingsOverride",
          "reservoirChange",
          "sensorEvent",
          "settingsChange",
          "status",
          "timeChange",
          "transmitterEvent"
        ]
      },
      "event.v1": {
        "title": "Device Event",
        "description": "An abstract base data type for all device events.",
        "allOf": [
          {
            "$ref": "#/components/schemas/base.v1"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "deviceEvent"
                ]
              },
              "subType": {
                "$ref": "#/components/schemas/deviceevent-subtype.v1"
              }
            }
          }
        ],
        "required": [
          "subType",
          "type"
        ],
        "x-tags": [
          "Data"
        ]
      },
      "primecannula.v1": {
        "title": "Cannula Prime Event",
        "description": "A cannula prime event.",
        "allOf": [
          {
            "$ref": "#/components/schemas/event.v1"
          },
          {
            "type": "object",
            "properties": {
              "primeTarget": {
                "type": "string",
                "enum": [
                  "cannula"
                ]
              },
              "subType": {
                "type": "string",
                "enum": [
                  "prime"
                ]
              },
              "volume": {
                "type": "number",
                "format": "float",
                "minimum": 0,
                "maximum": 10
              }
            }
          }
        ],
        "required": [
          "primeTarget",
          "subType",
          "volume"
        ],
        "x-tags": [
          "Data"
        ]
      },
      "primetubing.v1": {
        "title": "Tubing Prime Event",
        "description": "A tubing prime event.",
        "allOf": [
          {
            "$ref": "#/components/schemas/event.v1"
          },
          {
            "type": "object",
            "properties": {
              "primeTarget": {
                "type": "string",
                "enum": [
                  "tubing"
                ]
              },
              "subType": {
                "type": "string",
                "enum": [
                  "prime"
                ]
              },
              "volume": {
                "type": "number",
                "format": "float",
                "minimum": 0,
                "maximum": 100
              }
            }
          }
        ],
        "required": [
          "primeTarget",
          "subType",
          "volume"
        ],
        "x-tags": [
          "Data"
        ]
      },
      "prime.v1": {
        "title": "Device Prime Event",
        "description": "An insulin pump prime event.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/primecannula.v1"
          },
          {
            "$ref": "#/components/schemas/primetubing.v1"
          }
        ],
        "x-tags": [
          "Data"
        ]
      }
    }
  }
}
```

## Sub-Type (`subType`)

The prime sub-type of device event represents a user's "priming" of either an insulin infusion line (used with traditional insulin pumps) or an insulin delivery cannula (used in tubeless patch pumps and some traditional pumps).

To "prime" an infusion line or cannula is to fill it with insulin either:

* While disconnected from the user
* Or, in preparation for a site or reservior change


The priming process removes any air from the tubing or cannula to ensure seamless insulin delivery.

## Prime Target (`primeTarget`)

The prime target field identifies the object of the priming action — "tubing" for an infusion line prime or "cannula" for a cannula prime.

Most commonly, tubing and cannula prime events will occur as a pair separated only by seconds or minutes. However, many combinations of prime events are possible. For example, no priming events appear in an  OmniPod's data, as the device primes automatically without notifying the user.

Among traditional pump users, priming behavior varies considerably. Those who use steel cannulas must prime the cannula and tubing simultaneously, as the steel cannula and infusion line are inseparable. In this case, only tubing primes will appear in the data. Other insulin pump users can change the infusion site independently (without changing the insulin reservoir), causing a cannula prime to appear *without* a tubing prime.

## Volume (`volume`)

Where available in the data, the volume of a priming event should be included to measure insulin expended from the priming action.

## Examples


```json Example (client)
{
    "type": "deviceEvent",
    "subType": "prime",
    "primeTarget": "cannula",
    "volume": "0.5",
    "clockDriftOffset": 0,
    "conversionOffset": 0,
    "deviceId": "DevId0987654321",
    "deviceTime": "2018-05-14T18:17:08",
    "guid": "7637c7b9-6286-4f93-8953-d619e42cb1a5",
    "id": "bfc3e597e16c436a94a03d7fd095a774",
    "time": "2018-05-14T08:17:08.276Z",
    "timezoneOffset": 600,
    "uploadId": "SampleUploadId"
}
```


```json Example (ingestion)
{
    "type": "deviceEvent",
    "subType": "prime",
    "primeTarget": "tubing",
    "volume": 12,
    "clockDriftOffset": 0,
    "conversionOffset": 0,
    "deviceId": "DevId0987654321",
    "deviceTime": "2018-05-14T18:17:08",
    "time": "2018-05-14T08:17:08.276Z",
    "timezoneOffset": 600,
    "uploadId": "SampleUploadId"
}
```


```json Example (storage)
{
    "type": "deviceEvent",
    "subType": "prime",
    "primeTarget": "tubing",
    "volume": 15.3,
    "_active": true,
    "_groupId": "abcdef",
    "_schemaVersion": 0,
    "_version": 0,
    "clockDriftOffset": 0,
    "conversionOffset": 0,
    "createdTime": "2018-05-14T08:17:13.276Z",
    "deviceId": "DevId0987654321",
    "deviceTime": "2018-05-14T18:17:08",
    "guid": "a6f76c8d-38e5-4c60-96d9-8df53b0fb9e8",
    "id": "94e1776ca9384280bd347691e105b02f",
    "time": "2018-05-14T08:17:08.276Z",
    "timezoneOffset": 600,
    "uploadId": "SampleUploadId"
}
```

## Keep Reading

* [Alarm](/docs/device-data/data-types/device-event/alarm)
* [Calibration](/docs/device-data/data-types/device-event/calibration)
* [Common Fields](/docs/device-data/common-fields)
* [Device Event](/docs/device-data/data-types/device-event)
* [Pump Settings](/docs/device-data/data-types/pump-settings)
* [Reservoir Change](/docs/device-data/data-types/device-event/reservoir-change)
* [Status](/docs/device-data/data-types/device-event/status)
* [Time Change](/docs/device-data/data-types/device-event/time-change)