- these are the calls used by the dexcom uploader app
- these are in no particular order!
User-Agent: Dexcom%20Share/3.0.2.11 CFNetwork/672.0.2 Darwin/14.0.0
GET
/ShareWebServices/Services/General/SystemUtcTime
Body:
none
Response:
{
"DateTime":"\/Date(1426767421178)\/",
"OffsetMinutes":0
}
POST
/ShareWebServices/Services/General/LoginPublisherAccountByName
Body:
{
"accountName":"yourlogin",
"applicationId":"d8665ade-9673-4e27-9ff6-92db4ce13d13",
"password":"yourpassword"
}
Response:
"e3e3e6a5-coolsessionid-bro”
POST
/ShareWebServices/Services/General/AuthenticatePublisherAccount
Body:
{
"accountName":"yourlogin",
"applicationId":"d8665ade-9673-4e27-9ff6-92db4ce13d13",
"password":"yourpassword"
}
Response:
"e3e3e6a5-coolsessionid-bro”
POST
/ShareWebServices/Services/Publisher/CheckMonitoredReceiverAssignmentStatus?sessionId={YourSessionId}&serialNumber={YourSerialNumber}/
Body:
none
Response:
`AssignedToYou` or `NotAssigned` (plaintext)
POST
/ShareWebServices/Services/Publisher/ReplacePublisherAccountMonitoredReceiver?sessionId={YourSessionId}&serialNumber={YourSerialNumber}
Body:
none
Response:
No Idea, Someone please tell me, if you assign one to yourself that was
already yours you get a 500 error
POST
/ShareWebServices/Services/Publisher/IsRemoteMonitoringSessionActive?sessionId={YourSessionId}
Body:
none
Response:
`true` or `false` (plaintext)
POST
/ShareWebServices/Services/Publisher/StartRemoteMonitoringSession?sessionId={yoursessionid}&serialNumber={YourdexcomSerialNumber}
Body:
none
Response:
just a status, `200`
POST
/ShareWebServices/Services/Publisher/StopRemoteMonitoringSession?sessionId={YourSessionId}
Body:
none
Response:
just a status, `200`
POST
/ShareWebServices/Services/Publisher/UpdatePublisherAccountRuntimeInfo
Body:
{
"sessionId":"YourSessionId",
"runtimeInfo":
{
"DeviceManufacturer":"Apple",
"DeviceModel":"iPhone5,2",
"DeviceOsVersion":"7.0.2",
"AppVersion":"3.0.2.11",
"AppName":"DexcomShare",
"AppNumber":"SW10569",
"DeviceOsName":"iPhone OS"
}
}
Response:
just a status, `200`
POST
/ShareWebServices/Services/Publisher/PostReceiverEgvRecords?sessionId={yourSessionId}
Body:
{
"SN":"YourSerialNumber",
"Egvs":[
{
"Trend":4,
"ST":"\/Date(1426783106000)\/",
"DT":"\/Date(1426754317000)\/",
"Value":97
}
],
"TA":-14365
}
Response:
just a status, `200`
ST
system time, DT
display time, TA
is a time offset, multiply by 1000 and subtract it from the time (so subtracting a negative in this example, which is really adding)
POST
/ShareWebServices/Services/Publisher/ReadPublisherLatestGlucoseValues?sessionId={YourSessionId}&minutes=1440&maxCount=1
Body:
none
Response:
[
{
"DT":"\/Date(1426780716000-0700)\/",
"ST":"\/Date(1426784306000)\/",
"Trend":4,
"Value":99,
"WT":"\/Date(1426769941000)\/"
}
]
POST
/ShareWebServices/Services/Publisher/DoesContactExistByName?sessionId={YourSessionId}&contactName={NameOfNewFollower}
Body:
none
Response:
`true` or `false` (plaintext)
POST
/ShareWebServices/Services/Publisher/CreateContact?sessionId={YourSessionId}&contactName={FollowerName}&emailAddress={FollowerEmail}
Body:
none
Response:
a contact id (needed for the invite!), `123312-af1341123-coolid`
POST
/ShareWebServices/Services/Publisher/CreateSubscriptionInvitation?sessionId={YourSessionId}&contactId={ContactId}
Body:
{
"AlertSettings":{
"HighAlert":{
"MinValue":200,
"AlarmDelay":"PT1H",
"AlertType":1,
"IsEnabled":false,
"RealarmDelay":"PT2H",
"Sound":"High.wav",
"MaxValue":401
},
"LowAlert":{
"MinValue":39,
"AlarmDelay":"PT30M",
"AlertType":2,
"IsEnabled":false,
"RealarmDelay":"PT2H",
"Sound":"Low.wav",
"MaxValue":70
},
"FixedLowAlert":{
"MinValue":39,
"AlarmDelay":"PT0M",
"AlertType":3,
"IsEnabled":true,
"RealarmDelay":"PT30M",
"Sound":"UrgentLow.wav",
"MaxValue":55
},
"NoDataAlert":{
"MinValue":39,
"AlarmDelay":"PT1H",
"AlertType":4,
"IsEnabled":false,
"RealarmDelay":"PT0M",
"Sound":"NoData.wav",
"MaxValue":401
}
},
"Permissions":1,
"DisplayName":"{YourAccountDisplayName}"
}
Note that permissions 1 means they can view your graph data
Response:
a subscriber id for the person you invited! (Usefull for updating their
subscription permissions and such) `793312-af1341123-coolid`
POST
/ShareWebServices/Services/Publisher/ListPublisherAccountSubscriptions?sessionId={YourSessionId}
Body:
none
Response:
[
{
"ContactId":"FollowersContactId",
"ContactName":"FollowersName",
"DateTimeCreated":{
"DateTime":"\/Date(1437101121008)\/",
"OffsetMinutes":0
},
"DateTimeModified":{
"DateTime":"\/Date(1437101121008)\/",
"OffsetMinutes":0
},
"DisplayName":"YourDisplayName",
"InviteExpires":{
"DateTime":"\/Date(1437705921008)\/",
"OffsetMinutes":0
},
"IsEnabled":false,
"IsMonitoringSessionActive":true,
"Permissions":1,
"State":2,
"SubscriberId":"00000000-0000-0000-0000-000000000000",
"SubscriptionId":"theirSubscriptionIdIsuppose?"
}
]
note: maybe we can use this subscription id to send our own custom invites to followers
POST
/ShareWebServices/Services/Publisher/DeleteContact?sessionId={YourSessionId}&contactId={followersContactId}
Body:
none
Response:
just a status, `200`
- getting the image
- getting the subscription display name
- getting the subscription email address
- reading the contact list
- sending changes to the contacts Permissions
- removing a contact
- follower aknowledging alarms
- follower reading invitation info
- follower accepting invitation
- follower updating runtimeInfo
- folower listing all their subscriptions
- read subscription alerts
curl -v \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "User-Agent: Dexcom Share/3.0.2.11 CFNetwork/711.2.23 Darwin/14.0.0" \
-X POST https://share1.dexcom.com/ShareWebServices/Services/General/LoginPublisherAccountByName \
-d '{"accountName":"YOURLOGIN","applicationId":"d8665ade-9673-4e27-9ff6-92db4ce13d13","password":"YOURPASSWORD"}'
which should recieve a response like
"8c1234deb-323c-4e9d-8362-39cfa23499ed"
which you use to get values like
curl -v \
-H "Content-Length: 0" -H "Accept: application/json" \
-H "User-Agent: Dexcom Share/3.0.2.11 CFNetwork/672.0.2 Darwin/14.0.0" \
-X POST "https://share1.dexcom.com/ShareWebServices/Services/Publisher/ReadPublisherLatestGlucoseValues?sessionId=8c1234deb-323c-4e9d-8362-39cfa23499ed&minutes=1440&maxCount=1"
A lot of people who use iPhone as main phone have/had problems with sharing after an update. The fix for them was to turn sharing off for a while, reboot the phone (don't know if that was required), and then enable sharing again. Looks like the setting for sharing wasn't in sync anymore. It looked like sharing was on, but it was off. This also affected the regular follow app.