mirror of
https://github.com/classchartsapi/classcharts-api-js.git
synced 2026-05-14 03:56:59 +00:00
chore: move docs to readme
This commit is contained in:
parent
4c871a3112
commit
780322f3e2
5 changed files with 10 additions and 29 deletions
320
README.md
Normal file
320
README.md
Normal file
|
|
@ -0,0 +1,320 @@
|
|||
<p align="center">
|
||||
<h1 align="center">ClassCharts API JS</h1>
|
||||
<p align="center">
|
||||
A Node.js and Deno wrapper for getting information from the Classcharts API.
|
||||
</p>
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/classchartsapi/classcharts-api-js">Source</a>
|
||||
<span> • </span>
|
||||
<a href="https://github.com/classchartsapi/classcharts-api-js/issues">Issues</a>
|
||||
<span> • </span>
|
||||
<a href="https://www.npmjs.com/package/classcharts-api">NPM</a>
|
||||
<span> • </span>
|
||||
<a href="https://deno.land/x/classcharts_api">Deno</a>
|
||||
<span> • </span>
|
||||
<a href="https://discord.gg/DTcwugcgZ2">Discord</a>
|
||||
<span> • </span>
|
||||
<a href="https://classchartsapi.github.io/api-docs/">API Docs</a>
|
||||
</p>
|
||||
|
||||
# Introduction
|
||||
|
||||
The ClassCharts API is a typescript wrapper around the ClassCharts API. It
|
||||
allows you to easily make requests to the ClassCharts API without having to
|
||||
worry about the underlying implementation of making requests.
|
||||
|
||||
## Help
|
||||
|
||||
For any help with the library, please join the
|
||||
[discord](https://discord.gg/DTcwugcgZ2) where you can ask questions and get
|
||||
help from the community.
|
||||
|
||||
# Contributing
|
||||
|
||||
Contributions are welcome! There are lots of API endpoints which we simply do
|
||||
not have access to to implement, so if you have access to them, please consider
|
||||
contributing! If you have any questions, feel free to ask in the
|
||||
[discord](https://discord.gg/DTcwugcgZ2).
|
||||
|
||||
# Installation
|
||||
|
||||
## Requirements
|
||||
|
||||
- Node.js 18 or newer
|
||||
- Deno
|
||||
|
||||
## NPM
|
||||
|
||||
```bash
|
||||
npm install classcharts-api # npm
|
||||
```
|
||||
|
||||
## Deno
|
||||
|
||||
The imports in the examples are for Node.js, but can easily be substituted for
|
||||
Deno.
|
||||
|
||||
```typescript
|
||||
import {
|
||||
ParentClient,
|
||||
StudentClient,
|
||||
} from "https://deno.land/x/classcharts_api/mod.ts";
|
||||
```
|
||||
|
||||
# Logging In
|
||||
|
||||
Before making any requests, you must login to the client. This will get you a
|
||||
session ID which will be used for all requests.
|
||||
|
||||
## Student Client
|
||||
|
||||
```typescript
|
||||
import { StudentClient } from "classcharts-api";
|
||||
|
||||
// Date of birth MUST in the format DD/MM/YYYY
|
||||
const client = new StudentClient("classchartsCode", "01/1/2000");
|
||||
await client.login();
|
||||
```
|
||||
|
||||
## Parent Client
|
||||
|
||||
```typescript
|
||||
import { ParentClient } from "classcharts-api";
|
||||
|
||||
const client = new ParentClient("username", "password");
|
||||
await client.login();
|
||||
```
|
||||
|
||||
# Universal Methods
|
||||
|
||||
All the following methods can be used on both the student and parent client.
|
||||
Each example expects the client to be already logged in.
|
||||
|
||||
## `.getStudentInfo`
|
||||
|
||||
```typescript
|
||||
const studentInfo = await client.getStudentInfo();
|
||||
console.log(studentInfo);
|
||||
/**
|
||||
{
|
||||
success: 1,
|
||||
data: {
|
||||
user: {
|
||||
id: 2339528,
|
||||
...
|
||||
}
|
||||
},
|
||||
meta: {
|
||||
session_id: '5vf2v7n5uk9jftrxaarrik39vk6yjm48',
|
||||
...
|
||||
}
|
||||
}
|
||||
*/
|
||||
```
|
||||
|
||||
## `.getActivity`
|
||||
|
||||
```typescript
|
||||
// Dates must be in format YYYY-MM-DD
|
||||
const activity = await client.getActivity({
|
||||
from: "2023-04-01",
|
||||
to: "2023-05-10",
|
||||
last_id: "12",
|
||||
});
|
||||
console.log(activity);
|
||||
```
|
||||
|
||||
## `.getFullActivity`
|
||||
|
||||
```typescript
|
||||
// Dates must be in format YYYY-MM-DD
|
||||
const activity = await client.getFullActivity({
|
||||
from: "2023-04-01",
|
||||
to: "2023-05-10",
|
||||
});
|
||||
console.log(activity);
|
||||
```
|
||||
|
||||
## `.getBehaviour`
|
||||
|
||||
Gets behaviour for a given date range.
|
||||
|
||||
```typescript
|
||||
// Dates must be in format YYYY-MM-DD
|
||||
const behaviour = await client.getBehaviour({
|
||||
from: "2023-04-01",
|
||||
to: "2023-05-10",
|
||||
});
|
||||
console.log(behaviour);
|
||||
|
||||
/**
|
||||
{
|
||||
"success": 1,
|
||||
"data": {
|
||||
"timeline": [
|
||||
{
|
||||
"positive": 426,
|
||||
...
|
||||
},
|
||||
],
|
||||
...
|
||||
"meta": {
|
||||
"start_date": "2023-04-01T00:00:00+00:00",
|
||||
...
|
||||
}
|
||||
}
|
||||
*/
|
||||
```
|
||||
|
||||
## `.getHomeworks`
|
||||
|
||||
Gets homeworks for a given date range.
|
||||
|
||||
```typescript
|
||||
// Dates must be in format YYYY-MM-DD
|
||||
const homeworks = await client.getHomeworks({
|
||||
from: "2023-04-01",
|
||||
to: "2023-05-10",
|
||||
displayDate: 'issue_date' // Can be 'due_date' or 'issue_date'
|
||||
});
|
||||
console.log(homeworks);
|
||||
|
||||
/**
|
||||
{
|
||||
success: 1,
|
||||
data: [
|
||||
{
|
||||
lesson: '7A/Pe1',
|
||||
...
|
||||
},
|
||||
],
|
||||
meta: {
|
||||
start_date: '2023-04-01T00:00:00+00:00',
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## `.getLessons`
|
||||
|
||||
Gets lessons for a specific date.
|
||||
|
||||
```typescript
|
||||
// Dates must be in format YYYY-MM-DD
|
||||
const lessons = await client.getLessons({
|
||||
date: "2023-04-01",
|
||||
});
|
||||
console.log(lessons);
|
||||
|
||||
/**
|
||||
{
|
||||
"success": 1,
|
||||
"data": [
|
||||
{
|
||||
"teacher_name": "Mr J Doe",
|
||||
...
|
||||
}
|
||||
...
|
||||
],
|
||||
"meta": {
|
||||
"dates": [
|
||||
"2023-05-04"
|
||||
],
|
||||
...
|
||||
}
|
||||
}
|
||||
*/
|
||||
```
|
||||
|
||||
## `.getBadges`
|
||||
|
||||
Gets all earned badges.
|
||||
|
||||
```typescript
|
||||
const badges = await client.getBadges();
|
||||
console.log(badges);
|
||||
|
||||
/**
|
||||
{
|
||||
success: 1,
|
||||
data: [
|
||||
{
|
||||
id: 123,
|
||||
name: 'Big Badge',
|
||||
...
|
||||
},
|
||||
...
|
||||
],
|
||||
meta: []
|
||||
}
|
||||
*/
|
||||
```
|
||||
|
||||
## `.getAnnouncements`
|
||||
|
||||
?> This method does not include `meta` in the response, since I do not have
|
||||
access to this endpoint to test it. If you have access to this endpoint, please
|
||||
open a PR to add the `meta` response. Thanks!
|
||||
|
||||
Gets all announcements.
|
||||
|
||||
```typescript
|
||||
const announcements = await client.getAnnouncements();
|
||||
console.log(announcements);
|
||||
```
|
||||
|
||||
## `.getDetentions`
|
||||
|
||||
?> This method does not include `meta` in the response, since I do not have
|
||||
access to this endpoint to test it. If you have access to this endpoint, please
|
||||
open a PR to add the `meta` response. Thanks!
|
||||
|
||||
Gets all detentions.
|
||||
|
||||
```typescript
|
||||
const detentions = await client.getDetentions();
|
||||
console.log(detentions);
|
||||
```
|
||||
|
||||
## `.getAttendance`
|
||||
|
||||
?> This method does not include `meta` in the response, since I do not have
|
||||
access to this endpoint to test it. If you have access to this endpoint, please
|
||||
open a PR to add the `meta` response. Thanks!
|
||||
|
||||
Gets attendance.
|
||||
|
||||
```typescript
|
||||
const attendance = await client.getAttendance();
|
||||
console.log(attendance);
|
||||
```
|
||||
|
||||
# Parent Specific Methods
|
||||
|
||||
## `.getPupils`
|
||||
|
||||
Gets a list of all pupils the parent has access to.
|
||||
|
||||
```typescript
|
||||
const pupils = await client.getPupils();
|
||||
console.log(pupils);
|
||||
/**
|
||||
[
|
||||
{
|
||||
id: 123,
|
||||
name: 'John Doe',
|
||||
...
|
||||
},
|
||||
...
|
||||
]
|
||||
*/
|
||||
```
|
||||
|
||||
## `.selectPupil`
|
||||
|
||||
Selects a pupil to make subsequent requests for.
|
||||
|
||||
```typescript
|
||||
await client.selectPupil(123);
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue