n8n-nodes-smartschool 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +71 -0
- package/dist/credentials/SmartSchoolApi.credentials.d.ts +21 -0
- package/dist/credentials/SmartSchoolApi.credentials.js +53 -0
- package/dist/credentials/SmartSchoolApi.credentials.js.map +1 -0
- package/dist/icons/github.dark.svg +3 -0
- package/dist/icons/github.svg +3 -0
- package/dist/icons/smartschool.logo.dark.svg +1 -0
- package/dist/icons/smartschool.logo.svg +1 -0
- package/dist/nodes/SmartSchool/GenericFunctions.d.ts +6 -0
- package/dist/nodes/SmartSchool/GenericFunctions.js +171 -0
- package/dist/nodes/SmartSchool/GenericFunctions.js.map +1 -0
- package/dist/nodes/SmartSchool/SmartSchool.node.d.ts +5 -0
- package/dist/nodes/SmartSchool/SmartSchool.node.js +2270 -0
- package/dist/nodes/SmartSchool/SmartSchool.node.js.map +1 -0
- package/dist/nodes/SmartSchool/SmartSchool.node.json +13 -0
- package/dist/nodes/SmartSchool/shared/errorCodes.d.ts +1 -0
- package/dist/nodes/SmartSchool/shared/errorCodes.js +63 -0
- package/dist/nodes/SmartSchool/shared/errorCodes.js.map +1 -0
- package/dist/nodes/SmartSchool/shared/fields.d.ts +3 -0
- package/dist/nodes/SmartSchool/shared/fields.js +18 -0
- package/dist/nodes/SmartSchool/shared/fields.js.map +1 -0
- package/dist/nodes/SmartSchool/smartschool.logo.dark.svg +1 -0
- package/dist/nodes/SmartSchool/smartschool.logo.svg +1 -0
- package/dist/package.json +53 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +53 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Makcime
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# n8n-nodes-smartschool
|
|
2
|
+
|
|
3
|
+
This repository contains the SmartSchool community node for n8n. It lets you work with your SmartSchool tenant (accounts, helpdesk, messaging) directly from any workflow.
|
|
4
|
+
|
|
5
|
+
[SmartSchool](https://www.smartschool.be/) est la plateforme numérique utilisée par de nombreuses écoles francophones pour la communication, les cours et le suivi administratif. Ce paquet expose les API SmartSchool via SOAP dans n8n.
|
|
6
|
+
|
|
7
|
+
[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
|
|
8
|
+
|
|
9
|
+
[Installation](#installation)
|
|
10
|
+
[Operations](#operations)
|
|
11
|
+
[Credentials](#credentials)
|
|
12
|
+
[Compatibility](#compatibility)
|
|
13
|
+
[Usage](#usage)
|
|
14
|
+
[Resources](#resources)
|
|
15
|
+
[Version history](#version-history)
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
Follow the [community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation/). The package name is `n8n-nodes-smartschool`.
|
|
20
|
+
|
|
21
|
+
After installation, restart n8n so it loads the new node from `~/.n8n/custom` (or the directory you configured through `N8N_CUSTOM_EXTENSIONS`).
|
|
22
|
+
|
|
23
|
+
## Operations
|
|
24
|
+
|
|
25
|
+
All functionality is exposed by a single node named **SmartSchool**. It currently supports five resource families:
|
|
26
|
+
|
|
27
|
+
| Resource | Operations | Description |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| `Group` | `Get All Accounts`, `Get All Accounts (Extended)`, `Get All Groups and Classes`, `Get Class List (CSV)`, `Get Class List (JSON)`, `Get Class Teachers`, `Change Group Visibility`, `Save Group`, `Save Class`, `Save User to Group`, `Remove User from Group`, `Delete Class`, `Save Class List (CSV)`, `Save Class List (JSON)`, `Get Schoolyear Data of Class`, `Save Schoolyear Data of Class`, `Get Skore Class Teacher Course Relation`, `Clear Group`, `Unregister Student` | Work with the group/class hierarchy, export class lists, and manage classes, groups, and memberships. |
|
|
30
|
+
| `Helpdesk` | `List Helpdesk Items`, `Create Helpdesk Ticket` | Retrieve the helpdesk mini database (categories + item IDs) and create new tickets. |
|
|
31
|
+
| `Message` | `Send Message`, `Save Signature` | Send SmartSchool messages (main account or co-account) with optional attachments and manage user signatures. |
|
|
32
|
+
| `Account` | `Get User Details`, `Get User Details by Number`, `Get User Details by Username`, `Get User Details by Scannable Code`, `Get User Official Class`, `Save User`, `Delete User`, `Set Account Status`, `Change Username`, `Change Internal Number`, `Change Password at Next Login`, `Force Password Reset`, `Replace Internal Number`, `Save User Parameter`, `Remove Co-Account`, `Save Password`, `Deactivate Two-Factor Authentication` | Read and mutate account data, credentials, status, and user parameters. |
|
|
33
|
+
| `Parameter` | `Get Reference Field` | Fetch the platform reference field configuration and documentation. |
|
|
34
|
+
| `Absence` | `Get Absents`, `Get Absents with Alias`, `Get Absents by Date`, `Get Absents with Alias by Date`, `Get Absents with Internal Number by Date`, `Get Absents with Username by Date`, `Get Absents by Date and Group` | Pull absence data by student, date, or class/group with optional alias labels. |
|
|
35
|
+
| `Course` | `Get Courses`, `Add Course`, `Add Course Students`, `Add Course Teacher` | List courses or manage course assignments for classes and teachers. |
|
|
36
|
+
| `System` | `Start Skore Sync`, `Check Status`, `Get Student Career`, `Get Deliberation Lines` | Kick off Skore sync jobs, check their status, and read student career history. |
|
|
37
|
+
|
|
38
|
+
Roadmap work (additional API coverage) is tracked in `docs/SMARTSCHOOL-ROADMAP.md`.
|
|
39
|
+
|
|
40
|
+
## Credentials
|
|
41
|
+
|
|
42
|
+
Create a credential of type **SmartSchool API** and provide:
|
|
43
|
+
|
|
44
|
+
1. `API Endpoint` – e.g. `https://myschool.smartschool.be/Webservices/V3` (without `?wsdl`).
|
|
45
|
+
2. `Access Code` – the SmartSchool API access code tied to your tenant.
|
|
46
|
+
|
|
47
|
+
The credential is reused by every resource/operation. If you rotate the access code, update the credential and all workflows keep working.
|
|
48
|
+
|
|
49
|
+
## Compatibility
|
|
50
|
+
|
|
51
|
+
- Node.js 20+ (matches n8n 1.40+ default runtime).
|
|
52
|
+
- Developed and tested against n8n `1.45.x` but should run on any release that supports community nodes.
|
|
53
|
+
|
|
54
|
+
## Usage
|
|
55
|
+
|
|
56
|
+
1. **Fetch users from a class** – Choose resource `Group`, enter the class code (e.g. `1F`), and enable *Include Subgroups* if you need nested groups. Each member shows up as an item in the output data.
|
|
57
|
+
2. **Prepare helpdesk automations** – First run `List Helpdesk Items` to capture the `itemId` values for your mini database categories. Use those IDs in the `Create Helpdesk Ticket` operation (fields `Mini Database Item ID`, `Priority`, `User Identifier`, etc.).
|
|
58
|
+
3. **Send notifications** – Select resource `Message`, fill in the title/body, sender identifier (`Null` for anonymous), choose the account index, and optionally add base64 attachments via the collection input.
|
|
59
|
+
|
|
60
|
+
Every operation honours `Continue On Fail`, so you can branch on success/error or retry requests inside the workflow.
|
|
61
|
+
|
|
62
|
+
## Resources
|
|
63
|
+
|
|
64
|
+
- [SmartSchool API documentation](https://schoolsync.gitbook.io/smartschool-kit)
|
|
65
|
+
- [n8n community nodes docs](https://docs.n8n.io/integrations/#community-nodes)
|
|
66
|
+
|
|
67
|
+
## Version history
|
|
68
|
+
|
|
69
|
+
| Version | Notes |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| `0.1.0` | Initial public release with accounts, helpdesk and messaging operations. |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Icon, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class SmartSchoolApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
icon: Icon;
|
|
6
|
+
documentationUrl: string;
|
|
7
|
+
test: {
|
|
8
|
+
request: {
|
|
9
|
+
method: "POST";
|
|
10
|
+
baseURL: string;
|
|
11
|
+
url: string;
|
|
12
|
+
headers: {
|
|
13
|
+
'Content-Type': string;
|
|
14
|
+
SOAPAction: string;
|
|
15
|
+
};
|
|
16
|
+
body: string;
|
|
17
|
+
json: boolean;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
properties: INodeProperties[];
|
|
21
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SmartSchoolApi = void 0;
|
|
4
|
+
class SmartSchoolApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'smartSchoolApi';
|
|
7
|
+
this.displayName = 'SmartSchool API';
|
|
8
|
+
this.icon = { light: 'file:../icons/smartschool.logo.svg', dark: 'file:../icons/smartschool.logo.dark.svg' };
|
|
9
|
+
this.documentationUrl = 'https://schoolsync.gitbook.io/smartschool-kit';
|
|
10
|
+
this.test = {
|
|
11
|
+
request: {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
baseURL: '={{$credentials.apiEndpoint}}',
|
|
14
|
+
url: '',
|
|
15
|
+
headers: {
|
|
16
|
+
'Content-Type': 'text/xml; charset=utf-8',
|
|
17
|
+
SOAPAction: '={{$credentials.apiEndpoint}}#getReferenceField',
|
|
18
|
+
},
|
|
19
|
+
body: '<?xml version="1.0" encoding="utf-8"?>' +
|
|
20
|
+
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ' +
|
|
21
|
+
'xmlns:tns="={{$credentials.apiEndpoint}}">' +
|
|
22
|
+
'<soap:Body><tns:getReferenceField>' +
|
|
23
|
+
'<accesscode>{{$credentials.accesscode}}</accesscode>' +
|
|
24
|
+
'</tns:getReferenceField></soap:Body></soap:Envelope>',
|
|
25
|
+
json: false,
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
this.properties = [
|
|
29
|
+
{
|
|
30
|
+
displayName: 'API Endpoint',
|
|
31
|
+
name: 'apiEndpoint',
|
|
32
|
+
type: 'string',
|
|
33
|
+
default: '',
|
|
34
|
+
placeholder: 'https://myschool.smartschool.be/Webservices/V3',
|
|
35
|
+
description: 'Base URL of your SmartSchool API endpoint',
|
|
36
|
+
required: true,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
displayName: 'Access Code',
|
|
40
|
+
name: 'accesscode',
|
|
41
|
+
type: 'string',
|
|
42
|
+
typeOptions: {
|
|
43
|
+
password: true,
|
|
44
|
+
},
|
|
45
|
+
default: '',
|
|
46
|
+
description: 'SmartSchool API access code',
|
|
47
|
+
required: true,
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.SmartSchoolApi = SmartSchoolApi;
|
|
53
|
+
//# sourceMappingURL=SmartSchoolApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SmartSchoolApi.credentials.js","sourceRoot":"","sources":["../../credentials/SmartSchoolApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAc;IAA3B;QACC,SAAI,GAAG,gBAAgB,CAAC;QAExB,gBAAW,GAAG,iBAAiB,CAAC;QAEhC,SAAI,GAAS,EAAE,KAAK,EAAE,oCAAoC,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC;QAE9G,qBAAgB,GAAG,+CAA+C,CAAC;QACnE,SAAI,GAAG;YACN,OAAO,EAAE;gBACR,MAAM,EAAE,MAAe;gBACvB,OAAO,EAAE,+BAA+B;gBACxC,GAAG,EAAE,EAAE;gBACP,OAAO,EAAE;oBACR,cAAc,EAAE,yBAAyB;oBACzC,UAAU,EAAE,iDAAiD;iBAC7D;gBACD,IAAI,EACH,wCAAwC;oBACxC,wEAAwE;oBACxE,4CAA4C;oBAC5C,oCAAoC;oBACpC,sDAAsD;oBACtD,sDAAsD;gBACvD,IAAI,EAAE,KAAK;aACX;SACD,CAAC;QAEF,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,gDAAgD;gBAC7D,WAAW,EAAE,2CAA2C;gBACxD,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,6BAA6B;gBAC1C,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;IACH,CAAC;CAAA;AAlDD,wCAkDC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0165 0C8.94791 0 0 9.01388 0 20.1653C0 29.0792 5.73324 36.6246 13.6868 39.2952C14.6812 39.496 15.0454 38.8613 15.0454 38.3274C15.0454 37.8599 15.0126 36.2575 15.0126 34.5879C9.4445 35.79 8.28498 32.1841 8.28498 32.1841C7.39015 29.847 6.06429 29.2463 6.06429 29.2463C4.24185 28.011 6.19704 28.011 6.19704 28.011C8.21861 28.1446 9.27938 30.081 9.27938 30.081C11.0686 33.1522 13.9518 32.2844 15.1118 31.7502C15.2773 30.4481 15.8079 29.5467 16.3713 29.046C11.9303 28.5785 7.25781 26.8425 7.25781 19.0967C7.25781 16.8932 8.05267 15.0905 9.31216 13.6884C9.11344 13.1877 8.41732 11.1174 9.51128 8.34644C9.51128 8.34644 11.2014 7.81217 15.0122 10.4164C16.6438 9.97495 18.3263 9.7504 20.0165 9.74851C21.7067 9.74851 23.4295 9.98246 25.0205 10.4164C28.8317 7.81217 30.5218 8.34644 30.5218 8.34644C31.6158 11.1174 30.9192 13.1877 30.7205 13.6884C32.0132 15.0905 32.7753 16.8932 32.7753 19.0967C32.7753 26.8425 28.1028 28.5449 23.6287 29.046C24.358 29.6802 24.9873 30.882 24.9873 32.7851C24.9873 35.4893 24.9545 37.6596 24.9545 38.327C24.9545 38.8613 25.3192 39.496 26.3132 39.2956C34.2667 36.6242 39.9999 29.0792 39.9999 20.1653C40.0327 9.01388 31.052 0 20.0165 0Z" fill="white"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0165 0C8.94791 0 0 9.01388 0 20.1653C0 29.0792 5.73324 36.6246 13.6868 39.2952C14.6812 39.496 15.0454 38.8613 15.0454 38.3274C15.0454 37.8599 15.0126 36.2575 15.0126 34.5879C9.4445 35.79 8.28498 32.1841 8.28498 32.1841C7.39015 29.847 6.06429 29.2463 6.06429 29.2463C4.24185 28.011 6.19704 28.011 6.19704 28.011C8.21861 28.1446 9.27938 30.081 9.27938 30.081C11.0686 33.1522 13.9518 32.2844 15.1118 31.7502C15.2773 30.4481 15.8079 29.5467 16.3713 29.046C11.9303 28.5785 7.25781 26.8425 7.25781 19.0967C7.25781 16.8932 8.05267 15.0905 9.31216 13.6884C9.11344 13.1877 8.41732 11.1174 9.51128 8.34644C9.51128 8.34644 11.2014 7.81217 15.0122 10.4164C16.6438 9.97495 18.3263 9.7504 20.0165 9.74851C21.7067 9.74851 23.4295 9.98246 25.0205 10.4164C28.8317 7.81217 30.5218 8.34644 30.5218 8.34644C31.6158 11.1174 30.9192 13.1877 30.7205 13.6884C32.0132 15.0905 32.7753 16.8932 32.7753 19.0967C32.7753 26.8425 28.1028 28.5449 23.6287 29.046C24.358 29.6802 24.9873 30.882 24.9873 32.7851C24.9873 35.4893 24.9545 37.6596 24.9545 38.327C24.9545 38.8613 25.3192 39.496 26.3132 39.2956C34.2667 36.6242 39.9999 29.0792 39.9999 20.1653C40.0327 9.01388 31.052 0 20.0165 0Z" fill="#24292F"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512"><defs><linearGradient id="a" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FF840E"/><stop offset="8.431%" stop-color="#FF710E"/><stop offset="73.477%" stop-color="#FF0000"/><stop offset="100%" stop-color="#F10A00"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path fill="url(#a)" d="M0,51.2 L0,460.8 C0,490.20193 21.7980701,512 51.2,512 L460.8,512 C490.20193,512 512,490.20193 512,460.8 L512,51.2 C512,21.7980701 490.20193,0 460.8,0 L51.2,0 C21.7980701,0 0,21.7980701 0,51.2 Z"/><path fill="#FFFFFF" d="M137.17333,419.054473 C157.858658,431.56022 199.229315,442.434783 239.481847,442.434783 C336.199734,442.434783 382.042895,391.324338 382.042895,332.057971 C382.042895,279.316342 350.735371,247.236382 285.325007,223.312344 C235.009343,204.281859 213.205889,191.232384 213.205889,162.958521 C213.205889,141.209395 231.654966,118.916542 275.261874,118.916542 C310.482839,118.916542 336.758797,129.247376 350.735371,136.315842 L366.948196,82.4867566 C347.380993,72.6996502 317.750657,64 276.939063,64 C194.756812,64 143.323022,109.129435 143.323022,169.483258 C143.323022,222.224888 183.01649,254.304848 245.631539,276.053973 C293.151888,292.909545 312.160028,309.221389 312.160028,336.951524 C312.160028,366.856572 287.561259,386.974513 243.95435,386.974513 C208.733385,386.974513 174.630546,376.09995 152.827092,363.594203 L137.17333,419.054473 Z"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512"><defs><linearGradient id="a" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FF840E"/><stop offset="8.431%" stop-color="#FF710E"/><stop offset="73.477%" stop-color="#FF0000"/><stop offset="100%" stop-color="#F10A00"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path fill="url(#a)" d="M0,51.2 L0,460.8 C0,490.20193 21.7980701,512 51.2,512 L460.8,512 C490.20193,512 512,490.20193 512,460.8 L512,51.2 C512,21.7980701 490.20193,0 460.8,0 L51.2,0 C21.7980701,0 0,21.7980701 0,51.2 Z"/><path fill="#FFFFFF" d="M137.17333,419.054473 C157.858658,431.56022 199.229315,442.434783 239.481847,442.434783 C336.199734,442.434783 382.042895,391.324338 382.042895,332.057971 C382.042895,279.316342 350.735371,247.236382 285.325007,223.312344 C235.009343,204.281859 213.205889,191.232384 213.205889,162.958521 C213.205889,141.209395 231.654966,118.916542 275.261874,118.916542 C310.482839,118.916542 336.758797,129.247376 350.735371,136.315842 L366.948196,82.4867566 C347.380993,72.6996502 317.750657,64 276.939063,64 C194.756812,64 143.323022,109.129435 143.323022,169.483258 C143.323022,222.224888 183.01649,254.304848 245.631539,276.053973 C293.151888,292.909545 312.160028,309.221389 312.160028,336.951524 C312.160028,366.856572 287.561259,386.974513 243.95435,386.974513 C208.733385,386.974513 174.630546,376.09995 152.827092,363.594203 L137.17333,419.054473 Z"/></g></svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
+
export declare function getSmartSchoolCredentials(this: IExecuteFunctions): Promise<{
|
|
3
|
+
apiEndpoint: string;
|
|
4
|
+
accesscode: string;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function callSmartschoolSoap(this: IExecuteFunctions, method: string, params: Record<string, string | number | boolean>): Promise<any>;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSmartSchoolCredentials = getSmartSchoolCredentials;
|
|
4
|
+
exports.callSmartschoolSoap = callSmartschoolSoap;
|
|
5
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
+
const xmlEscape = (value) => value
|
|
7
|
+
.replace(/&/g, '&')
|
|
8
|
+
.replace(/</g, '<')
|
|
9
|
+
.replace(/>/g, '>')
|
|
10
|
+
.replace(/"/g, '"')
|
|
11
|
+
.replace(/'/g, ''');
|
|
12
|
+
const decodeXmlEntities = (value) => value
|
|
13
|
+
.replace(/</g, '<')
|
|
14
|
+
.replace(/>/g, '>')
|
|
15
|
+
.replace(/"/g, '"')
|
|
16
|
+
.replace(/'/g, "'")
|
|
17
|
+
.replace(/&/g, '&');
|
|
18
|
+
const maybeDecodeBase64 = (value) => {
|
|
19
|
+
if (!/^[A-Za-z0-9+/=\s]+$/.test(value)) {
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const decoded = Buffer.from(value, 'base64').toString('utf8');
|
|
24
|
+
if (!decoded || decoded === value) {
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
if (/^<\?xml|^</.test(decoded.trim()) ||
|
|
28
|
+
/^\s*\{/.test(decoded) ||
|
|
29
|
+
/^\s*\[/.test(decoded)) {
|
|
30
|
+
return decoded;
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const parseXmlSimple = (xml) => {
|
|
39
|
+
var _a;
|
|
40
|
+
const cleaned = xml
|
|
41
|
+
.replace(/<\?xml[\s\S]*?\?>/i, '')
|
|
42
|
+
.replace(/<!DOCTYPE[\s\S]*?>/i, '')
|
|
43
|
+
.replace(/<!--[\s\S]*?-->/g, '')
|
|
44
|
+
.replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g, (_, cdata) => cdata);
|
|
45
|
+
const root = { name: '__root__', attributes: {}, children: [], text: '' };
|
|
46
|
+
const stack = [root];
|
|
47
|
+
const tagRegex = /<([^>]+)>/g;
|
|
48
|
+
let lastIndex = 0;
|
|
49
|
+
for (const match of cleaned.matchAll(tagRegex)) {
|
|
50
|
+
const text = cleaned.slice(lastIndex, match.index).trim();
|
|
51
|
+
if (text) {
|
|
52
|
+
stack[stack.length - 1].text += text;
|
|
53
|
+
}
|
|
54
|
+
const tag = match[1];
|
|
55
|
+
if (tag.startsWith('/')) {
|
|
56
|
+
stack.pop();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const selfClosing = tag.endsWith('/');
|
|
60
|
+
const [rawName, ...attrParts] = tag.replace(/\/$/, '').trim().split(/\s+/);
|
|
61
|
+
const attrs = {};
|
|
62
|
+
const attrRegex = /(\w+)=["']([^"']*)["']/g;
|
|
63
|
+
const attrString = attrParts.join(' ');
|
|
64
|
+
for (const attrMatch of attrString.matchAll(attrRegex)) {
|
|
65
|
+
attrs[attrMatch[1]] = decodeXmlEntities(attrMatch[2]);
|
|
66
|
+
}
|
|
67
|
+
const node = { name: rawName, attributes: attrs, children: [], text: '' };
|
|
68
|
+
stack[stack.length - 1].children.push(node);
|
|
69
|
+
if (!selfClosing) {
|
|
70
|
+
stack.push(node);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
lastIndex = match.index + match[0].length;
|
|
74
|
+
}
|
|
75
|
+
const normalize = (node) => {
|
|
76
|
+
const hasChildren = node.children.length > 0;
|
|
77
|
+
const hasAttrs = Object.keys(node.attributes).length > 0;
|
|
78
|
+
const text = node.text.trim();
|
|
79
|
+
const result = {};
|
|
80
|
+
if (hasAttrs) {
|
|
81
|
+
result._attributes = node.attributes;
|
|
82
|
+
}
|
|
83
|
+
for (const child of node.children) {
|
|
84
|
+
const value = normalize(child);
|
|
85
|
+
if (result[child.name]) {
|
|
86
|
+
const existing = result[child.name];
|
|
87
|
+
result[child.name] = Array.isArray(existing) ? [...existing, value] : [existing, value];
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
result[child.name] = value;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (!hasChildren && !hasAttrs) {
|
|
94
|
+
return text;
|
|
95
|
+
}
|
|
96
|
+
if (text) {
|
|
97
|
+
result._text = text;
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
};
|
|
101
|
+
const normalized = normalize(root);
|
|
102
|
+
return (_a = normalized.__root__) !== null && _a !== void 0 ? _a : normalized;
|
|
103
|
+
};
|
|
104
|
+
const parseSoapResponse = async (xml) => {
|
|
105
|
+
const faultMatch = xml.match(/<faultstring[^>]*>([\s\S]*?)<\/faultstring>/i);
|
|
106
|
+
if (faultMatch === null || faultMatch === void 0 ? void 0 : faultMatch[1]) {
|
|
107
|
+
const message = decodeXmlEntities(faultMatch[1].trim());
|
|
108
|
+
throw new Error(message);
|
|
109
|
+
}
|
|
110
|
+
const returnMatch = xml.match(/<return[^>]*>([\s\S]*?)<\/return>/i);
|
|
111
|
+
if (!(returnMatch === null || returnMatch === void 0 ? void 0 : returnMatch[1])) {
|
|
112
|
+
return xml;
|
|
113
|
+
}
|
|
114
|
+
const rawValue = decodeXmlEntities(returnMatch[1]).trim();
|
|
115
|
+
const decodedValue = maybeDecodeBase64(rawValue);
|
|
116
|
+
const normalizedValue = decodeXmlEntities(decodedValue).trim();
|
|
117
|
+
if (normalizedValue === '') {
|
|
118
|
+
return '';
|
|
119
|
+
}
|
|
120
|
+
if (normalizedValue === 'true' || normalizedValue === 'false') {
|
|
121
|
+
return normalizedValue === 'true';
|
|
122
|
+
}
|
|
123
|
+
if (/^-?\d+(\.\d+)?$/.test(normalizedValue)) {
|
|
124
|
+
return Number(normalizedValue);
|
|
125
|
+
}
|
|
126
|
+
if ((normalizedValue.startsWith('{') && normalizedValue.endsWith('}')) ||
|
|
127
|
+
(normalizedValue.startsWith('[') && normalizedValue.endsWith(']'))) {
|
|
128
|
+
try {
|
|
129
|
+
return JSON.parse(normalizedValue);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return normalizedValue;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (normalizedValue.startsWith('<')) {
|
|
136
|
+
return parseXmlSimple(normalizedValue);
|
|
137
|
+
}
|
|
138
|
+
return normalizedValue;
|
|
139
|
+
};
|
|
140
|
+
async function getSmartSchoolCredentials() {
|
|
141
|
+
const credentials = (await this.getCredentials('smartSchoolApi'));
|
|
142
|
+
const apiEndpoint = credentials === null || credentials === void 0 ? void 0 : credentials.apiEndpoint;
|
|
143
|
+
const accesscode = credentials === null || credentials === void 0 ? void 0 : credentials.accesscode;
|
|
144
|
+
if (!apiEndpoint || !accesscode) {
|
|
145
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'SmartSchool credentials are not configured correctly.');
|
|
146
|
+
}
|
|
147
|
+
return { apiEndpoint, accesscode };
|
|
148
|
+
}
|
|
149
|
+
async function callSmartschoolSoap(method, params) {
|
|
150
|
+
const { apiEndpoint } = await getSmartSchoolCredentials.call(this);
|
|
151
|
+
const namespace = apiEndpoint;
|
|
152
|
+
const paramXml = Object.entries(params)
|
|
153
|
+
.map(([key, value]) => `<${key}>${xmlEscape(String(value))}</${key}>`)
|
|
154
|
+
.join('');
|
|
155
|
+
const envelope = `<?xml version="1.0" encoding="utf-8"?>` +
|
|
156
|
+
`<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="${namespace}">` +
|
|
157
|
+
`<soap:Body><tns:${method}>${paramXml}</tns:${method}></soap:Body>` +
|
|
158
|
+
`</soap:Envelope>`;
|
|
159
|
+
const response = await this.helpers.httpRequest({
|
|
160
|
+
method: 'POST',
|
|
161
|
+
url: apiEndpoint,
|
|
162
|
+
headers: {
|
|
163
|
+
'Content-Type': 'text/xml; charset=utf-8',
|
|
164
|
+
SOAPAction: `${apiEndpoint}#${method}`,
|
|
165
|
+
},
|
|
166
|
+
body: envelope,
|
|
167
|
+
json: false,
|
|
168
|
+
});
|
|
169
|
+
return parseSoapResponse(response);
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=GenericFunctions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/SmartSchool/GenericFunctions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class SmartSchool implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|