POST /api/auth/signup
Content-Type: application/jsonRequest Body:
{
"Username": "string", // Required, unique
"Password": "string", // Required
"UserType": "string" // Required, values: "user" or "admin"
}Response:
{
"Token": "string"
}Status Codes:
- 200: Registration successful
- 400: Invalid request parameters
- 409: Username already exists
- 403: Attempt to create root user
POST /api/auth/signin
Content-Type: application/jsonRequest Body:
{
"Username": "string", // Required
"Password": "string" // Required
}Response: Same as registration endpoint
Status Codes:
- 200: Login successful
- 401: Invalid username or password
POST /api/auth/delete
Authorization: Bearer <token>
Content-Type: application/jsonRequest Body:
{
"Username": "string" // Required
}Status Codes:
- 200: Deletion successful
- 401: Token invalid or mismatched
- 403: Cannot delete root account
POST /api/auth/logout
Authorization: Bearer <token>Status Codes:
- 200: Logout successful
- 401: Token invalid
GET /api/profile/{username}Response: ProfileDto object
Status Codes:
- 200: Success
- 404: User does not exist
PUT /api/profile/{username}
Authorization: Bearer <token>
Content-Type: application/jsonRequest Body: ProfileDto object
Response:
{
"success": true
}Status Codes:
- 200: Success
- 401: Token invalid or mismatched
- 404: User does not exist
GET /api/profile/me
Authorization: Bearer <token>Response: ProfileDto object
Status Codes:
- 200: Success
- 401: Token invalid
- 404: Profile does not exist
GET /api/admin/permission
Authorization: Bearer <token>Response:
{
"success": true,
"type": "string" // "admin" or "root"
}Status Codes:
- 200: Success
- 401: Token invalid
- 403: Insufficient permission
GET /api/admin/users
Authorization: Bearer <token>Response:
{
"Users": [
{
"Username": "string",
"Type": "string"
}
]
}Status Codes:
- 200: Success
- 401: Token invalid
- 403: Insufficient permission
POST /api/admin/users
Authorization: Bearer <token>
Content-Type: application/jsonRequest Body:
{
"NewUsername": "string", // Required
"Password": "string", // Required
"Type": "string" // Required, values: "user" or "admin"
}Response:
{
"Token": "string"
}Status Codes:
- 200: Success
- 400: Invalid request parameters
- 401: Token invalid
- 403: Insufficient permission
- 409: Username already exists
DELETE /api/admin/users/{username}
Authorization: Bearer <token>Status Codes:
- 200: Success
- 400: Cannot delete own account
- 401: Token invalid
- 403: Insufficient permission or cannot delete root account
- 404: User does not exist
POST /classic/signup/create
Content-Type: application/jsonRequest Body:
{
"userName": "string", // Required, unique
"password": "string", // Required
"type": "string" // Required, values: "user" or "admin"
}Response:
{
"token": "string"
}POST /classic/signin
Content-Type: application/jsonRequest Body:
{
"userName": "string", // Required
"password": "string" // Required
}Response: Same as registration endpoint
POST /classic/delete
Content-Type: application/jsonRequest Body:
{
"userName": "string", // Required
"token": "string" // Required
}Response:
{
"message": "string"
}GET /classic/user/{username}Response: ClassicProfile object
POST /classic/user/{username}
Authorization: Bearer <token>
Content-Type: application/jsonRequest Body: ClassicProfile object
Response:
{
"success": true
}POST /classic/admin/check-permission
Content-Type: application/jsonRequest Body:
{
"userName": "string", // Required
"token": "string" // Required
}Response:
{
"success": true,
"type": "string" // "admin" or "root"
}GET /classic/admin/usersNote: Token and username must be passed in Header or Body
POST /classic/admin/users
Content-Type: application/jsonRequest Body:
{
"userName": "string", // Admin username
"token": "string", // Admin token
"newUserName": "string", // New username
"password": "string", // New user password
"type": "string" // New user type, values: "user" or "admin"
}Response:
{
"message": "string",
"token": "string" // Token for new user
}DELETE /classic/admin/users/{targetUsername}
Content-Type: application/jsonRequest Body:
{
"userName": "string", // Admin username
"token": "string" // Admin token
}Response:
{
"message": "string"
}GET /classic/init-adminResponse: String "Admin initialized" or "Admin already initialized"
{
"Username": "string",
"Password": "string",
"UserType": "string"
}{
"Username": "string",
"Password": "string"
}{
"Username": "string"
}{
"Token": "string"
}{
"Username": "string",
"Avatar": AssetDto,
"NickName": "string",
"Pronouns": "string",
"Description": "string",
"Location": "string",
"Website": "string",
"Background": AssetDto,
"CurrentCompany": "string",
"CurrentCompanyLink": "string",
"CurrentSchool": "string",
"CurrentSchoolLink": "string",
"Contacts": [ContactItemDto],
"SocialLinks": [SocialLinkItemDto],
"Projects": [ProjectItemDto],
"WorkExperiences": [WorkExperienceItemDto],
"SchoolExperiences": [SchoolExperienceItemDto],
"Gallery": [GalleryItemDto]
}{
"Type": "string", // "Text", "Image", "Remote", "Style"
"Text": "string",
"DataBase64": "string"
}{
"Type": "string",
"Text": "string",
"Image": AssetDto
}{
"Type": "string",
"Value": "string",
"Attributes": {
"key": "value"
}
}{
"Name": "string",
"Url": "string",
"Description": "string",
"Logo": AssetDto
}{
"Company": "string",
"CompanyUrl": "string",
"Position": "string",
"StartDate": "string", // yyyy-MM-dd
"EndDate": "string", // yyyy-MM-dd
"Description": "string",
"Logo": AssetDto
}{
"School": "string",
"SchoolLink": "string",
"Degree": "string",
"Major": "string",
"StartDate": "string", // yyyy-MM-dd
"EndDate": "string", // yyyy-MM-dd
"Description": "string",
"Logo": AssetDto
}{
"Image": AssetDto,
"Caption": "string"
}{
"NewUsername": "string",
"Password": "string",
"Type": "string"
}{
"Username": "string",
"Type": "string"
}{
"Users": [UserInfoDto]
}{
"userName": "string",
"password": "string",
"type": "string"
}{
"userName": "string",
"password": "string"
}{
"userName": "string",
"token": "string"
}{
"token": "string"
}{
"username": "string",
"name": "string",
"pronouns": "string",
"avatar": "string", // Base64 Data URI / URL / Text
"bio": "string",
"location": "string",
"website": "string",
"background": "string", // Base64 Data URI / URL / Text
"currentCompany": "string",
"currentCompanyLink": "string",
"currentSchool": "string",
"currentSchoolLink": "string",
"contacts": [ClassicContact],
"socialLinks": [ClassicSocialLink],
"projects": [ClassicProject],
"workExperiences": [ClassicWorkExperience],
"schoolExperiences": [ClassicSchoolExperience],
"gallery": [ClassicGalleryItem]
}{
"type": "string",
"value": "string" // Text or Base64 Data URI
}{
"type": "string",
"value": "string",
"githubData": {
// Arbitrary key-value pairs
}
}{
"name": "string",
"url": "string",
"description": "string",
"logo": "string" // Base64 Data URI / URL
}{
"position": "string",
"company": "string",
"companyLink": "string",
"startDate": "string", // yyyy-MM-dd
"endDate": "string", // yyyy-MM-dd
"description": "string",
"logo": "string" // Base64 Data URI / URL
}{
"school": "string",
"schoolLink": "string",
"degree": "string",
"major": "string",
"startDate": "string", // yyyy-MM-dd
"endDate": "string", // yyyy-MM-dd
"description": "string",
"logo": "string" // Base64 Data URI / URL
}{
"image": "string", // Base64 Data URI
"caption": "string"
}{
"userName": "string",
"token": "string"
}{
"userName": "string",
"token": "string",
"newUserName": "string",
"password": "string",
"type": "string"
}{
"userName": "string",
"type": "string"
}{
"users": [ClassicUserInfo]
}