{"components":{"schemas":{"ApiErrorDetailDoc":{"properties":{"error_code":{"type":"string"}},"required":["error_code"],"type":"object"},"ApiErrorEnvelopeDoc":{"properties":{"code":{"format":"int32","minimum":0,"type":"integer"},"data":{"$ref":"#/components/schemas/ApiErrorDetailDoc"},"message":{"type":"string"}},"required":["code","data","message"],"type":"object"},"ApiSuccessEnvelopeDoc":{"properties":{"code":{"format":"int32","minimum":0,"type":"integer"},"data":{},"message":{"type":"string"}},"required":["code","data","message"],"type":"object"}}},"info":{"description":"JSON success responses use `{ code, data, message }`; JSON errors use the same envelope with `data.error_code`. Redirects, 204 responses, and `/openapi.json` itself have no envelope.","license":{"identifier":"MIT OR Apache-2.0","name":"MIT OR Apache-2.0"},"title":"FurDev Public API","version":"0.13.0"},"openapi":"3.1.0","paths":{"/auth/activate":{"post":{"operationId":"auth_activate_doc","responses":{"200":{"description":""},"400":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/auth/login":{"get":{"operationId":"auth_login_doc","responses":{"307":{"description":""}},"tags":[]}},"/auth/logout":{"post":{"operationId":"auth_logout_doc","responses":{"200":{"description":""}},"tags":[]}},"/auth/session":{"get":{"operationId":"auth_session_doc","responses":{"200":{"description":""}},"tags":[]}},"/auth/session/refresh":{"post":{"operationId":"auth_session_refresh_doc","responses":{"200":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/map/me":{"get":{"operationId":"map_me_get_doc","responses":{"200":{"description":""},"401":{"description":""}},"tags":[]},"put":{"operationId":"map_me_put_doc","responses":{"200":{"description":""},"400":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/map/me/visibility":{"put":{"operationId":"map_me_visibility_doc","responses":{"200":{"description":""},"401":{"description":""},"404":{"description":""}},"tags":[]}},"/map/users":{"get":{"operationId":"map_users_doc","responses":{"200":{"description":""},"401":{"description":""}},"tags":[]}},"/me":{"get":{"operationId":"me_get_doc","responses":{"200":{"description":""},"401":{"description":""}},"tags":[]},"patch":{"operationId":"me_patch_doc","responses":{"200":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/me/notifications":{"get":{"operationId":"notifications_list_doc","responses":{"200":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/me/notifications/read-all":{"post":{"operationId":"notifications_read_all_doc","responses":{"200":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/me/notifications/unread-count":{"get":{"operationId":"notifications_unread_count_doc","responses":{"200":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/me/notifications/{id}/read":{"post":{"operationId":"notifications_read_one_doc","responses":{"200":{"description":""},"401":{"description":""},"404":{"description":""},"429":{"description":""}},"tags":[]}},"/me/oauth-bindings":{"get":{"operationId":"oauth_bindings_doc","responses":{"200":{"description":""},"401":{"description":""}},"tags":[]}},"/me/oauth-bindings/github":{"delete":{"operationId":"oauth_github_delete_doc","responses":{"204":{"description":""},"401":{"description":""}},"tags":[]}},"/me/social-links":{"get":{"operationId":"me_social_links_get_doc","responses":{"200":{"description":""},"401":{"description":""}},"tags":[]},"put":{"operationId":"me_social_links_put_doc","responses":{"200":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/me/uploads/presign":{"post":{"operationId":"uploads_presign_doc","responses":{"200":{"description":""},"400":{"description":""},"401":{"description":""},"413":{"description":""},"429":{"description":""}},"tags":[]}},"/oauth/github/authorize":{"get":{"operationId":"oauth_github_authorize_doc","responses":{"307":{"description":""},"401":{"description":""}},"tags":[]}},"/oauth/github/callback":{"get":{"operationId":"oauth_github_callback_doc","responses":{"307":{"description":""}},"tags":[]}},"/profiles/{user_id}":{"get":{"operationId":"profile_detail_doc","responses":{"200":{"description":""},"404":{"description":""}},"tags":[]}},"/profiles/{user_id}/comments":{"get":{"operationId":"profile_comments_get_doc","responses":{"200":{"description":""},"404":{"description":""},"429":{"description":""}},"tags":[]},"post":{"operationId":"profile_comments_post_doc","responses":{"201":{"description":""},"401":{"description":""},"404":{"description":""},"429":{"description":""}},"tags":[]}},"/profiles/{user_id}/comments/{comment_id}":{"delete":{"operationId":"profile_comments_delete_doc","responses":{"204":{"description":""},"401":{"description":""},"403":{"description":""},"404":{"description":""},"429":{"description":""}},"tags":[]}},"/profiles/{user_id}/follow":{"delete":{"operationId":"profile_unfollow_doc","responses":{"200":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]},"post":{"operationId":"profile_follow_doc","responses":{"200":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/profiles/{user_id}/followers":{"get":{"operationId":"profile_followers_doc","responses":{"200":{"description":""},"404":{"description":""},"429":{"description":""}},"tags":[]}},"/profiles/{user_id}/following":{"get":{"operationId":"profile_following_doc","responses":{"200":{"description":""},"404":{"description":""},"429":{"description":""}},"tags":[]}},"/profiles/{user_id}/github":{"get":{"operationId":"github_profile_doc","responses":{"200":{"description":""},"404":{"description":""},"429":{"description":""}},"tags":[]}},"/profiles/{user_id}/like":{"delete":{"operationId":"profile_unlike_doc","responses":{"200":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]},"post":{"operationId":"profile_like_doc","responses":{"200":{"description":""},"401":{"description":""},"409":{"description":""},"429":{"description":""}},"tags":[]}},"/profiles/{user_id}/likes":{"get":{"operationId":"profile_likes_doc","responses":{"200":{"description":""},"404":{"description":""},"429":{"description":""}},"tags":[]}},"/profiles/{user_id}/showcase":{"get":{"operationId":"profile_showcase_doc","responses":{"200":{"description":""},"404":{"description":""}},"tags":[]}},"/projects":{"get":{"operationId":"projects_list_doc","responses":{"200":{"description":""}},"tags":[]},"post":{"operationId":"project_create_doc","responses":{"201":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/projects/{owner_type}/{owner_id}/{project_slug}":{"delete":{"operationId":"project_delete_doc","responses":{"204":{"description":""},"401":{"description":""},"403":{"description":""},"429":{"description":""}},"tags":[]},"get":{"operationId":"project_detail_doc","responses":{"200":{"description":""},"404":{"description":""}},"tags":[]},"patch":{"operationId":"project_update_doc","responses":{"200":{"description":""},"401":{"description":""},"403":{"description":""},"429":{"description":""}},"tags":[]}},"/projects/{owner_type}/{owner_id}/{project_slug}/like":{"delete":{"operationId":"project_unlike_doc","responses":{"204":{"description":""},"401":{"description":""},"404":{"description":""},"429":{"description":""}},"tags":[]},"post":{"operationId":"project_like_doc","responses":{"201":{"description":""},"401":{"description":""},"404":{"description":""},"409":{"description":""},"429":{"description":""}},"tags":[]}},"/projects/{owner_type}/{owner_id}/{project_slug}/repo":{"delete":{"operationId":"project_repo_delete_doc","responses":{"204":{"description":""},"401":{"description":""},"403":{"description":""},"429":{"description":""}},"tags":[]},"get":{"operationId":"project_repo_get_doc","responses":{"200":{"description":""},"404":{"description":""}},"tags":[]},"post":{"operationId":"project_repo_post_doc","responses":{"200":{"description":""},"401":{"description":""},"403":{"description":""},"429":{"description":""}},"tags":[]}},"/projects/{owner_type}/{owner_id}/{project_slug}/stats":{"get":{"operationId":"project_stats_doc","responses":{"200":{"description":""},"404":{"description":""}},"tags":[]}},"/search":{"get":{"operationId":"search_doc","responses":{"200":{"description":""}},"tags":[]}},"/teams":{"get":{"operationId":"teams_list_doc","responses":{"200":{"description":""}},"tags":[]},"post":{"operationId":"team_create_doc","responses":{"201":{"description":""},"401":{"description":""},"429":{"description":""}},"tags":[]}},"/teams/{team_slug}":{"delete":{"operationId":"team_delete_doc","responses":{"204":{"description":""},"401":{"description":""},"403":{"description":""},"429":{"description":""}},"tags":[]},"get":{"operationId":"team_detail_doc","responses":{"200":{"description":""},"404":{"description":""}},"tags":[]},"patch":{"operationId":"team_update_doc","responses":{"200":{"description":""},"401":{"description":""},"403":{"description":""},"429":{"description":""}},"tags":[]}},"/teams/{team_slug}/members":{"get":{"operationId":"team_members_doc","responses":{"200":{"description":""},"404":{"description":""}},"tags":[]},"post":{"operationId":"team_member_add_doc","responses":{"201":{"description":""},"401":{"description":""},"403":{"description":""},"429":{"description":""}},"tags":[]}},"/teams/{team_slug}/members/{user_id}":{"delete":{"operationId":"team_member_remove_doc","responses":{"204":{"description":""},"401":{"description":""},"403":{"description":""},"429":{"description":""}},"tags":[]},"patch":{"operationId":"team_member_update_doc","responses":{"200":{"description":""},"401":{"description":""},"403":{"description":""},"429":{"description":""}},"tags":[]}},"/teams/{team_slug}/showcase":{"get":{"operationId":"team_showcase_doc","responses":{"200":{"description":""},"404":{"description":""}},"tags":[]}}}}