Pages and cards
Use to find card instances (their instance_id and settings), e.g. which sticky notes or habit trackers a course has, before calling a card-specific tool.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
scope_type*Scope Typeprogram, term or course overview; 'today' is the Program's Today page
"program""term""course""today"scope_id*Scope IdProgram, term or course id; for 'today' the Program id
Successful Response
application/json- response
scope_type*Scope Type"program""term""course""today"scope_id*Scope Idcards*array<>customized*CustomizedFalse while the board still follows the template
updated_at*|nullcurl -X GET 'https://example.com/layouts/boards/program/string'{ "scope_type": "program", "scope_id": "string", "cards": [ { "instance_id": "string", "card_id": "string", "size": "s", "x": 0, "y": 0, "positions": [ { "cols": 6, "x": 0, "y": 0 } ], "settings": {} } ], "customized": true, "updated_at": "2019-08-24T14:15:22Z"}Cards left out of the list are deleted together with their data.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
scope_type*Scope TypeBoard scope type
"program""term""course""today"scope_id*Scope IdBoard scope id
application/json- body
cards*array<>The whole layout; cards left out are deleted
items <= 60Successful Response
application/json- response
scope_type*Scope Type"program""term""course""today"scope_id*Scope Idcards*array<>customized*CustomizedFalse while the board still follows the template
updated_at*|nullcurl -X PUT 'https://example.com/layouts/boards/program/string' \ -H 'Content-Type: application/json' \ -d '{ "cards": [ { "card_id": "string", "size": "s", "x": 0, "y": 0 } ]}'{ "scope_type": "program", "scope_id": "string", "cards": [ { "instance_id": "string", "card_id": "string", "size": "s", "x": 0, "y": 0, "positions": [ { "cols": 6, "x": 0, "y": 0 } ], "settings": {} } ], "customized": true, "updated_at": "2019-08-24T14:15:22Z"}Use when the user asks to put a card (sticky note, pomodoro timer, habit tracker, ...) on an overview or the Today page. The card goes to the first free spot. Check with plugins.catalog.list that its plugin is installed.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
scope_type*Scope Typeprogram, term or course overview; 'today' is the Program's Today page
"program""term""course""today"scope_id*Scope IdProgram, term or course id; for 'today' the Program id
application/json- body
card_id*Card IdCard to add, e.g. 'sticky.note' or 'pomodoro.timer'
1 <= length <= 100size?|Size; default is the card's own
settings?|Initial settings
Successful Response
application/json- response
instance_id*Instance IdCard instance id; pass it to card capabilities
card_id*Card IdWhich card, e.g. 'sticky.note'
size*Sizes=1x1, m=2x1, l=2x2, xl=4x2 on a 4-column grid
"s""m""l""xl"x*XColumn, 0-3
y*YRow, from 0
positions?array<>Positions on the wider 6- and 8-column grids, where the user placed them
settings*The card's settings as stored
curl -X POST 'https://example.com/layouts/boards/program/string/cards' \ -H 'Content-Type: application/json' \ -d '{ "card_id": "string"}'{ "instance_id": "string", "card_id": "string", "size": "s", "x": 0, "y": 0, "positions": [ { "cols": 6, "x": 0, "y": 0 } ], "settings": {}}layouts.board.get already includes every card's settings.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
instance_id*Instance IdCard instance id
Successful Response
application/json- response
instance_id*Instance Idcard_id*Card Idsettings*curl -X GET 'https://example.com/layouts/cards/string/settings'{ "instance_id": "string", "card_id": "string", "settings": {}}The settings are validated against the card's schema.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
instance_id*Instance IdCard instance id
application/json- body
settings*The card's whole settings object
Successful Response
application/json- response
instance_id*Instance Idcard_id*Card Idsettings*curl -X PUT 'https://example.com/layouts/cards/string/settings' \ -H 'Content-Type: application/json' \ -d '{ "settings": { "property1": null, "property2": null }}'{ "instance_id": "string", "card_id": "string", "settings": {}}Use when the user asks to remove a card. Find its instance_id with layouts.board.get.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
instance_id*Instance IdCard instance id
Successful Response
application/json- response
instance_id*Instance Idcurl -X DELETE 'https://example.com/layouts/cards/string'{ "instance_id": "string"}Applies to every Program, every term or every course alike.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
scope_type*Scope TypeScope type whose tab bar to read
"program""term""course"Successful Response
application/json- response
scope_type*Scope Type"program""term""course"order*array<string>Page ids in tab order; pages not listed come last
hidden*array<string>Hidden page ids
curl -X GET 'https://example.com/layouts/nav/program'{ "scope_type": "program", "order": [ "string" ], "hidden": [ "string" ]}Applies to every Program, every term or every course alike.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
scope_type*Scope TypeScope type whose tab bar to change
"program""term""course"application/json- body
order*array<>Page ids in tab order
items <= 100hidden*array<>Page ids to hide
items <= 100Successful Response
application/json- response
scope_type*Scope Type"program""term""course"order*array<string>Page ids in tab order; pages not listed come last
hidden*array<string>Hidden page ids
curl -X PUT 'https://example.com/layouts/nav/program' \ -H 'Content-Type: application/json' \ -d '{ "order": [ "string" ], "hidden": [ "string" ]}'{ "scope_type": "program", "order": [ "string" ], "hidden": [ "string" ]}Either the user's own default or the built-in one.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
scope_type*Scope TypeScope type of the default layout
"program""term""course""today"Successful Response
application/json- response
scope_type*Scope Type"program""term""course""today"cards*array<>customized*CustomizedTrue when the user saved their own default layout
curl -X GET 'https://example.com/layouts/templates/program'{ "scope_type": "program", "cards": [ { "card_id": "string", "size": "s", "x": 0, "y": 0 } ], "customized": true}Boards that were never changed follow it at once.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
scope_type*Scope TypeScope type of the default layout
"program""term""course""today"Successful Response
application/json- response
scope_type*Scope Type"program""term""course""today"cards*array<>customized*CustomizedTrue when the user saved their own default layout
curl -X DELETE 'https://example.com/layouts/templates/program'{ "scope_type": "program", "cards": [ { "card_id": "string", "size": "s", "x": 0, "y": 0 } ], "customized": true}Boards that were never changed follow it at once; changed boards keep theirs.
semestra_session<token>Set by the sign-in endpoints for the web app. Requests other than GET, HEAD and OPTIONS also need the X-Semestra-CSRF header set to the semestra_csrf cookie.
scope_type*Scope TypeScope type of the board and template
"program""term""course""today"application/json- body
scope_id*Scope IdThe board whose layout becomes the default
1 <= length <= 200Successful Response
application/json- response
scope_type*Scope Type"program""term""course""today"cards*array<>customized*CustomizedTrue when the user saved their own default layout
curl -X POST 'https://example.com/layouts/templates/program:from-board' \ -H 'Content-Type: application/json' \ -d '{ "scope_id": "string"}'{ "scope_type": "program", "cards": [ { "card_id": "string", "size": "s", "x": 0, "y": 0 } ], "customized": true}