{ "meta": { "instanceId": "de1deacb995e9789a1b5ac28ca5a2bbf68a62b7772a678be2089f8ea7d772332" }, "nodes": [ { "parameters": { "operation": "executeQuery", "query": "WITH UserLastLoginAndStatus AS (\n SELECT\n u.id AS user_id,\n u.name,\n (\n SELECT MAX(pseu.current_login_at)\n FROM canvas.pseudonyms pseu\n WHERE pseu.user_id = u.id\n ) AS last_login,\n (\n SELECT MAX(pseu.workflow_state)\n FROM canvas.pseudonyms pseu\n WHERE pseu.user_id = u.id\n ) AS account_status,\n COUNT(*) FILTER (WHERE enrol.workflow_state = 'active') AS active_enrol\n FROM\n canvas.users u\n JOIN canvas.enrollments enrol ON enrol.user_id = u.id\n WHERE enrol.type = 'StudentEnrollment'\n GROUP BY u.id, u.name\n)\nSELECT *\nFROM UserLastLoginAndStatus\nWhere account_status = 'active'\nand active_enrol = 0", "options": {} }, "id": "d40722e3-218c-428a-b8eb-3a3fc91801e8", "name": "Postgres", "type": "n8n-nodes-base.postgres", "typeVersion": 2.3, "position": [ 260, 340 ], "credentials": { "postgres": { "id": "WFNsqzplgZIY3Vka", "name": "Postgres Canvas Data 2" } } }, { "parameters": { "options": {} }, "id": "9e6bba10-e1aa-4136-88f3-e3137ed59030", "name": "Loop Over Items", "type": "n8n-nodes-base.splitInBatches", "typeVersion": 3, "position": [ 440, 340 ] }, { "parameters": { "mode": "raw", "jsonOutput": "{\n \"canvas_url\": \"https://YOURSCHOOL.instructure.com/\",\n \"token\": \"Your Canvas API Token\"\n}", "include": "none", "options": {} }, "id": "ace5d233-06d4-47d3-a8e6-d06171bffc58", "name": "Settings", "type": "n8n-nodes-base.set", "typeVersion": 3.1, "position": [ 260, 200 ] }, { "parameters": { "method": "PUT", "url": "={{ $items(\"Settings\")[0].json.canvas_url }}api/v1/users/{{ $json.user_id }}", "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "Authorization", "value": "=Bearer {{ $items(\"Settings\")[0].json.token }}" } ] }, "sendBody": true, "bodyParameters": { "parameters": [ { "name": "user[event]", "value": "suspend" } ] }, "options": {} }, "id": "26da0019-07e4-4197-b28e-4df635e9df74", "name": "(API) Suspend User", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.1, "position": [ 620, 340 ] }, { "parameters": { "rule": { "interval": [ { "field": "weeks" } ] } }, "id": "524301a4-4c27-4b50-a89e-ce06800b8c09", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.1, "position": [ 20, 340 ] } ], "connections": { "Postgres": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] }, "Loop Over Items": { "main": [ null, [ { "node": "(API) Suspend User", "type": "main", "index": 0 } ] ] }, "(API) Suspend User": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] }, "Schedule Trigger": { "main": [ [ { "node": "Settings", "type": "main", "index": 0 }, { "node": "Postgres", "type": "main", "index": 0 } ] ] } } }