API Reference
All following requests need an authentication token received as described in the guide.
Therefore, don't forget to use Authorization: Bearer <token> in your request's headers.
Please refer to the General Concepts's vocabulary to understand the concepts.
Query strings​
Within Graasp, the apps are given some information by query string:
- itemId: item id of the corresponding item
App Actions​
id: the app action idmemberId: the member id related to the app action (default: current authenticated member id)itemId: the item id corresponding to the current appdata: object containing any necessary datatype: the related action related to the datacreatedAt: creation timestamp of the app action
GET App Action​
GET <apiHost>/app-items/<item-id>/app-action
- return value: an array of all app data related to
itemId
GET App Action for multiple items​
TODO
POST App Action​
POST <apiHost>/app-items/<item-id>/app-action
- body:
{ data: { ... }, type, [memberId], [visibility] } - returned value: created app action
App Data​
id: the app data idmemberId: the member id related to the data (default: current authenticated member id)itemId: the item id corresponding to the current appdata: object containing any necessary datatype: the related action related to the datacreator: the member id who created the app datavisibility:memberoritemcreatedAt: creation timestamp of the app dataupdatedAt: update timestamp of the app data
GET App Data​
GET <apiHost>/app-items/<item-id>/app-data
- return value: an array of all app data related to
itemId
GET App Data for multiple items​
TODO
POST App Data​
POST <apiHost>/app-items/<item-id>/app-data
- body:
{ data: { ... }, type, [memberId], [visibility] } - returned value: created app data
PATCH App Data​
PATCH <apiHost>/app-items/<item-id>/app-data/<app-data-id>
- body:
{ data: { ... } } - returned value: patched app data
DELETE App Data​
DELETE <apiHost>/app-items/<item-id>/app-data/<app-data-id>
- returned value: deleted app data
Upload a file as an app data​
POST <apiHost>/app-items/upload?id=<item-id>
- it is not possible to patch a file app setting
- send files as form data, the name of the file will be the name of the app setting
- returned value: created app setting
Download a file from an app data​
GET <apiHost>/app-items/<app-data-id>/download
- returned value: signed url of the file
App Context​
members: a list of all the members having access to the app's parent and the app itselfitem: all corresponding item properties
GET App Action​
GET <apiHost>/app-items/<item-id>/context
- return value: the context of the corresponding item
App Settings​
id: the app setting idname: the app setting nameitemId: the item id corresponding to the current appdata: object containing any necessary settingcreator: the member id who created the app settingcreatedAt: creation timestamp of the app settingupdatedAt: update timestamp of the app setting
GET App Setting​
GET <apiHost>/app-items/<item-id>/app-settings
- return value: an array of all app settings related to
itemId
POST App Setting​
POST <apiHost>/app-items/<item-id>/app-settings
- body:
{ name, data: { ... } } - returned value: created app setting
PATCH App Setting​
PATCH <apiHost>/app-items/<item-id>/app-settings/<app-setting-id>
- body:
{ data: { ... } } - permission: only member with the admin permission can patch an app setting
- it is not possible to patch a file app setting
- returned value: patched app setting
DELETE App Setting​
DELETE <apiHost>/app-items/<item-id>/app-settings/<app-setting-id>
- returned value: deleted app data
- permission: only member with the admin permission can delete an app setting
Upload a file as an app setting​
POST <apiHost>/app-items/app-settings/upload?id=<item-id>
- it is not possible to patch a file app setting
- send files as form data, the name of the file will be the name of the app setting
- returned value: created app setting
Download a file from an app setting​
GET <apiHost>/app-items/app-settings/<app-setting-id>/download
- returned value: signed url of the file
Parent Window​
Since apps are embedded in Graasp with an iframe, it is possible to communicate with the parent window using both regular window.postMessage and MessageChannel. One should first use window.postMessage to get the context, as well as the MessageChannel's port to continue the process (see guide).
window.postMessage​
GET Context​
Context is different from App Context! Context (sometimes called Local Context) is always available to the app, even without using Graasp API, while App Context can only be fetched with a token.
postMessage(
JSON.stringify({
type: 'GET_CONTEXT',
}
);
- return values:
apiHost: the api host origincontext: where the app is running (eg:builder,explorer,standalone, ...)itemId: item id which corresponds to your app resource idlang: languagememberId: the current authenticated user using the apppermission: the current member's permissionsettings: the corresponding item settings- as well as the
portof theMessageChannelyou will use from now on to communicate with the parent window.
MessageChannel​
GET Authentication Token​
port.postMessage(
JSON.stringify({
type: 'GET_AUTH_TOKEN',
payload: {
key: <app key>,
origin: <app origin>,
},
})
);
- return value: authentication token