Skip to content

Instantly share code, notes, and snippets.

@demaisj
Last active April 2, 2021 08:21
Show Gist options
  • Save demaisj/45a210a4ae13dc0b45dfbbdcf7d9a852 to your computer and use it in GitHub Desktop.
Save demaisj/45a210a4ae13dc0b45dfbbdcf7d9a852 to your computer and use it in GitHub Desktop.
unofficial API documentation for intra.epitech.eu

todo

  • flag datetime fields that are not respecting UTC timezone conversion
  • more documentation of elements returned by endpoints
  • personnal calendars
  • internship
  • ticket
  • administration
  • document missing interactions: (needs to be verified)
    • event register
    • event token
    • project register
    • module register
    • rdv register
    • notifications

GET / -> Dashboard

  • ip: ip of client
  • board: dashboard:
    • projets: current projects
    • notes: latest marks
    • susies: not used anymore
    • activities: current & upcoming activities
    • modules: current & available modules
    • stages: current internships
    • tickets: current tickets
  • infos: info (location) of user
  • history: notifications in verbose mode
  • current: list of all modules because whynot

GET /file/ -> lists public files

  • type: unix like filetype
    • if listed file is a folder, it can be opened by calling its fullpath
  • fullpath: full path to access file
  • title: file name
  • size: file size
  • mtime & ctime
  • mime: type of file
  • rights: get_read must be 1
  • modifier: author of file

GET /module/board/?&start={start_date}&end={end_date} -> Events in time period

GET /course/filter -> [can be used to filter] Lists all available modules in a summary format

GET /module/{year}/{code}/{instance}/ -> Gets info for module {code} while in {year} and {instance}

instance seems to be something like: CITY-SEMESTER-NUM modules seems to be templated but not way to get info on template used

  • scolaryear_template: this could be the template but it's set to 2017 for all modules...
  • past open & closed defines module status
  • description, competence: maybe templated
  • flags: bitfield int representing module properties
    • [00000000] none = 0
    • [00000001] option = 1
    • [00000010] progressive = 2
    • [00000100] ?? = 4
    • [00001000] roadblock = 8
    • [00010000] ?? = 16
    • [00100000] multiple sign-up course = 32
    • [01000000] not-show = 64
    • [10000000] required = 128
  • ...
  • activites: lists activities belonging to this module

POST /module/{year}/{code}/{instance}/register -> Registers to module {code} while in {year} and {instance}

  • no args

POST /module/{year}/{code}/{instance}/unregister -> Unregisters to module {code} while in {year} and {instance}

  • no args

GET /module/{year}/{code}/{instance}/registered -> Shows registered people to the module

sadly can't stalk on grades

GET /module/{year}/{code}/{instance}/{activity}/ -> Shows {activity} information for {module} in {year} & {instance}

  • title, description
  • type_code: class, proj, rdv, tp, exam, other
  • is_projet: has the activity a project associated
  • is_note: has the activity marks associated
  • is_blocins: has the activity appointments associated
  • project: related project
  • events: events (aka. sessions) of the activity

GET /module/{year}/{code}/{instance}/{activity}/project/ -> Shows information on {activity} associated project for {module} in {year} & {instance}

  • registered = groups
  • not_registered
  • urls = related ressources

GET /module/{year}/{code}/{instance}/{activity}/project/file/ -> Shows files for {activity} associated project for {module} in {year} & {instance}

same data as GET /file/

POST /module/{year}/{code}/{instance}/{activity}/project/register -> Registers to {activity} associated project for {module} in {year} & {instance}

  • arguments ..?
  • it seems to be requiring only the teamname title in POST params
  • when solo project no arguments are sent... okay
  • group project has force:false ..?
  • group project has members[] containing logins
  • if modifying registration: codegroup containing current groupe code
  • group project deleting members has unregister[] containing logins

POST /module/{year}/{code}/{instance}/{activity}/project/unregister -> Unregisters to {activity} associated project for {module} in {year} & {instance}

  • arguments ..?
  • do not exists ?.?

POST /module/{year}/{code}/{instance}/{activity}/project/confirmjoingroup -> confirms joining project group

  • login containing login of current user ...?

POST /module/{year}/{code}/{instance}/{activity}/project/declinejoingroup -> declines group project invitation

  • login containing login of current user ...?

POST /module/{year}/{code}/{instance}/{activity}/project/confirmleavegroup -> confirms the action of leaving a group

  • login containing login of current user ...?

POST /module/{year}/{code}/{instance}/{activity}/project/destroygroup -> Destroys project group (unregisters...?)

  • arguments: code = groupcode

GET /module/{year}/{code}/{instance}/{activity}/project/registered -> Shows registered users to {activity} associated project for {module} in {year} & {instance}

  • status= deleted, deleting, confirmed, requesting

GET /module/{year}/{code}/{instance}/{activity}/note/ -> Shows {activity} associated marks for {module} in {year} & {instance}

  • all_members : whole group
  • note : only available for user
  • grader

GET /module/{year}/{code}/{instance}/{activity}/rdv/ -> Shows {activity} associated appointments for {module} in {year} & {instance}

  • group = group of user
  • projects = related activities
  • events = associated events to appointment
  • project = associated project
  • slots = blocks
    • slots = availables slots
      • duration
      • bloc_status = oneshot , ...?
      • id_team
    • codevent = event associated to block

POST /module/{year}/{code}/{instance}/{activity}/rdv/register -> Registers to {activity} associated appointments for {module} in {year} & {instance}

  • id_creneau required
  • arguments ...?

POST /module/{year}/{code}/{instance}/{activity}/rdv/unregister -> Unregisters to {activity} associated appointments for {module} in {year} & {instance}

  • arguments ...?

GET /module/{year}/{code}/{instance}/{activity}/{event}/ -> Shows {event} info of {activity} for {module} in {year} & {instance}

POST /module/{year}/{code}/{instance}/{activity}/{event}/register -> Registers to {event} of {activity} for {module} in {year} & {instance}

POST /module/{year}/{code}/{instance}/{activity}/{event}/unregister -> Unregisters to {event} of {activity} for {module} in {year} & {instance}

GET /module/{year}/{code}/{instance}/{activity}/{event}/registered -> Shows registered users to {event} of {activity} for {module} in {year} & {instance}

POST /module/{year}/{code}/{instance}/{activity}/{event}/token -> Registers token for {event} of {activity} for {module} in {year} & {instance}

  • token argument required

GET /planning/load/?&start={start_date}&end={end_date} -> Events in time period

GET /planning/my-schedules -> Personnal calendars

Since nobody seems to know about this feature, and since this feature stinks ass, it is very very very very low low low low priority

GET /user/ -> Current user profile

same data as GET /user/{login}/

GET /user/{login}/ -> User profile

  • userinfo = user custom info
  • promo
  • groups = user groups
  • credits gpa
  • nsstat = summary

GET /user/{login}/netsoul/ -> Raw netsoul data over the last year

  1. timestamp
  2. time out idle
  3. time out active
  4. time idle
  5. time active
  6. time average

GET /user/{login}/notes/ -> All registered modules & marks obtained

  • modules = registered modules + grades & credits
  • notes = marks + descriptions

GET /user/{login}/flags/ -> User flags & associated modules

  • ghost = missing at activities
  • difficulty
  • remarkable
  • medal = awesome work (bonuses)

GET /user/{login}/binome/ -> Lists users that made activities with given {user}

GET /user/{login}/notification/alert -> Important but stale notifications

  • shows what's wrong with our account
    • logtime
    • absences
    • etc

GET /user/{login}/notification/message -> Normal notifications

  • lists 10 latest notifications in short format

GET /user/{login}/notification/coming -> Event notifications

  • used to list appointments
  • always times-out

GET /user/{login}/notification/missed -> Missed event notifications

  • recents = events missed in the 7 last days
  • others = all remaining missed events

GET /user/{login}/document/ -> User personnal files

same data as GET /file/

GET /user/{login}/print/ -> bigger profile dump compared to /user/

POST /user/{user}/edit/save -> Save custom profile data

  • possible entries: job, city, telephone, country, address, birthplace, birthday, poste, twitter, facebook, googleplus, website, email
  • per entry we have
    • entry_name[name] = entry_name
    • entry_name[value]
    • entry_name[public] = on/off
    • entry_name[adm] = on/off (on if public)

GET /complete/user -> "User db dump" / used as autocomplete helper

  • ?contains&search={string} to narrow results

GET /group/{name}/ -> Group info

  • master = user managing group

GET /group/{name}/member -> Group members

  • type=group are subgroups

GET /user/filter/user -> Still active trombi search endpoint

  • location parameter required
  • year parameter required
  • course
  • count
  • promo
  • etc...

GET /e-learning/ -> dump elearning availabled classes

  • first sorted by semester
    • then by modules
      • then by classes
        • then by steps
          • fullpath = course file path
          • srtpath = subtitles for videos

POST /e-learning/index/courselog -> sets viewed state for step

  • code parameter required

GET /location.js -> special generated js file listing locations specifications

  • can be converted to json easyly by removing comments & variable assignation

GET /user/preference.js -> special generated js file listing user preferences such as homeboard & datagrid

  • can be converted to json easyly by removing comments & variable assignation

GET /translation/{lang}.js -> special generated js file listing i18n strings for {lang}

  • can be converted to json easyly by removing comments & variable assignation

GET /conference/ -> why does this even exist...?

GET /spice/attribution/list -> List spices given to user

  • total: total attributions
  • attribution: returns a list containing:
    • id, giver, owner
    • status, quantity <- number of spices recieved
    • date_attribution, date_validation
    • comment

GET /spice/delegation/list -> List spices given from user...?

  • needs to be adm maybe
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment