5. Data Plugs
In the
HAT
ecosystem, a Data Plug
aka Data Plugin
is a minimal API-to-API web service with the primary purpose of fetching data from 3rd party API and pushing it to an individual’s PDA. Due to the security considerations and limited scope of required functionality, each data plug is granted a write-only access to any particular PDA.HAT API Android
provides an API call for you to fetch all the available Data Plugs
:HATExternalAppsService().getExternalApps(
userToken: userToken,
userDomain: userDomain,
completion: availablePlugsReceived,
failCallBack: errorRetrievingDataPlugs)
As you would have probably noticed, the function name is
getExternalApps
. Applications
and Data Plugs
are not only represented by the same structure but they have the same API as well.userToken
is the user's token to authenticate with thePDA
userDomain
is the user'sPDA address
used to form the url to fetch theData Plugs
completion
is a callback function that is used when the request is successful with a type of((List<HATApplicationObject>, String?) -> Unit)
.The first parameter is an array ofHATApplicationObject
. This is the structure ofData Plugs
andApplications
. More on that in the next section.This array contains all theData Plugs
andApplications
on thePDA
. The second parameter is an optionalString
, the refreshed user token that thePDA
returns.failCallBack
is a callback that is used when the request has failed. The type of the function is((HATError) -> Unit)
.HATError
is a custom object describing the errors that have occurred during the querying of the tables in the database.
A successful response will have
statusCode
200 and look like this:[
{
"application": {
"id": "hatapp",
"kind": {
"url": "https://rumpel.hubofallthings.com",
"iosUrl": "https://itunes.apple.com/app/id1303181222?mt=8",
"kind": "App"
},
"info": {
"version": "1.2.5",
"updateNotes": {
"header": "We’ve made some improvements to the user experience and made clear your legal rights over your data so that you can access new services on your HAT app. Please accept our updated [terms of service](https://hatdex.org/terms-of-service-hat-owner-agreement) and [privacy policy](https://hatdex.org/privacy-notice-hat-owner-services-and-hat-accounts) to continue using HAT.",
"notes": [
"We made clear the difference between “your data” in your HAT microserver and “HATDeX account data” which we need to create your HAT microserver",
"We made clear the relationship between HAT permissions and instructions that you control within the HAT versus HATDeX platform services and third party services that others control (when you give permission) to help you easily view, manage and organise the data within the HAT",
"We made clear the way data debits and data plugs operate based on the permissions and instructions you control and the services we control to execute your instructions",
"We updated the way we use your information for HATDeX account data in accordance with GDPR",
"We updated the way apps, plugs and tools are rated to give HAT owners full transparency on services and apps \"Powered by HAT\". Find more info [here](https://www.hatcommunity.org/hat-dex-rating)"
]
},
"published": true,
"name": "HAT App",
"headline": "The HAT Dashboard",
"description": {
"text": "\n Your digital life is made up of hundreds of day to day interactions on the Internet: liking and sharing content, booking train tickets, tracking your activity. It's time to see them all come together, in one place, so you can benefit from analysis, insights and self-discovery on your personal data.\n\n CONNECT DATA PLUGS\n Link your Twitter, Facebook, Spotify, FitBit, Google Calendar and iPhone GPS locations to your HAT, and pull in all that data in real time. Your data is kept in an entirely private space, owned by you – we don't see it, third parties don't see it, no-one sees it but you.\n\n YOUR DIGITAL LIFE\n View your data in a live feed where you can experience and engage with it as it arrives into your HAT. Facebook posts, workouts recorded by FitBit, photos you've shared – see it all in one integrated feed. Search your data by date range to know exactly where you were and what digital actions you took at any given time.\n\n PUBLIC PROFILE\n Save your personal information privately, and customise exactly which parts you want to share publicly on your Personal HAT Address – your own public URL. Think of it as the front door to your HAT, and use it to display the information you'd like.\n\n ME, MYSELF AND AI\n We will be releasing the Smart HAT Engine (SHE) soon – this engine on your HAT will enable you to subscribe to different types of analytics and machine learning functions to give you daily insights and help you make better decisions with your data, completely in your private space. Start claiming your data for yourself so that you can better use AI in your life.\n\n One HAT, so many possibilities: our HAT Community of startups and app makers is creating a new generation of Internet applications sitting on your HAT. With all the data in the account, you can donate your data to research, spend it, match it and exchange it for services. Join the community to be part of the movement to change the Internet at https://hatcommunity.org\n\n ",
"markdown": "\n Your digital life is made up of hundreds of day to day interactions on the Internet: liking and sharing content, booking train tickets, tracking your activity. It's time to see them all come together, in one place, so you can benefit from analysis, insights and self-discovery on your personal data.\n\n ### Connect Data Plugs\n\n Link your Twitter, Facebook, Spotify, FitBit, Google Calendar and iPhone GPS locations to your HAT, and pull in all that data in real time. Your data is kept in an entirely private space, owned by you – we don't see it, third parties don't see it, no-one sees it but you.\n\n ### Your Digital Life\n\n View your data in a live feed where you can experience and engage with it as it arrives into your HAT. Facebook posts, workouts recorded by FitBit, photos you've shared – see it all in one integrated feed. Search your data by date range to know exactly where you were and what digital actions you took at any given time.\n\n ### Public Profile\n\n Save your personal information privately, and customise exactly which parts you want to share publicly on your Personal HAT Address – your own public URL. Think of it as the front door to your HAT, and use it to display the information you'd like.\n\n ### Me, Myself and AI\n\n We will be releasing the Smart HAT Engine (SHE) soon – this engine on your HAT will enable you to subscribe to different types of analytics and machine learning functions to give you daily insights and help you make better decisions with your data, completely in your private space. Start claiming your data for yourself so that you can better use AI in your life.\n\n One HAT, so many possibilities: Our HAT Community of startups and app makers is creating a new generation of Internet applications sitting on your HAT. With all the data in the account, you can donate your data to research, spend it, match it and exchange it for services. Join the community to be part of the movement to change the Internet at https://hatcommunity.org\n ",
"html": "\n <p>Your digital life is made up of hundreds of day to day interactions on the Internet: liking and sharing content, booking train tickets, tracking your activity. It's time to see them all come together, in one place, so you can benefit from analysis, insights and self-discovery on your personal data.</p>\n\n <h3>Connect Data Plugs</h3>\n\n <p>Link your Twitter, Facebook, Spotify, FitBit, Google Calendar and iPhone GPS locations to your HAT, and pull in all that data in real time. Your data is kept in an entirely private space, owned by you – we don't see it, third parties don't see it, no-one sees it but you.</p>\n\n <h3>Your Digital Life</h3>\n\n <p>View your data in a live feed where you can experience and engage with it as it arrives into your HAT. Facebook posts, workouts recorded by FitBit, photos you've shared – see it all in one integrated feed. Search your data by date range to know exactly where you were and what digital actions you took at any given time.</p>\n\n <h3>Public Profile</h3>\n\n <p>Save your personal information privately, and customise exactly which parts you want to share publicly on your Personal HAT Address – your own public URL. Think of it as the front door to your HAT, and use it to display the information you'd like.</p>\n\n <h3>Me, Myself and AI</h3>\n\n <p>We will be releasing the Smart HAT Engine (SHE) soon – this engine on your HAT will enable you to subscribe to different types of analytics and machine learning functions to give you daily insights and help you make better decisions with your data, completely in your private space. Start claiming your data for yourself so that you can better use AI in your life.</p>\n\n <p>One HAT, so many possibilities: Our HAT Community of startups and app makers is creating a new generation of Internet applications sitting on your HAT. With all the data in the account, you can donate your data to research, spend it, match it and exchange it for services. Join the community to be part of the movement to change the Internet at https://hatcommunity.org</p>\n "
},
"termsUrl": "https://hatdex.org/terms-of-service-hat-owner-agreement-2018-10-01",
"dataUsePurpose": "The HAT App only uses your data to display it back to you. It does not share your data with any third-parties or store it outside of your personal HAT.",
"supportContact": "[email protected]",
"rating": {
"score": "Z***"
},
"dataPreview": [
{
"source": "she",
"date": {
"iso": "2018-10-31T08:54:26.303Z",
"unix": 1540976066
},
"types": [
"note"
],
"title": {
"text": "HAT Private Micro-server created"
},
"content": {
"text": "Digital Citizenship on the Internet is about the freedom of having our own persona(s) with the data we are able to claim, control and share. You now have a HAT micro-server to do that. Congratulations!"
}
}
],
"graphics": {
"banner": {
"normal": ""
},
"logo": {
"normal": "https://static1.squarespace.com/static/5a71ebc8b1ffb68777ca627a/t/5acb4a166d2a73d3a00a10c6/1523272220659/HATAppsstore-rounded.png?format=300w"
},
"screenshots": [
{
"normal": "https://is1-ssl.mzstatic.com/image/thumb/Purple116/v4/cb/01/56/cb0156b7-0cb6-128c-b1ec-fc3c7b31eb87/mzl.xfaethox.png/300x0w.jpg",
"large": "https://is5-ssl.mzstatic.com/image/thumb/Purple128/v4/ac/a2/6b/aca26bb8-39dd-1cd9-159d-d37012ffbfeb/mzl.jiaxtegz.png/643x0w.jpg"
},
{
"normal": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/26/b7/0f/26b70ffa-d9bc-2520-582b-b9a436eb00f5/pr_source.png/300x0w.jpg",
"large": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/9b/2f/68/9b2f6853-ce11-a189-ae41-445e8e7b3248/mzl.fkcehkpp.png/643x0w.jpg"
},
{
"normal": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/10/df/8f/10df8fae-b2b7-0c93-c530-d6338b1e6bc8/pr_source.png/300x0w.jpg",
"large": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/28/de/7a/28de7aeb-54ed-6692-a63a-8102703361e2/pr_source.png/643x0w.png"
},
{
"normal": "https://is5-ssl.mzstatic.com/image/thumb/Purple128/v4/15/94/30/159430c6-99fc-ee9f-72aa-d46d8436d76c/mzl.dvmpzlje.png/300x0w.jpg",
"large": "https://is2-ssl.mzstatic.com/image/thumb/Purple118/v4/11/df/40/11df4050-582a-7598-fe02-b4421a4be818/pr_source.png/643x0w.png"
}
]
}
},
"developer": {
"id": "hatdex",
"name": "Dataswift Ltd",
"url": "https://hatdex.org",
"country": "United Kingdom"
},
"permissions": {
"rolesGranted": [
{
"role": "owner"
},
{
"role": "applicationlist"
},
{
"role": "applicationmanage",
"detail": "hatappstaging"
},
{
"role": "applicationmanage",
"detail": "notables"
},
{
"role": "applicationmanage",
"detail": "twitter"
},
{
"role": "applicationmanage",
"detail": "facebook"
},
{
"role": "applicationmanage",
"detail": "fitbit"
},
{
"role": "applicationmanage",
"detail": "spotify"
},
{
"role": "applicationmanage",
"detail": "instagram"
},
{
"role": "applicationmanage",
"detail": "monzo"
},
{
"role": "applicationmanage",
"detail": "fitbit"
},
{
"role": "applicationmanage",
"detail": "google-calendar"
},
{
"role": "applicationmanage",
"detail": "starling"
}
]
},
"setup": {
"url": "https://rumpel.hubofallthings.com",
"iosUrl": "hatapp://hatapphost",
"kind": "External"
},
"status": {
"compatibility": "1.2.5",
"dataPreviewEndpoint": "she/feed",
"recentDataCheckEndpoint": "rumpel/locations/ios",
"versionReleaseDate": "2018-07-23T12:00:00.000Z",
"kind": "Internal"
}
},
"setup": true,
"enabled": true,
"active": true,
"needsUpdating": true,
"mostRecentData": "2018-11-12T08:27:57.609Z"
}
]
application
holds the most parts of the structure. It consists of the following 7 values:
- 1.
id
in theapplication
part of the JSON is theid
value of theData Plug
in theHAT
. - 2.
kind
in theapplication
part of the JSON has 4 values holding the various urls and the type of theData Plug
:- 1.
url
is the url of theData Plug
orApplication
to use in web - 2.
iosUrl
is the iTunes url of theApplication
in theApp Store
. It's optional and only there forApplication
type - 3.
androidUrl
is the Play Store url of theApplication
in thePlay Store
. It's optional and only there forApplication
type - 4.
kind
is the kind. As we mentioned earlier,Data Plug
andApplication
is represented by the same structure and use the same APIs.- Therefore, the
kind
can beApp
orData Plug
. When for example you want only theApplications
then simply you are going to filter the array based on thekind
.
- 3.
info
in theapplication
part of the JSON has 12 values:- 1.
version
is the app's version number in thePDA
. This may be different from the version number of theApplication
in theApp Store
orPlay Store
- 2.
updateNotes
is essentially the release notes for the latest version. It is formed by theheader
, the title of the release notes, and thenotes
, an array ofString
to easily show the notes as an unordered list. - 3.
published
indicates if the app is published or not. It can be that the app is not yet published, so it's not yet live, and it's a testing, beta, app. - 4.
name
is the official name of the app. - 5.
headline
is the headline or subtitle of the app. It can be placed underneath the name, for example, to provide more context for the app if needed. - 6.
description
allows you to describe your app better with a longer text. Also, it has support for different formats of text,text
,markdown
andhtml
. - 7.
termsUrl
is aURL
for the terms and conditions. Users must be able to read them if they wish. - 8.
dataUsePurpose
is a text explaining why and how the app will use the data. - 9.
supportContact
a support email. Users will use this email to contact you. - 10.
rating
is an optional object formed byscore
which describes the permissions and the data use using a letter-based scoring system. You can read more here. - 11.
dataPreview
is actually an array ofSheFeed
structures. This is used to preview items, if any, instead of making another network request to fetch those items. The array can be empty. - 12.
graphics
is a structure formed by 3 values:- 1.
banner
is theURL
of the banner image. - 2.
logo
is theURL
of the app logo image. - 3.
screenshots
is theURL
of the app's screenshots used to showcase what this app offers.- All the above 3 values use the same structure.
PDA
images can be categorised assmall
,normal
,large
andxlarge
. Exceptnormal
all are optional values.
- 4.
developer
consists of some basic info about the developer. This includes:id
,name
,url
andcountry
. - 5.
permissions
includes 3 values:- 1.
rolesGranted
which is an array ofrole
anddetail
describing the roles granted in theApplication
. - 2.
dataRetrieved
which is a type ofDataOfferRequiredDataDefinitionObjectV2
but it's out of the scope of this guide. It describes the data that theApplication
will retrieve. - 3.
dataRequired
which is a type ofHATExternalAppsDataRequiredObject
but it's out of the scope of this guide. It describes the data theApplication
requires.
- 6.
setup
encapsulates all the urls that theApplication
needs in order to setup. The structure is the same askind
but the url's can be different. - 7.
status
provides some info about the status of the application:- 1.
compatibility
is the last version that is compatible with the current one. - 2.
versionReleaseDate
is the date, inISO
format, of the latest release. - 3.
kind
the kind of the release. It can be eitherInternal
orExternal
.
setup
is Boolean value indicating if this app has been setup successfullyenabled
is Boolean value indicating if this app has been enabled successfullyactive
is Boolean value indicating if this app is currently active or notneedsUpdating
is Boolean value indicating if this app needs updating. AnApplication
may need an update in case the terms have changed or a new version has been released.
A request that has failed will look like this:
{
"error": "Not Authenticated",
"message": "Not Authenticated"
}
error
is the error that has occurredmessage
is a more descriptive message about theerror
that has occurred
Setting up an application is similar to the login process. First you have to check the
kind
; is it App
, or Data Plug
. The 2 are different in how you set them up:In the case of an
App
you first have to check if the app is already installed on the user's device. You can check with:Patterns.WEB_URL.matcher(appURL).matches()
where
appURL
is the androidUrl
from the Application
-> setup
. If the user has the app installed, then you have to form a URL
like this:"https://$hatAddress/#/hatlogin?name=$appID&redirect=$appURL&fallback=$fallback"
hatAddress
is the PDA's (fully qualified domain) address, e.g.postman.hubat.net
appID
is the id of the application to setup.appURL
is the URL to which the user should be sent after completing authentication. In this case it is theandroidUrl
.fallback
is the URL to which the user should be sent in case the authentication has failed. Optional. For anAndroid
application that would probably be:$applicationName://failed
and has to be added in the AndroidManifest file of the project in xml as a data scheme.
As you may have noticed this is exactly the same
URL
as the login URL
; there is a reason for this. The setup process goes through the web. Just like during the login process, the user will be asked to insert their password before continuing to the next step. The next step is accepting the terms and conditions
and giving the permissions
the app requires to function. If everything goes smoothly, PDA
will redirect back to the success redirect
. The redirect url
will now include a parameter which is the token for the particular app. Android
will ask the user if they want to launch the particular app. If the user selects 'yes' then the app will be launched. If there is a problem, PDA
will redirect to the fallback
url and you have to hide Chrome and show a message that tells the user something has gone wrong.If the user does not have the app installed, you first have to redirect them to the
Google Play Store
so they can download the app. The URL
to use is the url
in Application
-> kind
. Again the only thing you have to do is open it using the browser. When user has installed the app they may then tap again to set up the Application
.Setting up a
Data Plug
is a lot simpler than setting up an Application
. You just open the url
in Application
-> kind
with a browser and follow the instructions. Again, the user will first have to enter the password. After that each Data Plug
has a different way of asking permissions and registering with the PDA
.Application
and Data Plug
can be in multiple states: Setup, failing, need updating, disabled. To respond in state changes you can use the following snippet:/**
Returns a ApplicationConnectionState according to the application state
— parameter application: The application to check the state of
— returns: An ApplicationConnectionState case depending in the status of the app
*/
fun getState(application : HATApplicationObject) : ApplicationConnectionState {
return if (applcation.setup && applcation.needsUpdating != null && applcation.needsUpdating!!) {
ApplicationConnectionState.Update
} else if (applcation.enabled && !applcation.active) {
ApplicationConnectionState.Failing
} else if (applcation.enabled && applcation.active) {
if(applcation.mostRecentData != null)
ApplicationConnectionState.Running
else
ApplicationConnectionState.Fetching
} else {
ApplicationConnectionState.Untouched
}
}
enum class ApplicationConnectionState{
Update,
Failing,
Running,
Fetching,
Untouched
}
Running
is when theApplication
orData Plug
isenabled
,active
and doesn'tneedsUpdating
Fetching
is when theApplication
orData Plug
isenabled
,active
, it's anApp
and themostRecentData
isnull
. This means that no data have yet been saved in thePDA
.Update
is when theApplication
orData Plug
is marked asneedsUpdating
in the API response. This means the user has to go through the setup process again.Failing
is when there is a problem in theApplication
orData Plug
. Setting up again might or might not help. If this persists please contact us:[email protected]
.Untouched
is when theApplication
orData Plug
has never been setup before
You can also disable a
Data Plug
or an Application
. To do that you can call the next function:HATExternalAppsService().disableApplication(
userToken: userToken,
userDomain: hatAddress,
appID: selectedApp.application.id,
completion: appDisabled,
failCallBack: errorDisablingApp)
appID
is the id, inApplication
structure, of theApplication
orData Plug
userDomain
is the user'sHAT address
used to form the url to disable theData Plug
orApplication
userToken
is the user's token to authenticate with thePDA
completion
is a callback function that is used when the request is successful with a type of((HATApplicationObject, String?) -> Unit)
.The first parameter is the disabledHATApplicationObject
. The second parameter is an optionalString
, the refreshed user token that thePDA
returns.failCallBack
is a callback that is used when the request has failed. The type of the function is((HATError) -> Unit)
.HATError
is a custom object describing the errors that have occurred during the querying of the tables in the database.
A successful response will have
statusCode
201 and look like this:{
"application": {
"id": "hatapp",
"kind": {
"url": "https://rumpel.hubofallthings.com",
"iosUrl": "https://itunes.apple.com/app/id1303181222?mt=8",
"kind": "App"
},
"info": {
"version": "1.2.5",
"updateNotes": {
"header": "We’ve made some improvements to the user experience and made clear your legal rights over your data so that you can access new services on your HAT app. Please accept our updated [terms of service](https://hatdex.org/terms-of-service-hat-owner-agreement) and [privacy policy](https://hatdex.org/privacy-notice-hat-owner-services-and-hat-accounts) to continue using HAT.",
"notes": [
"We made clear the difference between “your data” in your HAT microserver and “HATDeX account data” which we need to create your HAT microserver",
"We made clear the relationship between HAT permissions and instructions that you control within the HAT versus HATDeX platform services and third party services that others control (when you give permission) to help you easily view, manage and organise the data within the HAT",
"We made clear the way data debits and data plugs operate based on the permissions and instructions you control and the services we control to execute your instructions",
"We updated the way we use your information for HATDeX account data in accordance with GDPR",
"We updated the way apps, plugs and tools are rated to give HAT owners full transparency on services and apps \"Powered by HAT\". Find more info [here](https://www.hatcommunity.org/hat-dex-rating)"
]
},
"published": true,
"name": "HAT App",
"headline": "The HAT Dashboard",
"description": {
"text": "\n Your digital life is made up of hundreds of day to day interactions on the Internet: liking and sharing content, booking train tickets, tracking your activity. It's time to see them all come together, in one place, so you can benefit from analysis, insights and self-discovery on your personal data.\n\n CONNECT DATA PLUGS\n Link your Twitter, Facebook, Spotify, FitBit, Google Calendar and iPhone GPS locations to your HAT, and pull in all that data in real time. Your data is kept in an entirely private space, owned by you – we don't see it, third parties don't see it, no-one sees it but you.\n\n YOUR DIGITAL LIFE\n View your data in a live feed where you can experience and engage with it as it arrives into your HAT. Facebook posts, workouts recorded by FitBit, photos you've shared – see it all in one integrated feed. Search your data by date range to know exactly where you were and what digital actions you took at any given time.\n\n PUBLIC PROFILE\n Save your personal information privately, and customise exactly which parts you want to share publicly on your Personal HAT Address – your own public URL. Think of it as the front door to your HAT, and use it to display the information you'd like.\n\n ME, MYSELF AND AI\n We will be releasing the Smart HAT Engine (SHE) soon – this engine on your HAT will enable you to subscribe to different types of analytics and machine learning functions to give you daily insights and help you make better decisions with your data, completely in your private space. Start claiming your data for yourself so that you can better use AI in your life.\n\n One HAT, so many possibilities: our HAT Community of startups and app makers is creating a new generation of Internet applications sitting on your HAT. With all the data in the account, you can donate your data to research, spend it, match it and exchange it for services. Join the community to be part of the movement to change the Internet at https://hatcommunity.org\n\n ",
"markdown": "\n Your digital life is made up of hundreds of day to day interactions on the Internet: liking and sharing content, booking train tickets, tracking your activity. It's time to see them all come together, in one place, so you can benefit from analysis, insights and self-discovery on your personal data.\n\n ### Connect Data Plugs\n\n Link your Twitter, Facebook, Spotify, FitBit, Google Calendar and iPhone GPS locations to your HAT, and pull in all that data in real time. Your data is kept in an entirely private space, owned by you – we don't see it, third parties don't see it, no-one sees it but you.\n\n ### Your Digital Life\n\n View your data in a live feed where you can experience and engage with it as it arrives into your HAT. Facebook posts, workouts recorded by FitBit, photos you've shared – see it all in one integrated feed. Search your data by date range to know exactly where you were and what digital actions you took at any given time.\n\n ### Public Profile\n\n Save your personal information privately, and customise exactly which parts you want to share publicly on your Personal HAT Address – your own public URL. Think of it as the front door to your HAT, and use it to display the information you'd like.\n\n ### Me, Myself and AI\n\n We will be releasing the Smart HAT Engine (SHE) soon – this engine on your HAT will enable you to subscribe to different types of analytics and machine learning functions to give you daily insights and help you make better decisions with your data, completely in your private space. Start claiming your data for yourself so that you can better use AI in your life.\n\n One HAT, so many possibilities: Our HAT Community of startups and app makers is creating a new generation of Internet applications sitting on your HAT. With all the data in the account, you can donate your data to research, spend it, match it and exchange it for services. Join the community to be part of the movement to change the Internet at https://hatcommunity.org\n ",
"html": "\n <p>Your digital life is made up of hundreds of day to day interactions on the Internet: liking and sharing content, booking train tickets, tracking your activity. It's time to see them all come together, in one place, so you can benefit from analysis, insights and self-discovery on your personal data.</p>\n\n <h3>Connect Data Plugs</h3>\n\n <p>Link your Twitter, Facebook, Spotify, FitBit, Google Calendar and iPhone GPS locations to your HAT, and pull in all that data in real time. Your data is kept in an entirely private space, owned by you – we don't see it, third parties don't see it, no-one sees it but you.</p>\n\n <h3>Your Digital Life</h3>\n\n <p>View your data in a live feed where you can experience and engage with it as it arrives into your HAT. Facebook posts, workouts recorded by FitBit, photos you've shared – see it all in one integrated feed. Search your data by date range to know exactly where you were and what digital actions you took at any given time.</p>\n\n <h3>Public Profile</h3>\n\n <p>Save your personal information privately, and customise exactly which parts you want to share publicly on your Personal HAT Address – your own public URL. Think of it as the front door to your HAT, and use it to display the information you'd like.</p>\n\n <h3>Me, Myself and AI</h3>\n\n <p>We will be releasing the Smart HAT Engine (SHE) soon – this engine on your HAT will enable you to subscribe to different types of analytics and machine learning functions to give you daily insights and help you make better decisions with your data, completely in your private space. Start claiming your data for yourself so that you can better use AI in your life.</p>\n\n <p>One HAT, so many possibilities: Our HAT Community of startups and app makers is creating a new generation of Internet applications sitting on your HAT. With all the data in the account, you can donate your data to research, spend it, match it and exchange it for services. Join the community to be part of the movement to change the Internet at https://hatcommunity.org</p>\n "
},
"termsUrl": "https://hatdex.org/terms-of-service-hat-owner-agreement-2018-10-01",
"dataUsePurpose": "The HAT App only uses your data to display it back to you. It does not share your data with any third-parties or store it outside of your personal HAT.",
"supportContact": "[email protected]",
"rating": {
"score": "Z***"
},
"dataPreview": [
{
"source": "she",
"date": {
"iso": "2018-10-31T08:54:26.303Z",
"unix": 1540976066
},
"types": [
"note"
],
"title": {
"text": "HAT Private Micro-server created"
},
"content": {
"text": "Digital Citizenship on the Internet is about the freedom of having our own persona(s) with the data we are able to claim, control and share. You now have a HAT micro-server to do that. Congratulations!"
}
}
],
"graphics": {
"banner": {
"normal": ""
},
"logo": {
"normal": "https://static1.squarespace.com/static/5a71ebc8b1ffb68777ca627a/t/5acb4a166d2a73d3a00a10c6/1523272220659/HATAppsstore-rounded.png?format=300w"
},
"screenshots": [
{
"normal": "https://is1-ssl.mzstatic.com/image/thumb/Purple116/v4/cb/01/56/cb0156b7-0cb6-128c-b1ec-fc3c7b31eb87/mzl.xfaethox.png/300x0w.jpg",
"large": "https://is5-ssl.mzstatic.com/image/thumb/Purple128/v4/ac/a2/6b/aca26bb8-39dd-1cd9-159d-d37012ffbfeb/mzl.jiaxtegz.png/643x0w.jpg"
},
{
"normal": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/26/b7/0f/26b70ffa-d9bc-2520-582b-b9a436eb00f5/pr_source.png/300x0w.jpg",
"large": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/9b/2f/68/9b2f6853-ce11-a189-ae41-445e8e7b3248/mzl.fkcehkpp.png/643x0w.jpg"
},
{
"normal": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/10/df/8f/10df8fae-b2b7-0c93-c530-d6338b1e6bc8/pr_source.png/300x0w.jpg",
"large": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/28/de/7a/28de7aeb-54ed-6692-a63a-8102703361e2/pr_source.png/643x0w.png"
},
{
"normal": "https://is5-ssl.mzstatic.com/image/thumb/Purple128/v4/15/94/30/159430c6-99fc-ee9f-72aa-d46d8436d76c/mzl.dvmpzlje.png/300x0w.jpg",
"large": "https://is2-ssl.mzstatic.com/image/thumb/Purple118/v4/11/df/40/11df4050-582a-7598-fe02-b4421a4be818/pr_source.png/643x0w.png"
}
]
}
},
"developer": {
"id": "hatdex",
"name": "Dataswift Ltd",
"url": "https://hatdex.org",
"country": "United Kingdom"
},
"permissions": {
"rolesGranted": [
{
"role": "owner"
},
{
"role": "applicationlist"
},
{
"role": "applicationmanage",
"detail": "hatappstaging"
},
{
"role": "applicationmanage",
"detail": "notables"
},
{
"role": "applicationmanage",
"detail": "twitter"
},
{
"role": "applicationmanage",
"detail": "facebook"
},
{
"role": "applicationmanage",
"detail": "fitbit"
},
{
"role": "applicationmanage",
"detail": "spotify"
},
{
"role": "applicationmanage",
"detail": "instagram"
},
{
"role": "applicationmanage",
"detail": "monzo"
},
{
"role": "applicationmanage",
"detail": "fitbit"
},
{
"role": "applicationmanage",
"detail": "google-calendar"
},
{
"role": "applicationmanage",
"detail": "starling"
}
]
},
"setup": {
"url": "https://rumpel.hubofallthings.com",
"iosUrl": "hatapp://hatapphost",
"kind": "External"
},
"status": {
"compatibility": "1.2.5",
"dataPreviewEndpoint": "she/feed",
"recentDataCheckEndpoint": "rumpel/locations/ios",
"versionReleaseDate": "2018-07-23T12:00:00.000Z",
"kind": "Internal"
}
},
"setup": true,
"enabled": false,
"active": true,
"needsUpdating": true,
"mostRecentData": "2018-11-12T08:27:57.609Z"
}
A request that has failed will look like this:
{
"error": "Not Authenticated",
"message": "Not Authenticated"
}
error
is the error that has occurredmessage
is a more descriptive message about theerror
that has occurred
Last modified 9mo ago