- 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"
Hi, is anyone else having problems to authenticate user accounts that looks like phone numbers? Many of my users can no longer login after they had to change their dexcom account names to their phone number. Account names that looks like email addresses work just fine. The dexcom server just returns invalid account or password, like if the password was wrong. I have validated a few accounts that they can logon to dexcom clarity just fine, so password is good and account is not locked. I am running out of ideas