Is your feature request related to a problem? Please describe.
Societies want a way to give roles based on membership from another service. e.g. 'Community Membership' role when membership bought from Students Union website
Requirements
- Create an API to let admins give a role based on an email address
- Include rate limiting, authentication and other safety and privacy features
- Create a template client to interact with the API using a given CSV (SVGE can be used as an example)
- Create graphic for how data is transferred, and secured to provide to KoalaBot sponsors
Describe alternatives you've considered
Implement an API for requesting membership roles given
Example POST
curl POST 'https://api.koalabot.uk/joey/adv_verify?user_email=ab12c34@soton.ac.uk&user_email=def56g7@soton.ac.uk'
--header 'client-id: <DiscordServerID>'
--header 'Authorization: Bearer <Koala API Token>'
--header 'role_id: <MembershipRole>'
joey used as the name of the API in case a rework is needed and therefore the endpoint can be changed (similar to twitch API approach)
Additional context
https://flask-restful.readthedocs.io/en/latest/quickstart.html#a-minimal-api
https://flask-limiter.readthedocs.io/en/stable/#:~:text=A%20default%20rate%20limit%20of,hour%20applied%20to%20all%20routes.
Is your feature request related to a problem? Please describe.
Societies want a way to give roles based on membership from another service. e.g. 'Community Membership' role when membership bought from Students Union website
Requirements
Describe alternatives you've considered
Implement an API for requesting membership roles given
Example POST
curl POST 'https://api.koalabot.uk/joey/adv_verify?user_email=ab12c34@soton.ac.uk&user_email=def56g7@soton.ac.uk'
--header 'client-id:
<DiscordServerID>'--header 'Authorization: Bearer
<Koala API Token>'--header 'role_id:
<MembershipRole>'joeyused as the name of the API in case a rework is needed and therefore the endpoint can be changed (similar to twitch API approach)Additional context
https://flask-restful.readthedocs.io/en/latest/quickstart.html#a-minimal-api
https://flask-limiter.readthedocs.io/en/stable/#:~:text=A%20default%20rate%20limit%20of,hour%20applied%20to%20all%20routes.