Deze documentatie legt uit hoe je de ioi REST API kunt bevragen om ruwe gegevens uit de database op te halen: een lijst van records van een doctype ophalen, of een record in detail lezen.
Ze behandelt uitsluitend het lezen van gegevens. Ze is gebaseerd op de native REST API van het Frappe framework, waarop ioi is gebouwd.
Vervang in de onderstaande voorbeelden <base-url> door de URL van je ioi-omgeving.
Authenticatie #
Toegang tot de API verloopt via een API Key en een API Secret, gegenereerd vanuit je gebruikersinstellingen.
Deze twee waarden worden samengevoegd met een : en meegestuurd in de HTTP-header Authorization, in het volgende formaat:
Authorization: token api_key:api_secret
Voorbeeld - cURL #
curl http://<base-url>/api/method/frappe.auth.get_logged_user \
-H "Authorization: token api_key:api_secret"
Voorbeeld - JavaScript (fetch) #
fetch('http://<base-url>/api/method/frappe.auth.get_logged_user', {
headers: {
'Authorization': 'token api_key:api_secret'
}
})
.then(r => r.json())
.then(r => {
console.log(r);
})
Elke hieronder beschreven aanroep moet deze Authorization-header bevatten.
Documenten Opsommen #
Haalt een lijst van records op voor een gegeven doctype.
GET /api/resource/:doctype
Standaard bevat het antwoord 20 records en wordt enkel het veld name getoond.
Voorbeeld van een antwoord:
{
"data": [
{"name": "f765eef382"},
{"name": "2a26fa1c64"},
{"name": "f32c68060f"}
]
}
De terug te geven velden kiezen #
GET /api/resource/:doctype?fields=["field1", "field2"]
Voorbeeld van een antwoord:
{
"data": [
{"description": "Business worker talk society...", "name": "f765eef382"},
{"description": "This reveal as look near sister...", "name": "2a26fa1c64"}
]
}
Een linkveld uitbreiden (expand) #
Geeft de volledige details van een gelinkt veld terug, in plaats van enkel de identifier.
GET /api/resource/:doctype?expand=["priority"]
Voorbeeld van een antwoord: het veld priority geeft het volledige object terug in plaats van enkel zijn identifier:
{
"data": [
{
"name": "f765eef382",
"priority": {
"name": "a1b2c3",
"title": "Medium",
"creation": "2025-11-05 19:02:19.106966"
}
},
{
"name": "f765eef393",
"priority": {
"name": "a1b2c4",
"title": "High",
"creation": "2025-11-05 20:02:19.106966"
}
}
]
}
Resultaten Filteren #
De parameter filters neemt een array van voorwaarden in het formaat ["veld", "operator", "waarde"], gecombineerd met EN-logica (AND):
GET /api/resource/:doctype?filters=[["field1", "=", "value1"], ["field2", ">", "value2"]]
Om voorwaarden met OF-logica (OR) te combineren, gebruik je or_filters met dezelfde syntax.
Resultaten Sorteren #
GET /api/resource/:doctype?order_by=title%20desc
Paginering #
GET /api/resource/:doctype?limit_start=5&limit_page_length=10
Voorbeeld van een antwoord:
{
"data": [
{"name": "6234d15099"},
{"name": "62f2181ee0"},
{"name": "a50afbbfaa"},
{"name": "aa12a5cf71"},
{"name": "6ac9800d4e"},
{"name": "4bcf8b701c"},
{"name": "aee15f4c20"},
{"name": "6ba753afef"}
]
}
Er bestaat een alternatieve syntax met limit:
GET /api/resource/:doctype?limit_start=5&limit=10
Antwoordformaat als lijst #
Standaard wordt elk record teruggegeven als een dictionary (sleutel/waarde). Om in plaats daarvan een lijst van waarden te krijgen:
GET /api/resource/:doctype?limit_start=5&limit=5&as_dict=False
Voorbeeld van een antwoord: elk record wordt een lijst van waarden (hier wordt één enkel veld teruggegeven) in plaats van een dictionary:
{
"data": [
["6234d15099"],
["62f2181ee0"],
["a50afbbfaa"]
]
}
Debug #
Om de uitgevoerde SQL-query en de uitvoeringstijd weer te geven:
GET /api/resource/:doctype?limit_start=10&limit=5&debug=True
Voorbeeld van een antwoord: de uitgevoerde SQL-query verschijnt in het veld exc, naast de gegevens:
{
"data": [
{"name": "4bcf8b701c"},
{"name": "aee15f4c20"},
{"name": "6ba753afef"},
{"name": "f4b7e24abc"},
{"name": "bd9156096c"}
],
"exc": "[\"select `tabToDo`.`name`\\n\\t\\t\\tfrom `tabToDo`\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t order by `tabToDo`.`modified` DESC\\n\\t\\t\\tlimit 5 offset 10\", \"Execution time: 0.0 sec\"]"
}
Een Specifiek Document Lezen #
Haalt het volledige detail van een record op, aan de hand van zijn identifier (name).
GET /api/resource/:doctype/:name
Voorbeeld van een antwoord:
{
"data": {
"name": "bf2e760e13",
"owner": "Administrator",
"creation": "2019-06-03 14:19:00.281026",
"modified": "2019-06-03 14:19:00.281026",
"modified_by": "Administrator",
"idx": 0,
"docstatus": 0,
"status": "Open",
"priority": "Medium",
"description": "<p>Test description</p>",
"doctype": "ToDo"
}
}
Gelinkte Velden Uitbreiden #
Zodat linkvelden het volledige object teruggeven in plaats van enkel hun identifier:
GET /api/resource/:doctype/:name?expand_links=True
Voorbeeld van een antwoord: hier geeft priority het volledige object terug in plaats van enkel zijn identifier:
{
"data": {
"name": "bf2e760e13",
"owner": "Administrator",
"creation": "2019-06-03 14:19:00.281026",
"modified": "2019-06-03 14:19:00.281026",
"modified_by": "Administrator",
"idx": 0,
"docstatus": 0,
"status": "Open",
"priority": {
"name": "a1b2c3",
"title": "Medium",
"creation": "2025-11-05 19:02:19.106966"
},
"description": "<p>Test description</p>",
"doctype": "ToDo"
}
}
Samenvatting #
Deze API laat uitsluitend toe om gegevens die al in de database aanwezig zijn te raadplegen: lijsten van records en individuele documenten.
Aussi pour cet écran