a month ago
In the Ruby code example, the cookie value "gdcauthsst" should be "GDCAuthSST".
Table of Contents
API
Transparent Proxy
Please sign in and we'll assign you a private URL to trace your traffic and help you implement the API.
GoodData API is based on REST principles, all you need to use it is your GoodData account. You have to be authenticated and call the simple HTTPs request on the URL specified below. The following documentation covers core resources that are used to manipulate with the main entities. First of all, read basic instructions to start using the API.
Please use only your GoodData testing account credentials with the Apiary.io tool
POST : To create or update resource
GET : Get a resource or list of resources
DELETE : To delete resource
OK - the request was successful (some API calls may return 201 instead).Created - the request was successful and a resource was created.No Content - the request was successful but there is no representation to return (i.e. the response is empty).Bad Request - the request could not be understood or was missing required parameters.Unauthorized - authentication failed or user doesn't have permissions for requested operation.Forbidden - access denied.Not Found - resource was not found.Method Not Allowed - requested method is not supported for resource.To login into the GoodData API, use following calls.
POST your credentials to the login resource in JSON bodyGET the token resource with SST Token in your header to receive TT TokenRemember that TT Token has limited validity. Once you received 401 Unauthorized Response, you need to GET new TT Token in following resource with SST Token specified in call header.
This resource is the first. Use it to log into the API.
Please use only your GoodData testing account credentials with the Apiary.io tool
Response
200 (OK)
Set-Cookie: GDCAuthTT=; path=/gdc; expires=Mon, 30-Jul-2012 09:12:42 GMT; secure; HttpOnly, GDCAuthSST={super-secured-token}; path=/gdc/account; secure; HttpOnly
Content-Type: application/json
{"userLogin":{"profile":"/gdc/account/profile/USER-ID","state":"/gdc/account/login/USER-ID"}}
Response
200 (OK)
Content-Type: application/json
You'll get the authentication token on this resource.
Response
200 (OK)
Set-Cookie: set-cookie: GDCAuthTT={temporary-token}; path=/gdc; secure; HttpOnly
Content-Type: application/json
For logout the user
Response
200 (OK)
Content-Type: application/json
Project is one of the key entities inside GoodData. When working with GoodData, you basically create analytical projects (datamarts). Metrics, Reports and Dashboards are then created inside Projects.
To create new project, use following call. Poll the resource that you received as response until it gives you the status: Enabled
See the next API call for more details. You can create PostgreSQL based Project, which is stil in beta version.
Response
201 (Created)
Content-Type: application/json
{
"uri" : "/gdc/projects/TEST_PROJECT_ID"
}
To show the Project information after creation or whenever you need it. Use this API request.
Response
200 (OK)
Content-Type: application/json
{
"project" : {
"content" : {
"guidedNavigation" : "1",
"isPublic" : "0",
"state" : "ENABLED"
},
"links" : {
"roles" : "/gdc/projects/Project2/roles",
"ldm_thumbnail" : "/gdc/projects/Project2/ldm?thumbnail=1",
"connectors" : "/gdc/projects/Project2/connectors",
"self" : "/gdc/projects/Project2",
"invitations" : "/gdc/projects/Project2/invitations",
"users" : "/gdc/projects/Project2/users",
"ldm" : "/gdc/projects/Project2/ldm",
"publicartifacts" : "/gdc/projects/Project2/publicartifacts",
"metadata" : "/gdc/md/Project2",
"templates" : "/gdc/md/Project2/templates"
},
"meta" : {
"created" : "2012-05-01 23:56:01",
"summary" : "Quotes",
"updated" : "2012-05-01 23:56:01",
"author" : "/gdc/account/profile/17",
"title" : "Quotes",
"contributor" : "/gdc/account/profile/17"
}
}
}
To list all existing projects
Response
200 (OK)
Content-Type: application/json
{
"projects" : [
{
"project" : {
"content" : {
"guidedNavigation" : "1",
"isPublic" : "0",
"state" : "ENABLED"
},
"links" : {
"roles" : "/gdc/projects/PROJECT_ID/roles",
"ldm_thumbnail" : "/gdc/projects/PROJECT_ID/ldm?thumbnail=1",
"userPermissions" : "/gdc/projects/PROJECT_ID_/users/PROFILE_ID/permissions",
"userRoles" : "/gdc/projects/PROJECT_ID/users/PROFILE_ID/roles",
"connectors" : "/gdc/projects/PROJECT_ID/connectors",
"self" : "/gdc/projects/PROJECT_ID",
"invitations" : "/gdc/projects/PROJECT_ID/invitations",
"users" : "/gdc/projects/PROJECT_ID/users",
"ldm" : "/gdc/projects/PROJECT_ID/ldm",
"metadata" : "/gdc/md/PROJECT_ID",
"publicartifacts" : "/gdc/projects/PROJECT_ID/publicartifacts",
"templates" : "/gdc/md/PROJECT_ID/templates"
},
"meta" : {
"created" : "YYYY-MM-DD HH:MM:SS",
"summary" : "Project Summary",
"updated" : "YYYY-MM-DD HH:MM:SS",
"author" : "/gdc/account/profile/PROFILE_ID",
"title" : "Your Project Name",
"contributor" : "/gdc/account/profile/PROFILE_ID"
}
}
} ]
}
To Export selected Project - exportUsers and exportData field are not mandatory
Response
200 (OK)
Content-Type: application/json
{
"exportArtifact" : {
"status" : {
"uri" : "/gdc/md/PROJECT_ID/etltask/TASK_ID"
},
"token" : "EXPORT_TOKEN"
}
}
Use this method to import exported Project
Response
200 (OK)
Content-Type: application/json
{
"uri" : "/gdc/md/PROJECT_ID/etltask/TASK_ID"
}
To create your own custom colour palette in given Project
Response
200 (OK)
Content-Type: application/json
{"styleSettings" :
{"chartPalette": [
{ "guid": "guid1", "fill": { "r":255, "g":255, "b":0 } },
{ "guid": "guid2", "fill": { "r":255, "g":255, "b":40 } },
{ "guid": "guid3", "fill": { "r":255, "g":255, "b":80 } },
{ "guid": "guid4", "fill": { "r":255, "g":255, "b":120 } },
{ "guid": "guid5", "fill": { "r":255, "g":255, "b":180 } },
{ "guid": "guid6", "fill": { "r":255, "g":255, "b":200 } }
]
}
}
To Delete/Reset your own custom colour palette in given Project
Response
204 (No Content)
Content-Type: application/json
To GET User roles for given project. Use following API call. There are 6 default roles (id 1-5), but these IDs are not fixed for specific user roles. You have to GET role details (following API call below) to set User roles correctly.
Response
200 (OK)
Content-Type: application/json
{
"projectRoles": {
"roles": [
"/gdc/projects/{project-id}/roles/3",
"/gdc/projects/{project-id}/roles/2",
"/gdc/projects/{project-id}/roles/4",
"/gdc/projects/{project-id}/roles/1",
"/gdc/projects/{project-id}/roles/5"
],
"links": {
"project": "/gdc/projects/{project-id}/"
}
}
}
To GET details about specific project role, use this API call.
Response
200 (OK)
Content-Type: application/json
{
"projectRole": {
"permissions": {
"canAccessIntegration": "0",
"canCreateProjectDashboard": "0",
"canManageComment": "0",
"canCreateDimensionMapping": "0",
"canInitData": "0",
"canManageIntegration": "0",
"canManageFolder": "0",
"canInviteUserToProject": "0",
"canCreateDomain": "0",
"canCreateTableDataLoad": "0",
"canSeeOtherUserDetails": "0",
"canCreateETLInterface": "0",
"canCreateRole": "0",
"canCreateReportResult": "1",
"canCreateHelp": "0",
"canManageDomain": "0",
"canManageAttributeLabel": "0",
"canCreateColumn": "0",
"canManageReport": "0",
"canManageDataSet": "0",
"canSetUserVariables": "0",
"canCreateAttributeGroup": "0",
"canValidateProject": "0",
"canMaintainProject": "0",
"canCreateETLFile": "0",
"canCreateScheduledMail": "0",
"canManageETLSession": "0",
"canSuspendUserFromProject": "0",
"canMaintainUserFilterRelation": "0",
"canManageAttribute": "0",
"canManageReportDefinition": "0",
"canCreateReportResult2": "1",
"canMaintainUserFilter": "0",
"canCreateReport": "0",
"canManageETLFile": "0",
"canCreateComment": "0",
"canCreateDataSet": "0",
"canCreateTable": "0",
"canManageTableDataLoad": "0",
"canManageDimensionMapping": "0",
"canCreateMetric": "0",
"canRefreshData": "0",
"canManageProjectDashboard": "0",
"canManageProject": "0",
"canManagePrompt": "0",
"canManageETLInterface": "0",
"canManageReportResult2": "0",
"canAccessWorkbench": "0",
"canCreateAttributeLabel": "0",
"canManageColumn": "0",
"canCreatePrompt": "0",
"canManagePublicAccessCode": "0",
"canListUsersInProject": "0",
"canManageAttributeGroup": "0",
"canManageMetric": "0",
"canManageHelp": "0",
"canManageTable": "0",
"canSetProjectVariables": "0",
"canCreateETLSession": "0",
"canCreateFolder": "0",
"canManageFact": "0",
"canListInvitationsInProject": "0",
"canManageScheduledMail": "0",
"canManageReportResult": "1",
"canManageAnnotation": "0",
"canSeePublicAccessCode": "0",
"canCreateReportDefinition": "1",
"canCreateFact": "0",
"canCreateAttribute": "0",
"canAssignUserWithRole": "0",
"canCreateAnnotation": "0"
},
"links": {
"roleUsers": "/gdc/projects/{project-id}/roles/4/users"
},
"meta": {
"created": "2012-07-25 11:28:52",
"identifier": "dashboardOnlyRole",
"summary": "dashboard only",
"author": "/gdc/account/profile/{user-profile}",
"updated": "2012-07-25 11:28:52",
"title": "Embedded Dashboard Only",
"contributor": "/gdc/account/profile/{user-profile}"
}
}
}
This API call will DELETE your defined project.
Response
200 (OK)
Content-Type: application/json
{}
To manage users via the User Provisioning API Resources, you need to have your own domain. If you have it, you can simply use the requests below.
To create new user in your domain - use this resource. The API will give you new user's uri. You have to be DOMAIN admin for provision the user to the Project.
Response
200 (OK)
Content-Type: application/json
{
"uri" : "/gdc/account/profile/{profile-id}"
}
To GET all users in Project
Paging: This resource optionally allows paging. Use offset and limit parameters on the end of the URI. example: users?offset=1&limit=3
Response
200 (OK)
Content-Type: application/json
{
"users" : [
{
"user" : {
"content" : {
"email" : "user@domain.com",
"firstname" : "John",
"userRoles" : [
"/gdc/projects/{project_id}/roles/2"
],
"phonenumber" : "+777777777",
"status" : "ENABLED",
"lastname" : "Dow",
"login" : "user@domain.com"
},
"links" : {
"roles" : "/gdc/projects/{project_id}/users/2f35048619b7b0ff03f408d2c4b6390d/roles",
"permissions" : "/gdc/projects/{project_id}/users/2f35048619b7b0ff03f408d2c4b6390d/permissions",
"groups" : "/gdc/projects/{project_id}/users/2f35048619b7b0ff03f408d2c4b6390d/groups",
"self" : "/gdc/account/profile/{project_id}",
"invitations" : "/gdc/account/profile/{project_id}/invitations",
"projects" : "/gdc/account/profile/{project_id}/projects",
"projectRelUri" : "/gdc/projects/{project_id}/users/2f35048619b7b0ff03f408d2c4b6390d"
},
"meta" : {
"created" : "2011-08-10 08:37:46",
"updated" : "2013-05-27 11:08:09",
"author" : "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff",
"title" : "John Dow",
"contributor" : "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff"
}
}
}
]
}
To add created User to the Project. There are several default User roles in every project:
These roles don't have fixed ID. You need to GET the information from diferent API call. See the Project API section.
Response
200 (OK)
Content-Type: application/json
{"projectUsersUpdateResult":{
"successful":["/gdc/account/profile/{profile-id}"],
"failed":[]}
}
Use this API call to edit (disable/enable) user in given project.
Response
200 (OK)
Content-Type: application/json
{
"projectUsersUpdateResult": {
"successful": [
"/gdc/account/profile/{user-id}"
],
"failed": []
}
}
Use this resource for invite user to the Project. The invotation email will be sent.
Response
200 (OK)
Content-Type: application/json
{
"createdInvitations": {
"uri": [
"/gdc/projects/{project-id}/invitations/{invitation-id}"
]
}
}
Lists all users in a domain
Response
200 (OK)
Content-Type: application/json
{
"accountSettings": {
"paging": {
"offset": 0,
"count": 14
},
"items": [
{
"accountSetting": {
"companyName": "Company",
"country": "cz",
"created": "2011-08-10 08:37:46",
"firstName": "John",
"lastName": "Doe",
"login": "user.name@company.com",
"ssoProvider":"SSO-PROVIDER",
"phoneNumber": "+420724722926",
"position": "",
"settings": "{\"_VERSION\":\"1.1\",\"currentProjectUri\":\"/gdc/projects/{project-id}\",\"/gdc/projects/5znhmmxxrzjan0r2p1v7ofycdsrx0264\":{\"dashboard\":[\"/gdc/md/5znhmmxxrzjan0r2p1v7ofycdsrx0264/obj/15091\",\"aF3FJYXegmp7\"]},\"releaseNotice\":[\"stable_67\"],\"/gdc/projects/ca6a1r1lbfwpt2v05k36nbc0cjpu7lh9\":{\"dashboard\":[\"/gdc/md/ca6a1r1lbfwpt2v05k36nbc0cjpu7lh9/obj/200001988\",\"azBgmCJJe0mc\"]},\"/gdc/projects/uikbr0t694tnh3uje22yedukbyzyt30o\":{\"dashboard\":[\"/gdc/md/uikbr0t694tnh3uje22yedukbyzyt30o/obj/923\",\"aezS8TwAcGHp\"]},\"/gdc/projects/rgxvsmz1p995jek9ul9tlmpf6t58smrc\":{\"dashboard\":[\"/gdc/md/rgxvsmz1p995jek9ul9tlmpf6t58smrc/obj/3077\",\"akr9OnQ1eOm4\"]},\"hint-projectPage-invite-people\":false,\"/gdc/projects/j41cf2ph664i24r06zvj4f8rcpwoc7z5\":{\"dashboard\":[\"/gdc/md/j41cf2ph664i24r06zvj4f8rcpwoc7z5/obj/302\",\"acuSDRVTfsy9\"]},\"/gdc/projects/aroa0dpcaw7qde90zk28qe1g8a9yiduc\":{\"dashboard\":[\"/gdc/md/aroa0dpcaw7qde90zk28qe1g8a9yiduc/obj/1934\",\"aThZ8kBxhhOD\"]},\"/gdc/projects/als9uzqw5b3mmedep20dz079gu4l2ts4\":{\"dashboard\":[\"/gdc/md/als9uzqw5b3mmedep20dz079gu4l2ts4/obj/255\",\"acuSDRVTfsy9\"]},\"/gdc/projects/e40dze1gsyuzbiw6uo7pezb172za0g6t\":{\"dashboard\":[\"/gdc/md/e40dze1gsyuzbiw6uo7pezb172za0g6t/obj/878\",\"amDMbVxHiEpT\"]},\"/gdc/projects/qdi4csdu3cncw7cl6ytw0c08ezhjiacl\":{\"dashboard\":[\"/gdc/md/qdi4csdu3cncw7cl6ytw0c08ezhjiacl/obj/1934\",\"aae2SZzwayQc\"]},\"/gdc/projects/88w3p5nd8tjvvugg71o7alrn95brxd49\":{\"dashboard\":[\"/gdc/md/88w3p5nd8tjvvugg71o7alrn95brxd49/obj/1934\",\"aae2SZzwayQc\"]},\"/gdc/projects/1fm43ndfbq0adk6q44sv6vzjfe2mpzbf\":{\"dashboard\":[\"/gdc/md/1fm43ndfbq0adk6q44sv6vzjfe2mpzbf/obj/302\",\"acuSDRVTfsy9\"]},\"/gdc/projects/z7hy8dgakfovolhmkr0in5gab55eh8sf\":{\"dashboard\":[\"/gdc/md/z7hy8dgakfovolhmkr0in5gab55eh8sf/obj/1134\",\"axbb0wX9hWXt\"]},\"/gdc/projects/0xdgi5rf00ojg3i8buihnce9abcs0jlo\":{\"dashboard\":[\"/gdc/md/0xdgi5rf00ojg3i8buihnce9abcs0jlo/obj/1788\",\"bykyxrVPd4bK\"]},\"/gdc/projects/j411aqhpfwyfhbfcmpgp7wdv2kkadk1h\":{\"dashboard\":[\"/gdc/md/j411aqhpfwyfhbfcmpgp7wdv2kkadk1h/obj/1134\",\"axbb0wX9hWXt\"]},\"/gdc/projects/3j538qu3uaco59yqvy4f67x6r1yp2xcb\":{\"dashboard\":[\"/gdc/md/3j538qu3uaco59yqvy4f67x6r1yp2xcb/obj/928\",\"aejgJwQohyCf\"]},\"/gdc/projects/x0ihh49quilaf0cjm651nnj2hxbmfm3c\":{\"dashboard\":[\"/gdc/md/x0ihh49quilaf0cjm651nnj2hxbmfm3c/obj/1221\",\"aeMPJK0fceaH\"]},\"/gdc/projects/nb8vzlyj8sosxx0myv0tww82j0nosbql\":{\"dashboard\":[\"/gdc/md/nb8vzlyj8sosxx0myv0tww82j0nosbql/obj/975\",\"apcbnqrNem2V\"]},\"/gdc/projects/24ubdyx5m28ojz2fnf34y74vjaxw82r2\":{\"dashboard\":[\"/gdc/md/24ubdyx5m28ojz2fnf34y74vjaxw82r2/obj/4673\",\"akoz8EgNhzEx\"]},\"/gdc/projects/8thc020r46ru5mej90dewtxsdmfdmn9w\":{\"dashboard\":[\"/gdc/md/8thc020r46ru5mej90dewtxsdmfdmn9w/obj/21607\",\"aedRQW1vbS2i\"]},\"/gdc/projects/vs20w6yqnt64jaaw93wlg6osod4w0pew\":{\"dashboard\":[\"/gdc/md/vs20w6yqnt64jaaw93wlg6osod4w0pew/obj/1179\",\"aci3ZI2qg9WA\"]},\"/gdc/projects/fdybuqt6q711dk7fj0hyb17xug4occ7h\":{\"dashboard\":[\"/gdc/md/fdybuqt6q711dk7fj0hyb17xug4occ7h/obj/302\",\"acuSDRVTfsy9\"]},\"/gdc/projects/5c3eynt8oemo1tbg7r18wm1lihsbhi3w\":{\"dashboard\":[\"/gdc/md/5c3eynt8oemo1tbg7r18wm1lihsbhi3w/obj/22383\",\"aafYWrtQicJz\"]},\"/gdc/projects/o1bkm459hl3oqpfvowhc5atm8epum3n8\":{\"dashboard\":[\"/gdc/md/o1bkm459hl3oqpfvowhc5atm8epum3n8/obj/975\",\"apcbnqrNem2V\"]},\"/gdc/projects/u2sgybzl95ezxj06nxvazqryymvhd6xx\":{\"dashboard\":[\"/gdc/md/u2sgybzl95ezxj06nxvazqryymvhd6xx/obj/829\",\"aarQ2wqyh3OO\"]},\"/gdc/projects/ns1tzvr069ufw3gsvgveldbfbh6uyx8u\":{\"dashboard\":[\"/gdc/md/ns1tzvr069ufw3gsvgveldbfbh6uyx8u/obj/975\",\"apcbnqrNem2V\"]},\"/gdc/projects/fe6syz94xsf0n7indc4q4t45bt0ad68f\":{\"dashboard\":[\"/gdc/md/fe6syz94xsf0n7indc4q4t45bt0ad68f/obj/4673\",\"adLaxLMQaQ3s\"]},\"/gdc/projects/fl1tx117xb3qw2ngiuv7prud9a0qsowl\":{\"dashboard\":[\"/gdc/md/fl1tx117xb3qw2ngiuv7prud9a0qsowl/obj/245\",\"aemCHDx1ioL2\"]},\"/gdc/projects/fw1p4xvz8e99g5100wfxymzodatqbmg2\":{\"dashboard\":[\"/gdc/md/fw1p4xvz8e99g5100wfxymzodatqbmg2/obj/4673\",\"aaOGHRxOh0dl\"]},\"/gdc/projects/ic2l94mn960iyy5ycz7dnfz6mhil8php\":{\"dashboard\":[\"/gdc/md/ic2l94mn960iyy5ycz7dnfz6mhil8php/obj/4673\",\"akoz8EgNhzEx\"]},\"/gdc/projects/jusjqe0f5lz3wkpcwxoyyckzclsk2tpy\":{\"dashboard\":[\"/gdc/md/jusjqe0f5lz3wkpcwxoyyckzclsk2tpy/obj/12982\",\"aaGUiXk8hqek\"]}}",
"timezone": null,
"updated": "2012-02-20 16:20:28",
"links": {
"projects": "/gdc/account/profile/19765/projects",
"self": "/gdc/account/profile/19765"
}
}
},
{
"accountSetting": {
"companyName": "",
"country": "",
"created": "2011-11-03 15:16:52",
"firstName": "J",
"lastName": "T",
"login": "deleted-25022@gooddata.com",
"phoneNumber": "",
"position": "",
"settings": "",
"timezone": null,
"ssoProvider":"SSO-PROVIDER",
"updated": "2011-12-15 14:40:37",
"links": {
"projects": "/gdc/account/profile/25022/projects",
"self": "/gdc/account/profile/25022"
}
}
}
]
}
}
You are able to update the User information
Response
200 (OK)
Content-Type: application/json
Use this request to delete User
Response
200 (OK)
Content-Type: application/json
The data model is the core concept of GoodData. It can be managed and validated using following API resources. Model is created/managed by using the MAQL language and script.
To manage Logical Data Model
Response
200 (OK)
Content-Type: application/json
Use this method to validate Project
Response
201 (Created)
Content-Type: application/json
{"uri" : "/gdc/md/PROJECT_ID/validate/TASK_ID"}
Here you can GET the SLI manifest. This manifest is needed to upload your data using the API directly. The SLI manifest provides column mapping between CSV file and data model.
Response
200 (OK)
Content-Type: application/json
{
"dataSetSLIManifest": {
"parts": [
{
"columnName": "f_quotes.dt_quote_date_id",
"populates": [
"quote.date.mdyy"
],
"mode": "FULL",
"referenceKey": 1
},
{
"columnName": "d_quotes_sector.nm_sector",
"populates": [
"label.quotes.sector"
],
"mode": "FULL",
"referenceKey": 1
},
{
"columnName": "d_quotes_market.nm_market",
"populates": [
"label.quotes.market"
],
"mode": "FULL",
"referenceKey": 1
},
{
"columnName": "f_quotes.f_low_price",
"populates": [
"fact.quotes.low_price"
],
"mode": "FULL"
},
{
"columnName": "f_quotes.nm_id",
"populates": [
"label.quotes.id"
],
"mode": "FULL",
"referenceKey": 1
},
{
"columnName": "f_quotes.f_volume",
"populates": [
"fact.quotes.volume"
],
"mode": "FULL"
},
{
"columnName": "f_quotes.dt_quote_date",
"populates": [
"dt.quotes.quote_date"
],
"mode": "FULL"
},
{
"columnName": "f_quotes.f_open_price",
"populates": [
"fact.quotes.open_price"
],
"mode": "FULL"
},
{
"columnName": "d_quotes_symbol.nm_symbol",
"populates": [
"label.quotes.symbol"
],
"mode": "FULL",
"referenceKey": 1
},
{
"columnName": "d_quotes_symbol.nm_company",
"populates": [
"label.quotes.symbol.company"
],
"mode": "FULL"
},
{
"columnName": "f_quotes.f_high_price",
"populates": [
"fact.quotes.high_price"
],
"mode": "FULL"
},
{
"columnName": "d_quotes_industry.nm_industry",
"populates": [
"label.quotes.industry"
],
"mode": "FULL",
"referenceKey": 1
},
{
"columnName": "f_quotes.f_close_price",
"populates": [
"fact.quotes.close_price"
],
"mode": "FULL"
},
{
"columnName": "f_quotes.f_adjusted_close_price",
"populates": [
"fact.quotes.adjusted_close_price"
],
"mode": "FULL"
}
],
"file": "dataset.quotes.csv",
"dataSet": "dataset.quotes"
}
}
The Data Upload API can be used for uploading the data directly to your Project. Using the resources below, you are able to start data uplaod process with the file package stored on GoodData WebDav Server (secure-di.gooddata.com/uploads/). The package must contain upload_info.json and CSV file for every dataset that you want to upload.
Start data upload using this resource. As parameter, use the name of WebDav directory, where you uploaded Data. Upload archive should be named upload.zip and must contain upload_info.json (SLI manifest) and CSV file with data. See the Data Model resources to learn about SLI manifest.
Response
200 (OK)
Content-Type: application/json
{
"pullTask" : {
"uri" : "/gdc/md/{project-id}/etl/task/{task-id}"
}
}
This is resource returned by previous POST. Poll it to get the upload status.
Response
200 (OK)
Content-Type: application/json
{
"taskStatus" : "OK | ERROR | WARNING"
}
This resource gives you status of data uploads for specific dataset. You need to specify dataset ID in the end of the URI. This ID can be find in gdc/md/{project-id}/query/datasets resource. See the next resource definition below.
Response
200 (OK)
Content-Type: application/json
{
"dataUploads" : {
"uploads" : [
{
"dataUpload" : {
"warnings" : [],
"msg" : null,
"etlInterface" : "/gdc/md/{project-id}/obj/174",
"progress" : "1.000",
"status" : "OK",
"file" : "upload_info.json",
"fullUpload" : 1,
"uri" : "/gdc/md/{project-id}/data/upload/5",
"createdAt" : "2012-12-14 13:40:36",
"fileSize" : 155649,
"processedAt" : "2012-12-14 13:40:38"
}
},
{
"dataUpload" : {
"warnings" : [],
"msg" : null,
"etlInterface" : "/gdc/md/{project-id}/obj/174",
"progress" : "1.000",
"status" : "OK",
"file" : "upload_info.json",
"fullUpload" : 1,
"uri" : "/gdc/md/{project-id}/data/upload/4",
"createdAt" : "2012-12-14 13:33:39",
"fileSize" : 78957,
"processedAt" : "2012-12-14 13:33:40"
}
},
{
"dataUpload" : {
"warnings" : [],
"msg" : null,
"etlInterface" : "/gdc/md/{project-id}/obj/174",
"progress" : "1.000",
"status" : "OK",
"file" : "upload_info.json",
"fullUpload" : 1,
"uri" : "/gdc/md/{project-id}/data/upload/3",
"createdAt" : "2012-12-14 09:24:42",
"fileSize" : 144,
"processedAt" : "2012-12-14 09:24:59"
}
},
{
"dataUpload" : {
"warnings" : [],
"msg" : null,
"etlInterface" : "/gdc/md/{project-id}/obj/174",
"progress" : "1.000",
"status" : "OK",
"file" : "upload_info.json",
"fullUpload" : 1,
"uri" : "/gdc/md/{project-id}/data/upload/2",
"createdAt" : "2012-12-13 17:06:11",
"fileSize" : 144,
"processedAt" : "2012-12-13 17:06:17"
}
}
],
"links" : {}
}
}
This resource helps you identify datasets in your project. You can easily identify dataset object id in the response.
Response
200 (OK)
Content-Type: application/json
{
"query": {
"entries": [
{
"link": "/gdc/md/{project-id}/obj/14000300",
"author": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff",
"tags": "",
"created": "2009-07-03 14:52:50",
"deprecated": "0",
"summary": "",
"category": "dataSet",
"title": "Initially Assigned Date",
"updated": "2009-07-03 14:52:50",
"contributor": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff"
},
{
"link": "/gdc/md/{project-id}/obj/161",
"author": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff",
"tags": "",
"created": "2010-06-16 01:11:00",
"deprecated": "0",
"summary": "",
"category": "dataSet",
"title": "Zendesk Tickets",
"updated": "2011-02-18 19:38:40",
"contributor": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff"
},
{
"link": "/gdc/md/{project-id}/obj/241",
"author": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff",
"tags": "",
"created": "2010-06-16 01:11:04",
"deprecated": "0",
"summary": "",
"category": "dataSet",
"title": "Zendesk Tags",
"updated": "2011-02-10 16:07:11",
"contributor": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff"
},
{
"link": "/gdc/md/{project-id}/obj/16000300",
"author": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff",
"tags": "",
"created": "2009-07-03 14:52:50",
"deprecated": "0",
"summary": "",
"category": "dataSet",
"title": "Last Updated Date",
"updated": "2009-07-03 14:52:50",
"contributor": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff"
},
{
"link": "/gdc/md/{project-id}/obj/13000300",
"author": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff",
"tags": "",
"created": "2009-07-03 14:52:50",
"deprecated": "0",
"summary": "",
"category": "dataSet",
"title": "Assigned Date",
"updated": "2009-07-03 14:52:50",
"contributor": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff"
},
{
"link": "/gdc/md/{project-id}/obj/12000300",
"author": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff",
"tags": "",
"created": "2009-07-03 14:52:50",
"deprecated": "0",
"summary": "",
"category": "dataSet",
"title": "Solved Date",
"updated": "2009-07-03 14:52:50",
"contributor": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff"
},
{
"link": "/gdc/md/{project-id}/obj/15000300",
"author": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff",
"tags": "",
"created": "2009-07-03 14:52:50",
"deprecated": "0",
"summary": "",
"category": "dataSet",
"title": "Due Date",
"updated": "2009-07-03 14:52:50",
"contributor": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff"
},
{
"link": "/gdc/md/{project-id}/obj/10000300",
"author": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff",
"tags": "",
"created": "2009-07-03 14:52:50",
"deprecated": "0",
"summary": "",
"category": "dataSet",
"title": "Created Date",
"updated": "2009-07-03 14:52:50",
"contributor": "/gdc/account/profile/876ec68f5630b38de65852ed5d6236ff"
}
],
"meta": {
"summary": "Metadata Query Resources for project '{project-id}'",
"title": "List of datasets",
"category": "query"
}
}
}
Notifications allow users to be informed about some specific events in the Project. Notifications are based on Channel Configuration, where user specifies what is the channel, where he wants to send the notification. Second step is a Subscription settings, that will subscribe the user to a specific channel with specific condition for triggering the notification.
To create new Salesforce Notifications channel use this method
Response
201 (Created)
Content-Type: application/json
{
"channelConfiguration": {
"configuration": {
"sfdcChatterConfiguration": {
"username": "USERNAME@DOMAIN.COM"
}
},
"meta": {
"title": "Channel Name",
"author": "/gdc/account/profile/PROFILE_ID",
"category": "channelConfiguration",
"updated": "2011-12-20 13:43:17",
"created": "2011-12-20 13:43:17",
"uri": "/gdc/account/profile/{profile-id}/channelConfigurations/{channel-id}"
}
}
}
To create new Twillio Notifications channel use this method
Response
201 (Created)
Content-Type: application/json
{
"channelConfiguration": {
"configuration": {
"twilioSmsConfiguration": {
"username": "USERNAME@DOMAIN.COM"
}
},
"meta": {
"title": "Channel Name",
"author": "/gdc/account/profile/{profile-id}",
"category": "channelConfiguration",
"updated": "2011-12-20 13:43:17",
"created": "2011-12-20 13:43:17",
"uri": "/gdc/account/profile/{profile-id}/channelConfigurations/{channel-id}"
}
}
}
To create new Email Notifications channel use this method
Response
201 (Created)
Content-Type: application/json
{
"channelConfiguration": {
"configuration": {
"emailConfiguration": {
"to": "jirtob@gmail.com"
}
},
"meta": {
"title": "Email channel test",
"author": "/gdc/account/profile/{profile-id}",
"category": "channelConfiguration",
"updated": "2013-01-04 09:20:00",
"created": "2013-01-04 09:20:00",
"uri": "/gdc/account/profile/{profile-id}/channelConfigurations/{channel-id}"
}
}
}
To create new Subscription, call this resource and set the timerEvent, condition expression and message that will be sent
Response
201 (Created)
Content-Type: application/json
{
"subscription": {
"triggers": [
{
"timerEvent": {
"cronExpression": "0 0/5 * * * *"
}
}
],
"condition": {
"condition": {
"expression": "f:executeMetric('/gdc/md/PROJECT_ID/obj/OBJECT_ID') < 0.99"
}
},
"message": {
"template": {
"expression": "Custom message % ${f:executeMetric('/gdc/md/PROJECT_ID/obj/OBJECT_ID')} ..."
}
},
"channels": [
"/gdc/account/profile/USER_ID/channelConfigurations/CHANNEL_ID"
],
"meta": {
"title": "TEST%",
"author": "/gdc/account/profile/USER_ID",
"category": "subscription",
"updated": "2011-12-20 13:59:23",
"created": "2011-12-20 13:59:23",
"uri": "/gdc/projects/PROJECT_ID_/users/USER_ID_/subscriptions/SUBSCRIPTION_ID"
}
}
}
Creates Project event triggered notification. Subscribe to the specific channel.
Possible project based events:
More information about parameters can be found in CloudConnect documentation
Response
201 (Created)
Content-Type: application/json
{
"subscription" : {
"triggers" : [ {
"projectEventTrigger" : {
"types" : [ "dataload.process.finish.error" ]
}
} ],
"condition" : {
"condition" : {
"expression" : "true"
}
},
"subject" : {
"template" : {
"expression" : "Load Error"
}
},
"message" : {
"template" : {
"expression" : "Data load finished with Error."
}
},
"channels" : [ "/gdc/account/profile/{user-id}/channelConfigurations/{channel-id}" ],
"meta" : {
"title" : "ETL Fail",
"author" : "/gdc/account/profile/{user-id}",
"category" : "subscription",
"updated" : "2013-04-22 10:44:16",
"created" : "2013-04-22 10:44:16",
"uri" : "/gdc/projects/{project-id}/users/{user-id}/subscriptions/{subscription-id}"
}
}
}
Reports can be also handled via API. You can use following resources for getting list of all report, execute selected reports and export it.
Use this method to list all Reports in given Project
Response
200 (OK)
Content-Type: application/json
{
"query": {
"entries": [
{
"link": "/gdc/md/PROJECT_ID/obj/OBJECT_ID",
"author": "/gdc/account/profile/USER_ID",
"tags": "",
"created": "2011-11-23 15:34:18",
"deprecated": "0",
"summary": "",
"title": "Report Title",
"category": "report",
"updated": "2011-11-23 15:41:44",
"contributor": "/gdc/account/profile/USER_ID"
}],
"meta": {
"summary": "Metadata Query Resources for project 'PROJECT_ID'",
"title": "List of reports",
"category": "query"
}
}
}
Use this method to execute selected Report
Response
201 (Created)
Content-Type: application/json
{
"execResult" : {
"reportView" : {
"chart" : {
"styles" : {
"global" : {
"linetype" : "smooth",
"colorMapping" : [
{
"guid" : "guid8",
"uri" : "/gdc/md/{project-id}/obj/199"
}
]
},
"yui_3_7_1_1_1355414802308_16890" : {
"axis" : {
"limits" : {
"min" : 0,
"max" : 75
}
}
}
},
"buckets" : {
"y" : [
{
"id" : "yui_3_7_1_1_1355414802308_16890",
"uri" : "metric"
}
],
"color" : [],
"x" : [
{
"id" : "yui_3_7_1_1_1355414981915_32707",
"uri" : "/gdc/md/{project-id}/obj/72"
}
],
"angle" : []
},
"type" : "area"
},
"reportName" : "Mean temperature by date",
"columnWidths" : [],
"filters" : [],
"rows" : [],
"sort" : {
"columns" : [],
"rows" : []
},
"oneNumber" : {
"labels" : {}
},
"format" : "chart",
"columns" : [
{
"drillDownStepAttributeDF" : "/gdc/md/{project-id}/obj/62",
"sort" : "pk",
"displayFormId" : "/gdc/md/{project-id}/obj/72",
"attributeTitle" : "Month (Date)",
"baseElementURI" : "/gdc/md/{project-id}/obj/71/elements?id=",
"title" : "Month (Date)",
"attributeId" : "/gdc/md/{project-id}/obj/71",
"totals" : [
[]
]
},
"metricGroup"
],
"metrics" : [
{
"format" : "#,##0.00",
"title" : "Mean Temperature [Min]",
"metricId" : "/gdc/md/{project-id}/obj/199"
}
]
},
"reportDefinition" : "/gdc/md/{project-id}/obj/234",
"dataResult" : "/gdc/md/{project-id}/dataResult/1468045646021328640"
}
}
This method can be used for exporting Report. The content of result part is execResult JSON (it has been returned after report computation)
Response
201 (Created)
Content-Type: application/json
{
"uri":"/gdc/exporter/result/PROJECT_ID/RESULT_ID"
}
Following resources cover Project Dashboard operation. You can list all Dashboards in Project, GET Dashboard content and update it.
Use this method to list of all Dashboards in given Project
Response
200 (OK)
Content-Type: application/json
{
"query": {
"entries": [
{
"link": "/gdc/md/{project-id}/obj/{object-id}",
"author": "/gdc/account/profile/{user-id}",
"tags": "",
"created": "2012-08-15 19:41:07",
"deprecated": "0",
"summary": "",
"category": "projectDashboard",
"title": "Overview",
"updated": "2012-09-04 15:56:36",
"contributor": "/gdc/account/profile/{user-id}"
}
],
"meta": {
"summary": "Metadata Query Resources for project '{project-id}'",
"title": "List of projectdashboards",
"category": "query"
}
}
}
Use this method to GET dashboard object content
Response
200 (OK)
Content-Type: application/json
{
"projectDashboard": {
"content": {
"filters": [],
"tabs": [
{
"title": "Dashboard Name",
"identifier": "afblCPlxel0Y",
"items": [
{
"reportItem": {
"positionX": 410,
"positionY": 0,
"sizeX": 530,
"sizeY": 310,
"style": {
"background": {
"opacity": 0
}
},
"obj": "/gdc/md/{project-id}/obj/{object-id}",
"visualization": {
"oneNumber": {
"labels": {}
},
"grid": {
"columnWidths": []
}
},
"filters": []
}
},
{
"headlineItem": {
"positionX": 0,
"positionY": 0,
"sizeX": 380,
"sizeY": 80,
"title": "Tržby",
"metric": "/gdc/md/{project-id}/obj/{object-id}",
"format": "#,##0.00 KÄ \n",
"filters": [],
"filterAttributeDF": "/gdc/md/{project-id}/obj/{object-id}",
"linkedWithExternalFilter": 0,
"constraint": {
"to": 0,
"from": 0,
"type": "floating"
},
"trendlineConfig": {
"autoGranularity": 0,
"granularityAttributeDF": "/gdc/md/{project-id}/obj/{object-id}"
}
}
},
{
"reportItem": {
"positionX": 0,
"positionY": 350,
"sizeX": 940,
"sizeY": 360,
"style": {
"background": {
"opacity": 0
}
},
"obj": "/gdc/md/{project-id}/obj/{object-id}",
"visualization": {
"oneNumber": {
"labels": {}
},
"grid": {
"columnWidths": []
}
},
"filters": []
}
},
{
"lineItem": {
"positionX": 30,
"positionY": 320,
"sizeX": 880,
"sizeY": 10
}
},
{
"lineItem": {
"positionX": 390,
"positionY": 0,
"sizeX": 9,
"sizeY": 310
}
},
{
"textItem": {
"positionX": 100,
"positionY": 130,
"sizeX": 170,
"sizeY": 30,
"style": {
"background": {
"opacity": 0
}
},
"textSize": "middle",
"text": "Celkem ZákaznÃků"
}
},
{
"reportItem": {
"positionX": 80,
"positionY": 160,
"sizeX": 210,
"sizeY": 140,
"style": {
"background": {
"opacity": 0
}
},
"obj": "/gdc/md/{project-id}/obj/{object-id}",
"visualization": {
"oneNumber": {
"labels": {
"description": ""
}
},
"grid": {
"columnWidths": []
}
},
"filters": []
}
}
]
}
]
},
"meta": {
"uri": "/gdc/md/{project-id}/obj/{object-id}",
"created": "2012-08-15 19:41:07",
"updated": "2012-09-03 16:37:57",
"author": "/gdc/account/profile/{user-id}",
"contributor": "/gdc/account/profile/{user-id}",
"summary": "",
"title": "Overview",
"category": "projectDashboard",
"tags": "",
"deprecated": "0",
"identifier": "afalCPlxel0Y"
}
}
}
Use this method to update the Dashboard. If you want to change some metadata attribute, you have to send complete JSON payload with Dashboard object.
Response
200 (OK)
Content-Type: application/json
{
"uri": "/gdc/md/{project-id}/obj/{object-id}"
}
project Following resources can be used for exporting/importing selected metadata objects. You will get the import token, that is used for import the metadata to other project.
This method is used for partial metadata export
Response
200 (OK)
Content-Type: application/json
{
"partialMDArtifact": {
"status": {
"uri": "/gdc/md/PROJECT_ID/tasks/TASK_ID/status"
},
"token": "TOKEN_STRING"
}
}
Use this method to import exported metadata
Response
200 (OK)
Content-Type: application/json
{
"uri" : "/gdc/md/{project-id}/etltask/{task-id}"
}
Mandatory User Filters (A.K.A MUFs) are the way how you can filter specific data for specific user. It is based on attribute value identifiers and every MUF can be assigned to multiple users.
Use this method to create new Mandatory User Filter
Response
200 (OK)
Content-Type: application/json
Use this method to assign Filter to a User
Response
200 (OK)
Content-Type: application/json
{
"userFiltersUpdateResult": {
"failed": [],
"successful": [
"/gdc/account/profile/PROFILE_ID"
]
}
}
Use this method to get a list of Mandatory User Filters
Response
200 (OK)
Content-Type: application/json
{
"query": {
"entries": [
{
"link": "/gdc/md/{project-id}/obj/{filter-object-id}",
"author": "/gdc/account/profile/{user-id}",
"tags": "",
"created": "2012-01-16 11:08:13",
"deprecated": "0",
"summary": "",
"title": "User Filter Name",
"category": "userFilter",
"updated": "2012-01-16 11:08:13",
"contributor": "/gdc/account/profile/{user-id}"
}
],
"meta": {
"summary": "Metadata Query Resources for project 'PROJECT_ID'",
"title": "List of userfilters",
"category": "query"
}
}
}
To list Mandatory User Filters for selected users, use this API call. You can use multiple user URIs as a parameter. So that you can filter using ...userFilters={user-uri}&{user-uri}&...
Response
200 (OK)
Content-Type: application/json
{
"userFilters": {
"count": 20,
"length": 1,
"offset": 0,
"items": [
{
"userFilters": [
"/gdc/md/{project-id}/obj/{object-id}"
],
"user": "/gdc/account/profile/{user-id}"
}
]
}
}
To list Users for selected Mandatory User Filters, use this API call. You can use multiple MUF URIs as a parameter. So that you can use ...userFilters={muf-uri}&{muf-uri}&...
Response
200 (OK)
Content-Type: application/json
{
"userFilters": {
"count": 20,
"length": 1,
"offset": 0,
"items": [
{
"userFilters": [
"/gdc/md/{project-id}/obj/{object-id}"
],
"user": "/gdc/account/profile/{user-id}"
}
]
}
}
To DELETE Mandatoy User Filter object
Response
200 (OK)
Content-Type: application/json
This API can be used to GET all objects that are used by specific object such as dashboard, report etc.
Use this method GET all objects that are used by specific object
Response
200 (OK)
Content-Type: application/json
{
"using" : {
"edges" : [
{
"to" : 5,
"from" : 38
},
{
"to" : 49,
"from" : 5
},
],
"nodes" : [
{
"link" : "/gdc/md/j41cf2ph664i24r06zvj4f8rcpwoc7z5/obj/3439",
"author" : "/gdc/account/profile/2f35048619b7b0ff03f408d2c4b6390d",
"created" : "2011-12-22 11:04:45",
"deprecated" : "0",
"summary" : "",
"updated" : "2011-12-22 11:04:46",
"title" : "Department Salaries - Total",
"category" : "report",
"contributor" : "/gdc/account/profile/2f35048619b7b0ff03f408d2c4b6390d"
},
{
"link" : "/gdc/md/j41cf2ph664i24r06zvj4f8rcpwoc7z5/obj/3439",
"author" : "/gdc/account/profile/2f35048619b7b0ff03f408d2c4b6390d",
"created" : "2011-12-22 11:04:45",
"deprecated" : "0",
"summary" : "",
"updated" : "2011-12-22 11:04:46",
"title" : "Department Salaries - Total",
"category" : "report",
"contributor" : "/gdc/account/profile/2f35048619b7b0ff03f408d2c4b6390d"
}
]
}
}
The metadata objects are uniquely identified by the URI and Identifier. You can use this API to transform Identifiers to URI or vice versa. Identifiers doesn’t change when you clone project from master to child.
Use this method transform identifier to URI
Response
200 (OK)
Content-Type: application/json
{
"identifiers" : [
{
"identifier" : "aavXZuyygoTi",
"uri" : "/gdc/md/PROJECT_ID/obj/3439"
}
]
}
Use this method transform identifier to URI
Response
200 (OK)
Content-Type: application/json
{
"identifiers" : [
{
"identifier" : "aavXZuyygoTi",
"uri" : "/gdc/md/{project-id}/obj/3439"
}
]
}
Using this API, you can easily schedule the Email, that will be sent to you with a defined Reports and/or Dashboards as an attachment.
Create new scheduleMail object with following this request
Response
200 (OK)
Content-Type: application/json
{"uri":"/gdc/md/{project-id}/obj/58058"}
List all scheduled emails with this request
Response
200 (OK)
Content-Type: application/json
{
"query": {
"entries": [
{
"link": "/gdc/md/{project-id}/obj/58058",
"author": "/gdc/account/profile/2f35048619b7b0ff03f408d2c4b6390d",
"tags": "",
"created": "2012-06-05 15:50:25",
"deprecated": "0",
"summary": "Daily at 12:00pm PT",
"category": "scheduledMail",
"title": "Scheduled report example",
"updated": "2012-06-05 15:50:25",
"contributor": "/gdc/account/profile/{profile-id}"
}
],
"meta": {
"summary": "Metadata Query Resources for project 'PROJECT_ID'",
"title": "List of scheduledmails",
"category": "query"
}
}
}
Get specific scheduled email details
Response
200 (OK)
Content-Type: application/json
{
"scheduledMail": {
"content": {
"body": "Hey, I'm sending you new Reports and Dashboards!",
"when": {
"timeZone": "America/Los_Angeles",
"recurrency": "0:0:0:1*12:0:0",
"startDate": "2012-06-05"
},
"attachments": [
{
"reportAttachment": {
"formats": [
"pdf",
"xls"
],
"uri": "/gdc/md/{project-id}/obj/{report-id}"
}
},{
"dashboardAttachment":{
"uri":"/gdc/md/{project-id}/obj/{dashboard-object-id}",
"allTabs":1,
"tabs":[
]
}
},
{
"dashboardAttachment":{
"uri":"/gdc/md/{project-id}/obj/{dashboard-object-id}",
"allTabs":0,
"tabs":[
"aydpARVaburu"
]
}
}
],
"to": [
"user.email@gooddata.com"
],
"subject": "Scheduled report"
},
"meta": {
"author": "/gdc/account/profile/2f35048619b7b0ff03f408d2c4b6390d",
"uri": "/gdc/md/PROJECT_ID/obj/58058",
"tags": "",
"created": "2012-06-05 15:50:25",
"identifier": "aadDxQdneA7Y",
"deprecated": "0",
"summary": "Daily at 12:00pm PT",
"title": "Scheduled report example",
"category": "scheduledMail",
"updated": "2012-06-05 15:50:25",
"contributor": "/gdc/account/profile/2f35048619b7b0ff03f408d2c4b6390d"
}
}
}
Use this API to create new data loading process
Response
201 (Created)
Content-Type: application/json
{
"process":{
"name":"name",
"graphs":[
"graph/simple.grf",
"graph/simpleNoParam.grf"
],
"links":{
"self":"/gdc/projects/{project-id}/dataload/processes/{process-id}",
"executions":"/gdc/{project-id}/dataload/processes/{process-id}/executions"
}
}
}
To GET all deployed processes use this API call
Response
200 (OK)
Content-Type: application/json
{
"processes" : {
"items" : [ {
"process" : {
"name" : "some_transformation",
"graphs" : [ "graph/downloader.grf", "graph/gd_load.grf", "graph/jsons_parser.grf", "graph/run.grf", "graph/transform.grf" ],
"links" : {
"self" : "/gdc/projects/{project-id}/dataload/processes/{process-id}",
"executions" : "/gdc/projects/{project-id}/dataload/processes/{process-id}/executions"
}
}
} ]
}
}
To Execute specific data loading process
Response
201 (Created)
Content-Type: application/json
{
"executionTask":{
"link":{
"poll":"/gdc/projects/{project-id}/dataload/processes/{process-id}/executions/{execution-id}"
}
}
}
To Update deployed data loading process
Response
201 (Created)
Content-Type: application/json
{
"process":{
"name":"name",
"graphs":[
"graph/simple.grf",
"graph/simpleNoParam.grf"
],
"links":{
"self":"/gdc/projects/{project-id}/dataload/processes/{process-id}",
"executions":"/gdc/{project-id}/dataload/processes/{process-id}/executions"
}
}
}
To DELETE deployed process
Response
204 (No Content)
Content-Type: application/json
To list user specific processes
Response
200 (OK)
Content-Type: application/json
{
"processes": {
"items": [
{
"process": {
"name": "Reporting - GoodData",
"graphs": [
"Box Reporting - GoodData/graph/Graph2.grf",
"Box Reporting - GoodData/graph/Graph1.grf"
],
"links": {
"self": "/gdc/projects/dr6p6hksxg7h2myy8rns5ayyjxxs3sfr/dataload/processes/7fa22f0a-0754-40c3-9727-5bf2333aa6c5",
"executions": "/gdc/projects/dr6p6hksxg7h2myy8rns5ayyjxxs3sfr/dataload/processes/7fa22f0a-0754-40c3-9727-5bf2333aa6c5/executions"
}
}
},
{
"process": {
"name": "Getting Started with CC",
"graphs": [
"Getting Started with CC/graph/quotes.grf"
],
"links": {
"self": "/gdc/projects/g9pkzebsm83djrijlv5695yazd7p5fea/dataload/processes/023bb49e-5ecd-482f-bc1d-34588256d671",
"executions": "/gdc/projects/g9pkzebsm83djrijlv5695yazd7p5fea/dataload/processes/023bb49e-5ecd-482f-bc1d-34588256d671/executions"
}
}
}
],
"links": {
"self": "/gdc/account/profile/2f35048619b7b0ff03f408d2c4b6390d/dataload/processes"
}
}
}
To schedule data loading process
Response
201 (Created)
Content-Type: application/json
To update scheduled process
Response
201 (Created)
Content-Type: application/json
To DELETE created schedule
Response
204 (No Content)
Content-Type: application/json
To create download task
Response
201 (Created)
Content-Type: application/json
{"asyncTask":
{"link":{
"poll":"/gdc/projects/{project-id}/dataload/download/zendesk/downloadTasks/{task-id}"}
}
}
To get download task (task running)
Response
202 (Accepted)
Content-Type: application/json
To get download task (task finished)
Response
204 (No Content)
Content-Type: application/json
To get download task (task failed)
Response
410 (Gone)
Content-Type: application/json
Create download task
Response
201 (Created)
Content-Type: application/json
{
"asyncTask": {
"link": {
"poll": "/gdc/projects/{project-id}/dataload/download/googleanalytics/downloadTasks/{task-id}"
}
}
}
Get download task (running)
Response
202 (Accepted)
Content-Type: application/json
Get download task (finished)
Response
204 (No Content)
Content-Type: application/json
Get download task (failed)
Response
410 (Gone)
Content-Type: application/json
In order to call the Facebook Graph API, it is necessary to have a valid OAuth 2.0 token, which is valid for 60 days only after it has been issued. The purpose of this API is the (per project) management of such Facebook tokens, as well as sending notifications to the user when the token to his account is about to expire.
Using this request, you can create a new Facebook token request
Response
201 (Created)
Content-Type: application/json
{"uri":"/gdc/projects/Project5/dataload/download/facebook/tokens/TokenABC"}
Obtain all Facebook tokens for a particular project
Response
200 (OK)
Content-Type: application/json
{
"facebookTokens" : {
"items" : [
"/gdc/projects/Project5/dataload/download/facebook/tokens/TokenA",
"/gdc/projects/Project5/dataload/download/facebook/tokens/TokenB" ]
}
}
Obtain a specific Facebook token
Response
200 (OK)
Content-Type: application/json
{
"facebookToken" : {
"id" : "/gdc/projects/Project5/dataload/download/facebook/tokens/TokenABC",
"email" : "example@example.com",
"label" : "Facebook account A",
"facebookAccountId" : "xxffaa5",
"applicationId" : "123456",
"issued" : "2013-05-09T11:37:32.778Z",
"expired" : null,
"token" : "Some token issued by Facebook",
"notificationsEnabled" : true,
"state" : "LONGLIVED",
"scope" : [ ]
}
}
Update a Facebook token
Response
204 (No Content)
Delete a facebook token
Response
204 (No Content)