1. 사용자 인증/인가
-1.1 OAuth 로그인
-HTTP 요청
-1. 사용자 인증/인가
+1.1 OAuth 로그인
+HTTP 요청
+GET /api/login?code=test-auth-code HTTP/1.1
Accept: application/json
-Host: localhost:8080
- HTTP 응답
-HTTP 응답
+HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
-Content-Length: 205
+Content-Length: 257
-{"userName":"testUser","userEmail":"test@gmail.com","avatarURL":"https://avatars.githubusercontent.com/12345","alertStatus":false,"jwt":{"accessToken":"test-jwt-token","refreshToken":"test-refresh-token"}}
- 응답 필드
-| Path | -Type | -Description | -
|---|---|---|
- |
-
|
- 사용자 로그인 이름 |
-
- |
-
|
- 사용자 이메일 주소 |
-
- |
-
|
- 사용자 아바타 URL |
-
- |
-
|
- 알림 상태 |
-
|
-
|
- JWT 액세스 토큰 |
-
|
-
|
- JWT 리프레시 토큰 |
-
1.2 OAuth 로그아웃
-HTTP 요청
-응답 필드
+| Path | +Type | +Description | +
|---|---|---|
|
+
|
+사용자 로그인 이름 |
+
|
+
|
+사용자 이메일 주소 |
+
|
+
|
+사용자 아바타 URL |
+
|
+
|
+알림 상태 |
+
|
+
|
+JWT 액세스 토큰 |
+
|
+
|
+JWT 리프레시 토큰 |
+
1.2 OAuth 로그아웃
+HTTP 요청
+POST /api/logout HTTP/1.1
Authorization: Bearer test-jwt-token
-Host: localhost:8080
+Host: issuefy.site
Content-Type: application/x-www-form-urlencoded
- 요청 헤더
-| Name | -Description | -
|---|---|
- |
- JWT 토큰 |
-
HTTP 응답
-요청 헤더
+| Name | +Description | +
|---|---|
|
+JWT 토큰 |
+
HTTP 응답
+HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
- 2. 리포지토리
-2.1 리포지토리 구독
-HTTP 요청
-2. 리포지토리
+2.1 구독중인 리포지토리 목록 조회
+HTTP 요청
+GET /api/subscriptions?page=0&sort=latestUpdateAt&order=desc&starred=false HTTP/1.1
+Authorization: Bearer testToken
+Host: issuefy.site
+쿼리 매개변수
+| Parameter | +Description | +
|---|---|
|
+페이지 번호 |
+
|
+정렬 기준 |
+
|
+정렬 순서 (asc/desc) |
+
|
+즐겨찾기 여부 |
+
HTTP 응답
+HTTP/1.1 200 OK
+Vary: Origin
+Vary: Access-Control-Request-Method
+Vary: Access-Control-Request-Headers
+Content-Type: application/json
+Content-Length: 349
+
+{
+ "currentPage" : 0,
+ "pageSize" : 15,
+ "totalElements" : 29,
+ "totalPages" : 2,
+ "subscriptionListDtos" : [ {
+ "orgId" : 6764390,
+ "orgName" : "elastic",
+ "githubRepositoryId" : 507775,
+ "repositoryName" : "elasticsearch",
+ "repositoryLatestUpdateAt" : "2024-10-23T21:26:34",
+ "repositoryStarred" : true
+ } ]
+}
+2.2 리포지토리 구독
+HTTP 요청
+POST /api/subscriptions HTTP/1.1
Content-Type: application/json;charset=UTF-8
-Content-Length: 73
+Content-Length: 61
Host: issuefy.site
{
- "repositoryUrl" : "https://issuefy.site/2024-Iris/issuefy-spring"
+ "repositoryUrl" : "https://github.com/org/repository"
}
- 요청 본문
-| Path | -Type | -Description | -
|---|---|---|
- |
-
|
- GitHub 리포지토리 URL - |
-
HTTP 응답
-요청 본문
+| Path | +Type | +Description | +
|---|---|---|
|
+
|
+GitHub 리포지토리 URL |
+
HTTP 응답
+HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: https://github.com/2024-Iris/issuefy-spring
- 2.2 리포지토리 구독 취소
-HTTP 요청
-2.3 리포지토리 구독 취소
+HTTP 요청
+DELETE /api/subscriptions/1 HTTP/1.1
-Host: localhost:8080
- HTTP 응답
-HTTP/1.1 204 No Content
-Vary: Origin
-Vary: Access-Control-Request-Method
-Vary: Access-Control-Request-Headers
- 2.3 구독중인 리포지토리 목록 조회 -
-HTTP 요청
-GET /api/subscriptions HTTP/1.1
-Authorization: Bearer testToken
Host: issuefy.site
- HTTP 응답
-HTTP/1.1 200 OK
+경로 매개변수
+| Parameter | +Description | +
|---|---|
|
+GitHub 리포지토리 ID |
+
HTTP 응답
+HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
- 2.4 리포지토리 즐겨찾기
-HTTP 요청
-2.4 리포지토리 즐겨찾기
+HTTP 요청
+PUT /api/subscriptions/star/1 HTTP/1.1
Host: issuefy.site
Content-Type: application/x-www-form-urlencoded
- 경로 매개변수
-| Parameter | -Description | -
|---|---|
- |
- GitHub 리포지토리 ID - |
-
HTTP 응답
-경로 매개변수
+| Parameter | +Description | +
|---|---|
|
+GitHub 리포지토리 ID |
+
HTTP 응답
+HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
- 3. 이슈
-3.1 이슈 목록 조회
-HTTP 요청
-GET /api/subscriptions/iris/issuefy/issues?page=0&size=10&sort=createdAt&order=desc HTTP/1.1
+3. 이슈
+3.1 이슈 목록 조회
+HTTP 요청
+GET /api/subscriptions/iris/issuefy/issues?page=0&size=15&sort=createdAt&order=desc HTTP/1.1
+Accept: application/json
Host: issuefy.site
- 경로 매개변수
-| Parameter | -Description | -
|---|---|
- |
- 조직 이름 |
-
- |
- 리포지토리 이름 |
-
HTTP 응답
-경로 매개변수
+| Parameter | +Description | +
|---|---|
|
+조직 이름 |
+
|
+리포지토리 이름 |
+
쿼리 매개변수
+| Parameter | +Description | +
|---|---|
|
+페이지 번호 |
+
|
+페이지 크기 |
+
|
+정렬 기준 |
+
|
+정렬 순서 |
+
4. Server-Sent Events - (SSE)
-4.1 SSE 연결
-HTTP 요청
-응답 본문
+{
+ "currentPage" : 0,
+ "pageSize" : 15,
+ "totalElements" : 100,
+ "totalPages" : 10,
+ "repositoryName" : "issuefy",
+ "issues" : [ {
+ "id" : 1,
+ "githubIssueNumber" : 123,
+ "state" : "OPEN",
+ "title" : "Sample Issue",
+ "labels" : [ {
+ "name" : null,
+ "color" : null
+ } ],
+ "read" : true,
+ "createdAt" : "2024-11-23T22:30:43.353437",
+ "updatedAt" : "2024-11-23T22:30:43.353437",
+ "closedAt" : null,
+ "starred" : false
+ } ]
+}
+4. Server-Sent Events (SSE)
+4.1 SSE 연결
+HTTP 요청
+GET /api/connect HTTP/1.1
Accept: text/event-stream
-Host: localhost:8080
- HTTP 응답
-HTTP 응답
+HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
- 4.2 SSE 수신
-HTTP 요청
-4.2 SSE 수신
+HTTP 요청
+POST /api/receive HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 34
-Host: localhost:8080
+Host: issuefy.site
{"updatedRepositoryIds":["1","2"]}
- 요청 필드
-| Path | -Type | -Description | -
|---|---|---|
|
-
|
- 업데이트 된 리포지토리 ID - 목록 |
-
HTTP 응답
-요청 필드
+| Path | +Type | +Description | +
|---|---|---|
|
+
|
+업데이트 된 리포지토리 ID 목록 |
+
HTTP 응답
+HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
- 5. 알림
+5.1 알림 조회
+HTTP 요청
+GET /api/notifications HTTP/1.1
-Host: localhost:8080
- HTTP 응답
-HTTP 응답
+HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
-Content-Length: 350
+Content-Length: 352
[ {
"userNotificationId" : 1,
"orgName" : "testOrg1",
"repositoryName" : "testRepo1",
- "notificationCreatedAt" : "2024-09-02T22:50:57.295435",
+ "notificationCreatedAt" : "2024-11-23T22:30:43.9301388",
"read" : false
}, {
"userNotificationId" : 2,
"orgName" : "testOrg2",
"repositoryName" : "testRepo2",
- "notificationCreatedAt" : "2024-09-02T22:50:57.295435",
+ "notificationCreatedAt" : "2024-11-23T22:30:43.9311381",
"read" : false
} ]
- 응답 필드
-| Path | -Type | -Description | -
|---|---|---|
|
-
|
- 알림 ID |
-
- |
-
|
- 조직 이름 |
-
|
-
|
- 저장소 이름 |
-
|
-
|
- 생성 시간 |
-
|
-
|
- 읽음 여부 |
-
5.2 알림 읽음 여부 업데이트
- +5.2 알림 읽음 여부 업데이트
+HTTP 요청
+PATCH /api/notifications HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 29
-Host: localhost:8080
+Host: issuefy.site
{"userNotificationIds":[1,2]}
- 요청 필드
-| Path | -Type | -Description | -
|---|---|---|
|
-
|
- 업데이트할 알림 ID 목록 - |
-
HTTP 응답
-요청 필드
+| Path | +Type | +Description | +
|---|---|---|
|
+
|
+업데이트할 알림 ID 목록 |
+
HTTP 응답
+HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
- 6. 마이페이지
-6.1 사용자 정보 조회
-HTTP 요청
-6. 마이페이지
+6.1 사용자 정보 조회
+HTTP 요청
+GET /api/user/info HTTP/1.1
Accept: application/json
-Host: localhost:8080
- HTTP 응답
-HTTP 응답
+HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
@@ -2789,182 +1241,166 @@ HTTP 응답
Content-Length: 111
{"email":"test@gmail.com","alertStatus":false,"login":"testUser","avatar_url":"https://example.com/avatar.jpg"}
- 응답 필드
-| Path | -Type | -Description | -
|---|---|---|
|
-
|
- 사용자의 GitHub ID - |
-
- |
-
|
- 사용자의 GitHub 프로필 이미지 - URL |
-
|
-
|
- 사용자의 이메일 주소 |
-
- |
-
|
- 알림 상태 |
-
6.2 알림 수신 여부 업데이트
- +6.2 알림 수신 여부 업데이트
+HTTP 요청
+PATCH /api/user/alert HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 20
-Host: localhost:8080
+Host: issuefy.site
{"alertStatus":true}
- 요청 필드
-| Path | -Type | -Description | -
|---|---|---|
- |
-
|
- 알림 받기 / 안받기 |
-
HTTP 응답
-요청 필드
+| Path | +Type | +Description | +
|---|---|---|
|
+
|
+알림 받기 / 안받기 |
+
HTTP 응답
+HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
- 6.3 이메일 업데이트
-HTTP 요청
-6.3 이메일 업데이트
+HTTP 요청
+PATCH /api/user/email HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 30
-Host: localhost:8080
+Host: issuefy.site
{"email":"newemail@gmail.com"}
- 요청 필드
-| Path | -Type | -Description | -
|---|---|---|
|
-
|
- 새로운 이메일 주소 |
-
HTTP 응답
-요청 필드
+| Path | +Type | +Description | +
|---|---|---|
|
+
|
+새로운 이메일 주소 |
+
HTTP 응답
+HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
-