45 KiB
공개 API 문서 (Public API Documentation)
이 문서는 코드 기준으로 확인 가능한 공개 엔드포인트(public endpoints)를 외부 공개용 문서 형식으로 정리한 것입니다.
라우팅 정의는 Libraries/SPTarkov.Server.Core/Routers 하위와 테스트 모드(TestMod)의 MVC 컨트롤러를 기준으로 합니다.
기본 정보 (Basics)
- 기본 URL(Base URL):
https://{HttpConfig.Ip}:{HttpConfig.Port} - 지원 메서드(Supported Methods):
GET,POST,PUT
서버는 메서드(method)를 구분하지 않고 라우팅(route)만으로 처리합니다. - 요청/응답 형식(Request/Response):
대부분 JSON(JSON)이며, 번들(bundle)/이미지(image)는 파일 응답(file response)입니다. - 세션(Session):
PHPSESSID쿠키(cookie)가 있을 경우 플레이어 컨텍스트(player context)로 처리됩니다.
라우팅 규칙 (Routing Rules)
- 정적 라우트(Static Route): URL이 정확히 일치(exact match)해야 처리됩니다.
- 동적 라우트(Dynamic Route): URL에 부분 일치(partial match)하면 처리됩니다.
예:/client/locale/는/client/locale/en에도 매칭됩니다.
API 목록 (API Catalog)
Achievements API
/client/achievement/list
역할(Role): 업적 목록 조회(get achievements)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/achievement/statistic
역할(Role): 업적 통계 조회(get achievement statistics)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Bots API
/client/game/bot/generate
역할(Role): 봇 생성(generate bots)
사용법(Usage): 요청 바디GenerateBotsRequestData
Builds API
/client/builds/list
역할(Role): 프리셋 목록 조회(get builds)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/builds/magazine/save
역할(Role): 탄창 프리셋 저장(create magazine template)
사용법(Usage): 요청 바디SetMagazineRequest/client/builds/weapon/save
역할(Role): 무기 프리셋 저장(set weapon build)
사용법(Usage): 요청 바디PresetBuildActionRequestData/client/builds/equipment/save
역할(Role): 장비 프리셋 저장(set equipment build)
사용법(Usage): 요청 바디PresetBuildActionRequestData/client/builds/delete
역할(Role): 프리셋 삭제(delete build)
사용법(Usage): 요청 바디RemoveBuildRequestData
Bundles API
/singleplayer/bundles
역할(Role): 번들 목록 조회(get bundles list)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Client Logs API
/singleplayer/log
역할(Role): 클라이언트 로그 수집(client log)
사용법(Usage): 요청 바디ClientLogRequest/singleplayer/release
역할(Role): 릴리즈 노트 조회(release notes)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/singleplayer/enableBSGlogging
역할(Role): BSG 로깅 플래그 처리(BSG logging flag)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Customization API
/client/trading/customization/storage
역할(Role): 커스터마이징 보관함 조회(get customization unlocks)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/hideout/customization/offer/list
역할(Role): 은신처 커스터마이징 목록 조회(get hideout customization offers)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/customization/storage
역할(Role): 커스터마이징 저장소 조회(get customization storage)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Data API
/client/settings
역할(Role): 설정 조회(get settings)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/globals
역할(Role): 글로벌 데이터 조회(get globals)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/items
역할(Role): 아이템 템플릿 조회(get template items)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/handbook/templates
역할(Role): 핸드북 템플릿 조회(get handbook templates)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/customization
역할(Role): 커스터마이징 템플릿 조회(get template suits)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/account/customization
역할(Role): 캐릭터 커스터마이징 템플릿 조회(get template character)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/hideout/production/recipes
역할(Role): 은신처 제작 레시피 조회(get hideout production recipes)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/hideout/settings
역할(Role): 은신처 설정 조회(get hideout settings)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/hideout/areas
역할(Role): 은신처 구역 조회(get hideout areas)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/languages
역할(Role): 언어 목록 조회(get locale languages)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/hideout/qte/list
역할(Role): QTE 목록 조회(get QTE list)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/dialogue
역할(Role): 대화 데이터 조회(get dialogue)
사용법(Usage): 요청 바디GetClientDialogueRequestData
Dialogue/Friends API
/client/chatServer/list
역할(Role): 채팅 서버 목록 조회(get chat server list)
사용법(Usage): 요청 바디GetChatServerListRequestData/client/mail/dialog/list
역할(Role): 메일 대화 목록 조회(get mail dialog list)
사용법(Usage): 요청 바디GetMailDialogListRequestData/client/mail/dialog/view
역할(Role): 메일 대화 조회(get mail dialog view)
사용법(Usage): 요청 바디GetMailDialogViewRequestData/client/mail/dialog/info
역할(Role): 메일 대화 정보 조회(get mail dialog info)
사용법(Usage): 요청 바디GetMailDialogInfoRequestData/client/mail/dialog/remove
역할(Role): 메일 대화 삭제(remove dialog)
사용법(Usage): 요청 바디RemoveDialogRequestData/client/mail/dialog/pin
역할(Role): 메일 대화 고정(pin dialog)
사용법(Usage): 요청 바디PinDialogRequestData/client/mail/dialog/unpin
역할(Role): 메일 대화 고정 해제(unpin dialog)
사용법(Usage): 요청 바디PinDialogRequestData/client/mail/dialog/read
역할(Role): 메일 읽음 처리(set dialog read)
사용법(Usage): 요청 바디SetDialogReadRequestData/client/mail/dialog/getAllAttachments
역할(Role): 모든 첨부 가져오기(get all attachments)
사용법(Usage): 요청 바디GetAllAttachmentsRequestData/client/mail/msg/send
역할(Role): 메일 메시지 전송(send message)
사용법(Usage): 요청 바디SendMessageRequest/client/mail/dialog/clear
역할(Role): 메일 정리(clear mail)
사용법(Usage): 요청 바디ClearMailMessageRequest/client/mail/dialog/group/create
역할(Role): 그룹 메일 생성(create group mail)
사용법(Usage): 요청 바디CreateGroupMailRequest/client/mail/dialog/group/owner/change
역할(Role): 그룹 메일 소유자 변경(change group mail owner)
사용법(Usage): 요청 바디ChangeGroupMailOwnerRequest/client/mail/dialog/group/users/add
역할(Role): 그룹 메일 사용자 추가(add user to mail group)
사용법(Usage): 요청 바디AddUserGroupMailRequest/client/mail/dialog/group/users/remove
역할(Role): 그룹 메일 사용자 제거(remove user from mail group)
사용법(Usage): 요청 바디RemoveUserGroupMailRequest/client/friend/list
역할(Role): 친구 목록 조회(get friend list)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/friend/request/list/outbox
역할(Role): 보낸 요청 목록(outbox) 조회(list outbox)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/friend/request/list/inbox
역할(Role): 받은 요청 목록(inbox) 조회(list inbox)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/friend/request/send
역할(Role): 친구 요청 전송(send friend request)
사용법(Usage): 요청 바디FriendRequestData/client/friend/request/accept-all
역할(Role): 모든 친구 요청 수락(accept all requests)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/friend/request/accept
역할(Role): 친구 요청 수락(accept request)
사용법(Usage): 요청 바디AcceptFriendRequestData/client/friend/request/decline
역할(Role): 친구 요청 거절(decline request)
사용법(Usage): 요청 바디DeclineFriendRequestData/client/friend/request/cancel
역할(Role): 친구 요청 취소(cancel request)
사용법(Usage): 요청 바디CancelFriendRequestData/client/friend/delete
역할(Role): 친구 삭제(delete friend)
사용법(Usage): 요청 바디DeleteFriendRequest/client/friend/ignore/set
역할(Role): 친구 차단 설정(ignore friend)
사용법(Usage): 요청 바디UIDRequestData/client/friend/ignore/remove
역할(Role): 친구 차단 해제(unignore friend)
사용법(Usage): 요청 바디UIDRequestData
Game API
/client/game/config
역할(Role): 게임 설정 조회(get game config)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/putHWMetrics
역할(Role): 하드웨어 지표 전송(put HW metrics)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/game/mode
역할(Role): 게임 모드 조회(get game mode)
사용법(Usage): 요청 바디GameModeRequestData/client/server/list
역할(Role): 서버 목록 조회(get server list)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/group/current
역할(Role): 현재 그룹 조회(get current group)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/game/version/validate
역할(Role): 버전 검증(validate game version)
사용법(Usage): 요청 바디VersionValidateRequestData/client/game/start
역할(Role): 게임 시작(start game)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/game/logout
역할(Role): 로그아웃(logout)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/checkVersion
역할(Role): 버전 확인(check version)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/game/keepalive
역할(Role): 세션 유지(keepalive)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/singleplayer/settings/version
역할(Role): 서버 버전 조회(get server version)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/reports/lobby/send
역할(Role): 로비 신고 전송(send lobby report)
사용법(Usage): 요청 바디UIDRequestData/client/report/send
역할(Role): 신고 전송(send report)
사용법(Usage): 요청 바디UIDRequestData/singleplayer/settings/getRaidTime
역할(Role): 레이드 시간 설정 조회(get raid time)
사용법(Usage): 요청 바디GetRaidTimeRequest/client/survey
역할(Role): 설문 조회(get survey)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/survey/view
역할(Role): 설문 상세 조회(get survey view)
사용법(Usage): 요청 바디SendSurveyOpinionRequest/client/survey/opinion
역할(Role): 설문 의견 전송(send survey opinion)
사용법(Usage): 요청 바디SendSurveyOpinionRequest/singleplayer/clientmods
역할(Role): 클라이언트 모드 목록 수신(receive client mods)
사용법(Usage): 요청 바디SendClientModsRequest
Health API
/client/hideout/workout
역할(Role): 은신처 운동 효과 처리(handle workout effects)
사용법(Usage): 요청 바디WorkoutData
Inraid API
/raid/profile/scavsave
역할(Role): 스캐브 진행 저장(save scav progress)
사용법(Usage): 요청 바디ScavSaveRequestData/singleplayer/settings/raid/menu
역할(Role): 레이드 메뉴 설정 조회(get raid menu settings)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/singleplayer/scav/traitorscavhostile
역할(Role): 배신 스캐브 확률 조회(get traitor scav hostile chance)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/singleplayer/bosstypes
역할(Role): 보스 타입 목록 조회(get boss types)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Insurance API
/client/insurance/items/list/cost
역할(Role): 보험 비용 조회(get insurance cost)
사용법(Usage): 요청 바디GetInsuranceCostRequestData
Item Events API
/client/game/profile/items/moving
역할(Role): 아이템 이벤트 처리(handle item events)
사용법(Usage): 요청 바디ItemEventRouterRequest
분기 기준(Action): 아래 Item Event Actions 섹션 참고
Launcher API
-
런처 프로필 조회 가이드(Launcher Profile Fetch Guide)
- 공통 포맷(Common format)
- 요청 헤더(Headers)
requestcompressed: 0responsecompressed: 0Content-Type: application/json
- 기본(cURL)
curl -k -X POST "https://{ip}:{port}/{path}" -H "requestcompressed: 0" -H "responsecompressed: 0" -H "Content-Type: application/json" -d '<json>'
- 요청 헤더(Headers)
- 로그인 과정(Login flow)
- 요청(Request)
POST /launcher/profile/login- 바디(Body):
{"username":"<id>"}
- 응답(Response)
- 본문(body)에 세션 아이디(session id) 문자열 반환 (예:
6971f8f02539470025aaafad)
- 본문(body)에 세션 아이디(session id) 문자열 반환 (예:
- 예시(Example)
curl -k -X POST "https://pandoli365.com:5069/launcher/profile/login" -H "requestcompressed: 0" -H "responsecompressed: 0" -H "Content-Type: application/json" -d '{"username":"art"}'
- 요청(Request)
- 프로필 불러오는 방법(Profile fetch)
- 로그인 응답으로 받은 세션 아이디(session id)를 쿠키(cookie)로 전달
- 요청(Request)
POST /launcher/profile/info- 헤더(Header):
Cookie: PHPSESSID=<sessionId> - 바디(Body):
{"username":"<id>"}
- 예시(Example)
curl -k -X POST "https://pandoli365.com:5069/launcher/profile/info" -H "requestcompressed: 0" -H "responsecompressed: 0" -H "Content-Type: application/json" -H "Cookie: PHPSESSID=6971f8f02539470025aaafad" -d '{"username":"art"}'
- 공통 포맷(Common format)
-
/launcher/ping
역할(Role): 런처 핑(ping)
사용법(Usage): 요청 바디 없음(EmptyRequestData) -
/launcher/server/connect
역할(Role): 서버 연결(connect to server)
사용법(Usage): 요청 바디 없음(EmptyRequestData) -
/launcher/profile/login
역할(Role): 로그인(login)
사용법(Usage): 요청 바디LoginRequestData -
/launcher/profile/register
역할(Role): 계정 등록(register)
사용법(Usage): 요청 바디RegisterData -
/launcher/profile/get
역할(Role): 계정 조회(get profile)
사용법(Usage): 요청 바디LoginRequestData -
/launcher/profiles
역할(Role): 프로필 목록 조회(get profile list)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
주의(Note): 응답이 압축(compressed)되는 경우가 있어responsecompressed: 0헤더를 권장 -
/launcher/profile/change/username
역할(Role): 사용자명 변경(change username)
사용법(Usage): 요청 바디ChangeRequestData -
/launcher/profile/change/wipe
역할(Role): 와이프(wipe)
사용법(Usage): 요청 바디RegisterData -
/launcher/profile/remove
역할(Role): 계정 삭제(remove profile)
사용법(Usage): 요청 바디RemoveProfileData -
/launcher/profile/compatibleTarkovVersion
역할(Role): 호환 버전 조회(get compatible version)
사용법(Usage): 요청 바디 없음(EmptyRequestData) -
/launcher/server/version
역할(Role): 서버 버전 조회(get server version)
사용법(Usage): 요청 바디 없음(EmptyRequestData) -
/launcher/server/loadedServerMods
역할(Role): 서버 로드 모드 목록(get loaded server mods)
사용법(Usage): 요청 바디 없음(EmptyRequestData) -
/launcher/server/serverModsUsedByProfile
역할(Role): 프로필 사용 모드 조회(get mods used by profile)
사용법(Usage): 요청 바디EmptyRequestData
Launcher V2 API
/launcher/v2/ping
역할(Role): 런처 v2 핑(ping)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/launcher/v2/types
역할(Role): 런처 v2 타입 조회(get types)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/launcher/v2/login
역할(Role): 런처 v2 로그인(login)
사용법(Usage): 요청 바디LoginRequestData/launcher/v2/register
역할(Role): 런처 v2 등록(register)
사용법(Usage): 요청 바디RegisterData/launcher/v2/remove
역할(Role): 런처 v2 계정 삭제(remove)
사용법(Usage): 요청 바디LoginRequestData/launcher/v2/version
역할(Role): 런처 v2 호환 버전 조회(compatible version)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/launcher/v2/mods
역할(Role): 런처 v2 모드 목록 조회(mods)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/launcher/v2/profiles
역할(Role): 런처 v2 프로필 목록 조회(profiles)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/launcher/v2/profile
역할(Role): 런처 v2 프로필 조회(profile)
사용법(Usage): 요청 바디LoginRequestData/launcher/v2/wipe
역할(Role): 런처 v2 와이프(wipe)
사용법(Usage): 요청 바디RegisterData
Locations API
/client/locations
역할(Role): 위치 데이터 조회(get location data)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/airdrop/loot
역할(Role): 에어드롭 전리품 조회(get airdrop loot)
사용법(Usage): 요청 바디GetAirdropLootRequest(선택/optional)
Match API
/client/match/available
역할(Role): 매치 가능 여부 조회(check availability)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/updatePing
역할(Role): 핑 업데이트(update ping)
사용법(Usage): 요청 바디UpdatePingRequestData/client/match/join
역할(Role): 매치 참가(join match)
사용법(Usage): 요청 바디MatchGroupJoinRequest/client/match/exit
역할(Role): 매치 종료(exit match)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/group/delete
역할(Role): 그룹 삭제(delete group)
사용법(Usage): 요청 바디DeleteGroupRequest/client/match/group/leave
역할(Role): 그룹 탈퇴(leave group)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/group/status
역할(Role): 그룹 상태 조회(get group status)
사용법(Usage): 요청 바디MatchGroupStatusRequest/client/match/group/start_game
역할(Role): 그룹장 게임 시작(start game as group leader)
사용법(Usage): 요청 바디MatchGroupStartGameRequest/client/match/group/exit_from_menu
역할(Role): 메뉴에서 그룹 종료(exit from menu)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/group/current
역할(Role): 현재 그룹 조회(get current group)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/group/looking/start
역할(Role): 그룹 탐색 시작(start group search)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/group/looking/stop
역할(Role): 그룹 탐색 종료(stop group search)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/group/invite/send
역할(Role): 그룹 초대 전송(send invite)
사용법(Usage): 요청 바디MatchGroupInviteSendRequest/client/match/group/invite/accept
역할(Role): 그룹 초대 수락(accept invite)
사용법(Usage): 요청 바디RequestIdRequest/client/match/group/invite/decline
역할(Role): 그룹 초대 거절(decline invite)
사용법(Usage): 요청 바디RequestIdRequest/client/match/group/invite/cancel
역할(Role): 그룹 초대 취소(cancel invite)
사용법(Usage): 요청 바디RequestIdRequest/client/match/group/invite/cancel-all
역할(Role): 모든 그룹 초대 취소(cancel all invites)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/group/transfer
역할(Role): 그룹장 위임(transfer group)
사용법(Usage): 요청 바디MatchGroupTransferRequest/client/match/group/raid/ready
역할(Role): 레이드 준비 완료(raid ready)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/match/group/raid/not-ready
역할(Role): 레이드 준비 해제(raid not ready)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/putMetrics
역할(Role): 지표 전송(put metrics)
사용법(Usage): 요청 바디PutMetricsRequestData/client/analytics/event-disconnect
역할(Role): 연결 해제 이벤트 전송(disconnect event)
사용법(Usage): 요청 바디PutMetricsRequestData/client/getMetricsConfig
역할(Role): 지표 설정 조회(get metrics config)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/raid/configuration
역할(Role): 레이드 구성 조회(get raid configuration)
사용법(Usage): 요청 바디GetRaidConfigurationRequestData/client/raid/configuration-by-profile
역할(Role): 프로필 기반 레이드 구성 조회(get configuration by profile)
사용법(Usage): 요청 바디GetRaidConfigurationRequestData/client/match/group/player/remove
역할(Role): 그룹 플레이어 제거(remove player from group)
사용법(Usage): 요청 바디MatchGroupPlayerRemoveRequest/client/match/local/start
역할(Role): 로컬 레이드 시작(start local raid)
사용법(Usage): 요청 바디StartLocalRaidRequestData/client/match/local/end
역할(Role): 로컬 레이드 종료(end local raid)
사용법(Usage): 요청 바디EndLocalRaidRequestData
Modded Trader Customization API
/singleplayer/moddedTraders
역할(Role): 모드 트레이더 커스터마이징 조회(get modded trader customization)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Notifier API
/client/notifier/channel/create
역할(Role): 노티파이어 채널 생성(create notifier channel)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/game/profile/select
역할(Role): 프로필 선택(select profile)
사용법(Usage): 요청 바디UIDRequestData
Prestige API
/client/prestige/list
역할(Role): 프레스티지 목록 조회(get prestige list)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/prestige/obtain
역할(Role): 프레스티지 획득(obtain prestige)
사용법(Usage): 요청 바디ObtainPrestigeRequestList
Profile API
/client/game/profile/create
역할(Role): 프로필 생성(create profile)
사용법(Usage): 요청 바디ProfileCreateRequestData/client/game/profile/list
역할(Role): 프로필 목록 조회(get profile list)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/game/profile/savage/regenerate
역할(Role): 스캐브 재생성(regenerate scav)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/game/profile/voice/change
역할(Role): 보이스 변경(change voice)
사용법(Usage): 요청 바디ProfileChangeVoiceRequestData/client/game/profile/nickname/change
역할(Role): 닉네임 변경(change nickname)
사용법(Usage): 요청 바디ProfileChangeNicknameRequestData/client/game/profile/nickname/validate
역할(Role): 닉네임 유효성 검증(validate nickname)
사용법(Usage): 요청 바디ValidateNicknameRequestData/client/game/profile/nickname/reserved
역할(Role): 예약 닉네임 조회(get reserved nickname)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/profile/status
역할(Role): 프로필 상태 조회(get profile status)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/profile/view
역할(Role): 다른 프로필 조회(get other profile)
사용법(Usage): 요청 바디GetOtherProfileRequest/client/profile/settings
역할(Role): 프로필 설정 조회(get profile settings)
사용법(Usage): 요청 바디GetProfileSettingsRequest/client/game/profile/search
역할(Role): 프로필 검색(search profiles)
사용법(Usage): 요청 바디SearchProfilesRequestData/launcher/profile/info
역할(Role): 미니 프로필 조회(get mini profile)
사용법(Usage): 요청 바디GetMiniProfileRequestData/launcher/profiles
역할(Role): 미니 프로필 목록 조회(get all mini profiles)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Quest API
/client/quest/list
역할(Role): 퀘스트 목록 조회(list quests)
사용법(Usage): 요청 바디ListQuestsRequestData/client/repeatalbeQuests/activityPeriods
역할(Role): 반복 퀘스트 기간 조회(get repeatable quest activity periods)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Ragfair API
/client/ragfair/search
역할(Role): 플리마켓 검색(search ragfair)
사용법(Usage): 요청 바디SearchRequestData/client/ragfair/find
역할(Role): 플리마켓 검색(search ragfair)
사용법(Usage): 요청 바디SearchRequestData/client/ragfair/itemMarketPrice
역할(Role): 시세 조회(get market price)
사용법(Usage): 요청 바디GetMarketPriceRequestData/client/ragfair/offerfees
역할(Role): 등록 수수료 계산(store offer fee)
사용법(Usage): 요청 바디StorePlayerOfferTaxAmountRequestData/client/reports/ragfair/send
역할(Role): 플리마켓 신고 전송(send ragfair report)
사용법(Usage): 요청 바디SendRagfairReportRequestData/client/items/prices
역할(Role): 플리마켓 가격 조회(get flea prices)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/ragfair/offer/findbyid
역할(Role): 오퍼 조회(find offer by id)
사용법(Usage): 요청 바디GetRagfairOfferByIdRequest
Trader API
/client/trading/api/traderSettings
역할(Role): 트레이더 설정 조회(get trader settings)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Weather API
/client/weather
역할(Role): 날씨 조회(get weather)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/localGame/weather
역할(Role): 로컬 게임 날씨 조회(get local weather)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
동적 라우트 API (Dynamic Routes)
동적 라우트(dynamic routes)는 아래 경로(prefix)로 매칭됩니다.
Bots Dynamic API
/singleplayer/settings/bot/limit/
역할(Role): 봇 제한 조회(get bot limit)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/singleplayer/settings/bot/difficulty/
역할(Role): 봇 난이도 조회(get bot difficulty)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/singleplayer/settings/bot/difficulties
역할(Role): 전체 난이도 목록 조회(get all bot difficulties)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/singleplayer/settings/bot/maxCap
역할(Role): 봇 최대치 조회(get bot cap)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/singleplayer/settings/bot/getBotBehaviours/
역할(Role): 봇 행동 조회(get bot behaviours)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Bundle Dynamic API
/files/bundle
역할(Role): 번들 파일 제공(get bundle file)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Customization Dynamic API
/client/trading/customization/
역할(Role): 트레이더 슈트 조회(get trader suits)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Data Dynamic API
/client/menu/locale/
역할(Role): 메뉴 로케일 조회(get menu locale)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/locale/
역할(Role): 로케일 조회(get locale)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/items/prices/
역할(Role): 아이템 가격 조회(get item prices)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Inraid Dynamic API
/client/location/getLocalloot
역할(Role): 로컬 루트 등록(register local loot)
사용법(Usage): 요청 바디RegisterPlayerRequestData
Notifier Dynamic API
/?last_id
역할(Role): 노티파이어 폴링(notifier poll)
사용법(Usage): 요청 바디 없음(EmptyRequestData), 경로 패턴(path pattern)만 존재/notifierServer
역할(Role): 노티파이어 폴링(notifier poll)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/push/notifier/get/
역할(Role): 노티파이어 정보 조회(get notifier)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Trader Dynamic API
/client/trading/api/getTrader/
역할(Role): 트레이더 조회(get trader)
사용법(Usage): 요청 바디 없음(EmptyRequestData)/client/trading/api/getTraderAssort/
역할(Role): 트레이더 재고 조회(get trader assort)
사용법(Usage): 요청 바디 없음(EmptyRequestData)
Item Event Actions (아이템 이벤트 액션)
/client/game/profile/items/moving는 Action 값에 따라 처리 로직이 분기됩니다.
Inventory Actions
Move,Remove,Split,Merge,Transfer,Swap,Fold,ToggleTag,Bind,Unbind,Examine,ReadEncyclopediaApplyInventoryChanges,CreateMapMarker,DeleteMapMarker,EditMapMarkerOpenRandomLootContainer,HideoutQuickTimeEventRedeemProfileReward,SetFavoriteItems,QuestFail,PinLockSaveDialogueState
Quest Actions
QuestAccept,QuestComplete,QuestHandover,RepeatableQuestChange
Ragfair Actions
RagFairAddOffer,RagFairRemoveOffer,RagFairRenewOffer
Repair Actions
Repair,TraderRepair
Trade Actions
TradingConfirm,RagFairBuyOffer,SellAllFromSavage
Health Actions
Eat,Heal,RestoreHealth
Insurance Actions
Insure
Customization Actions
CustomizationBuy,CustomizationSet
Note Actions
AddNote,EditNote,DeleteNote
Wishlist Actions
AddToWishList,RemoveFromWishList,ChangeWishlistItemCategory
Hideout Actions (HideoutEventActions)
HideoutUpgrade,HideoutUpgradeCompleteHideoutPutItemsInAreaSlots,HideoutTakeItemsFromAreaSlots,HideoutToggleAreaHideoutSingleProductionStart,HideoutScavCaseProductionStart,HideoutContinuousProductionStartHideoutTakeProduction,RecordShootingRangePoints,HideoutImproveAreaHideoutCancelProductionCommand,HideoutCircleOfCultistProductionStartHideoutDeleteProductionCommand,HideoutCustomizationApply,HideoutCustomizationSetMannequinPose
WebSocket (웹소켓)
/notifierServer/getwebsocket/{sessionId}
역할(Role): 노티파이어 웹소켓 연결(websocket connection)
사용법(Usage):{sessionId}를 포함한 경로로 접속
파일/번들/이미지 (Files/Bundles/Images)
- 번들(bundle):
/files/bundle(동적 라우트, 파일 응답) - 이미지(image):
ImageRouter는 런타임에AddRoute로 등록된 경로만 처리합니다.
정적 목록은 코드 상에 고정되어 있지 않습니다.
MVC 컨트롤러 예시 (Mod MVC Example)
GET /test/ping
역할(Role): 테스트 핑(test ping)
사용법(Usage): 요청 바디 없음
응답 예시(Response Example):
"Pong from MVC!"
공개 엔드포인트 (Public Endpoints)
이 문서는 서버에 노출된 공개 엔드포인트(public endpoints)를 전수조사하여 정리한 레퍼런스입니다.
라우팅 정의는 주로 Libraries/SPTarkov.Server.Core/Routers 아래에 있으며, 테스트용 MVC 컨트롤러(MVC controller)는 Testing/TestMod/Controllers에 있습니다.
기본 URL (Base URL)
https://{HttpConfig.Ip}:{HttpConfig.Port}
설정 위치:Libraries/SPTarkov.Server.Core/Models/Spt/Config/HttpConfig.cs
HTTP 메서드 (HTTP Methods)
SptHttpListener는GET,POST,PUT모두 수용하며, 라우팅 매칭은 메서드(method)를 구분하지 않습니다.
따라서 아래 목록은 메서드 무관(method-agnostic) 입니다.
라우팅 타입 (Routing Types)
- StaticRouter (정적 라우터): URL을 정확히 일치(exact match) 시켜 처리합니다.
- DynamicRouter (동적 라우터): URL이 부분 일치(partial match) 할 때 처리합니다.
예:/client/locale/는/client/locale/en같은 하위 경로(prefix)에도 매칭됩니다.
Static Routes (정적 라우트)
AchievementStaticRouter
/client/achievement/list(GetAchievements)/client/achievement/statistic(Statistic)
BotStaticRouter
/client/game/bot/generate(GenerateBots)
BuildStaticRouter
/client/builds/list(GetBuilds)/client/builds/magazine/save(CreateMagazineTemplate)/client/builds/weapon/save(SetWeapon)/client/builds/equipment/save(SetEquipment)/client/builds/delete(DeleteBuild)
BundleStaticRouter
/singleplayer/bundles(GetBundles)
ClientLogStaticRouter
/singleplayer/log(ClientLog)/singleplayer/release(ReleaseNotes)/singleplayer/enableBSGlogging(BsgLogging)
CustomizationStaticRouter
/client/trading/customization/storage(GetCustomisationUnlocks)/client/hideout/customization/offer/list(GetHideoutCustomisation)/client/customization/storage(GetStorage)
DataStaticRouter
/client/settings(GetSettings)/client/globals(GetGlobals)/client/items(GetTemplateItems)/client/handbook/templates(GetTemplateHandbook)/client/customization(GetTemplateSuits)/client/account/customization(GetTemplateCharacter)/client/hideout/production/recipes(GetHideoutProduction)/client/hideout/settings(GetHideoutSettings)/client/hideout/areas(GetHideoutAreas)/client/languages(GetLocalesLanguages)/client/hideout/qte/list(GetQteList)/client/dialogue(GetDialogue)
DialogStaticRouter
/client/chatServer/list(GetChatServerList)/client/mail/dialog/list(GetMailDialogList)/client/mail/dialog/view(GetMailDialogView)/client/mail/dialog/info(GetMailDialogInfo)/client/mail/dialog/remove(RemoveDialog)/client/mail/dialog/pin(PinDialog)/client/mail/dialog/unpin(UnpinDialog)/client/mail/dialog/read(SetRead)/client/mail/dialog/getAllAttachments(GetAllAttachments)/client/mail/msg/send(SendMessage)/client/mail/dialog/clear(ClearMail)/client/mail/dialog/group/create(CreateGroupMail)/client/mail/dialog/group/owner/change(ChangeMailGroupOwner)/client/mail/dialog/group/users/add(AddUserToMail)/client/mail/dialog/group/users/remove(RemoveUserFromMail)/client/friend/list(GetFriendList)/client/friend/request/list/outbox(ListOutbox)/client/friend/request/list/inbox(ListInbox)/client/friend/request/send(SendFriendRequest)/client/friend/request/accept-all(AcceptAllFriendRequests)/client/friend/request/accept(AcceptFriendRequest)/client/friend/request/decline(DeclineFriendRequest)/client/friend/request/cancel(CancelFriendRequest)/client/friend/delete(DeleteFriend)/client/friend/ignore/set(IgnoreFriend)/client/friend/ignore/remove(UnIgnoreFriend)
GameStaticRouter
/client/game/config(GetGameConfig)/client/putHWMetrics(PutHwMetrics)/client/game/mode(GetGameMode)/client/server/list(GetServer)/client/match/group/current(GetCurrentGroup)/client/game/version/validate(VersionValidate)/client/game/start(GameStart)/client/game/logout(GameLogout)/client/checkVersion(ValidateGameVersion)/client/game/keepalive(GameKeepalive)/singleplayer/settings/version(GetVersion)/client/reports/lobby/send(ReportNickname)/client/report/send(ReportNickname)/singleplayer/settings/getRaidTime(GetRaidTime)/client/survey(GetSurvey)/client/survey/view(GetSurveyView)/client/survey/opinion(SendSurveyOpinion)/singleplayer/clientmods(ReceiveClientMods)
HealthStaticRouter
/client/hideout/workout(HandleWorkoutEffects)
InraidStaticRouter
/raid/profile/scavsave(SaveProgress)/singleplayer/settings/raid/menu(GetRaidMenuSettings)/singleplayer/scav/traitorscavhostile(GetTraitorScavHostileChance)/singleplayer/bosstypes(GetBossTypes)
InsuranceStaticRouter
/client/insurance/items/list/cost(GetInsuranceCost)
ItemEventStaticRouter
/client/game/profile/items/moving(HandleEvents)
상세한 액션(action) 목록은 아래 Item Event Actions 섹션을 참고하세요.
LauncherStaticRouter
/launcher/ping(Ping)/launcher/server/connect(Connect)/launcher/profile/login(Login)/launcher/profile/register(Register)/launcher/profile/get(Get)/launcher/profile/change/username(ChangeUsername)/launcher/profile/change/wipe(Wipe)/launcher/profile/remove(RemoveProfile)/launcher/profile/compatibleTarkovVersion(GetCompatibleTarkovVersion)/launcher/server/version(GetServerVersion)/launcher/server/loadedServerMods(GetLoadedServerMods)/launcher/server/serverModsUsedByProfile(GetServerModsProfileUsed)
LauncherV2StaticRouter
/launcher/v2/ping(Ping)/launcher/v2/types(Types)/launcher/v2/login(Login)/launcher/v2/register(Register)/launcher/v2/remove(Remove)/launcher/v2/version(CompatibleVersion)/launcher/v2/mods(Mods)/launcher/v2/profiles(Profiles)/launcher/v2/profile(Profile)/launcher/v2/wipe(Wipe)
LocationStaticRouter
/client/locations(GetLocationData)/client/airdrop/loot(GetAirdropLoot)
MatchStaticRouter
/client/match/available(ServerAvailable)/client/match/updatePing(UpdatePing)/client/match/join(JoinMatch)/client/match/exit(ExitMatch)/client/match/group/delete(DeleteGroup)/client/match/group/leave(LeaveGroup)/client/match/group/status(GetGroupStatus)/client/match/group/start_game(StartGameAsGroupLeader)/client/match/group/exit_from_menu(ExitFromMenu)/client/match/group/current(GroupCurrent)/client/match/group/looking/start(StartGroupSearch)/client/match/group/looking/stop(StopGroupSearch)/client/match/group/invite/send(SendGroupInvite)/client/match/group/invite/accept(AcceptGroupInvite)/client/match/group/invite/decline(DeclineGroupInvite)/client/match/group/invite/cancel(CancelGroupInvite)/client/match/group/invite/cancel-all(CancelAllGroupInvite)/client/match/group/transfer(TransferGroup)/client/match/group/raid/ready(RaidReady)/client/match/group/raid/not-ready(NotRaidReady)/client/putMetrics(PutMetrics)/client/analytics/event-disconnect(EventDisconnect)/client/getMetricsConfig(GetMetrics)/client/raid/configuration(GetRaidConfiguration)/client/raid/configuration-by-profile(GetConfigurationByProfile)/client/match/group/player/remove(RemovePlayerFromGroup)/client/match/local/start(StartLocalRaid)/client/match/local/end(EndLocalRaid)
ModdedTraderCustomizationRouter
/singleplayer/moddedTraders(GetCustomizationTraders)
NotifierStaticRouter
/client/notifier/channel/create(CreateNotifierChannel)/client/game/profile/select(SelectProfile)
PrestigeStaticRouter
/client/prestige/list(GetPrestige)/client/prestige/obtain(ObtainPrestige)
ProfileStaticRouter
/client/game/profile/create(CreateProfile)/client/game/profile/list(GetProfileData)/client/game/profile/savage/regenerate(RegenerateScav)/client/game/profile/voice/change(ChangeVoice)/client/game/profile/nickname/change(ChangeNickname)/client/game/profile/nickname/validate(ValidateNickname)/client/game/profile/nickname/reserved(GetReservedNickname)/client/profile/status(GetProfileStatus)/client/profile/view(GetOtherProfile)/client/profile/settings(GetProfileSettings)/client/game/profile/search(SearchProfiles)/launcher/profile/info(GetMiniProfile)/launcher/profiles(GetAllMiniProfiles)
QuestStaticRouter
/client/quest/list(ListQuests)/client/repeatalbeQuests/activityPeriods(ActivityPeriods)
RagfairStaticRouter
/client/ragfair/search(Search)/client/ragfair/find(Search)/client/ragfair/itemMarketPrice(GetMarketPrice)/client/ragfair/offerfees(StorePlayerOfferTaxAmount)/client/reports/ragfair/send(SendReport)/client/items/prices(GetFleaPrices)/client/ragfair/offer/findbyid(GetFleaOfferById)
TraderStaticRouter
/client/trading/api/traderSettings(GetTraderSettings)
WeatherStaticRouter
/client/weather(GetWeather)/client/localGame/weather(GetLocalWeather)
Dynamic Routes (동적 라우트)
동적 라우트(dynamic routes)는 부분 일치(partial match) 로 동작합니다.
아래 경로는 prefix로 사용됩니다.
BotDynamicRouter
/singleplayer/settings/bot/limit/(GetBotLimit)/singleplayer/settings/bot/difficulty/(GetBotDifficulty)/singleplayer/settings/bot/difficulties(GetAllBotDifficulties)/singleplayer/settings/bot/maxCap(GetBotCap)/singleplayer/settings/bot/getBotBehaviours/(GetBotBehaviours)
BundleDynamicRouter
/files/bundle(GetBundle)
CustomizationDynamicRouter
/client/trading/customization/(GetTraderSuits)
DataDynamicRouter
/client/menu/locale/(GetLocalesMenu)/client/locale/(GetLocalesGlobal)/client/items/prices/(GetItemPrices)
InraidDynamicRouter
/client/location/getLocalloot(RegisterPlayer)
NotifierDynamicRouter
/?last_id(Notify)
주의:Path기준 부분 일치라서/경로에 대한 폴링(long-poll) 패턴으로 사용됩니다./notifierServer(Notify)/push/notifier/get/(GetNotifier)
TraderDynamicRouter
/client/trading/api/getTrader/(GetTrader)/client/trading/api/getTraderAssort/(GetAssort)
LocationDynamicRouter
- (라우트 없음)
DynamicRouter를 상속하지만 현재 등록된 경로가 없습니다.
Item Event Actions (아이템 이벤트 액션)
/client/game/profile/items/moving 엔드포인트는 Action 필드에 따라 실제 처리가 분기됩니다.
아래는 처리 가능한 액션(action) 목록입니다.
Inventory Actions
Move,Remove,Split,Merge,Transfer,Swap,Fold,ToggleTag,Bind,Unbind,Examine,ReadEncyclopediaApplyInventoryChanges,CreateMapMarker,DeleteMapMarker,EditMapMarkerOpenRandomLootContainer,HideoutQuickTimeEventRedeemProfileReward,SetFavoriteItems,QuestFail,PinLockSaveDialogueState
Quest Actions
QuestAccept,QuestComplete,QuestHandover,RepeatableQuestChange
Ragfair Actions
RagFairAddOffer,RagFairRemoveOffer,RagFairRenewOffer
Repair Actions
Repair,TraderRepair
Trade Actions
TradingConfirm,RagFairBuyOffer,SellAllFromSavage
Health Actions
Eat,Heal,RestoreHealth
Insurance Actions
Insure
Customization Actions
CustomizationBuy,CustomizationSet
Note Actions
AddNote,EditNote,DeleteNote
Wishlist Actions
AddToWishList,RemoveFromWishList,ChangeWishlistItemCategory
Hideout Actions (HideoutEventActions)
HideoutUpgrade,HideoutUpgradeCompleteHideoutPutItemsInAreaSlots,HideoutTakeItemsFromAreaSlots,HideoutToggleAreaHideoutSingleProductionStart,HideoutScavCaseProductionStart,HideoutContinuousProductionStartHideoutTakeProduction,RecordShootingRangePoints,HideoutImproveAreaHideoutCancelProductionCommand,HideoutCircleOfCultistProductionStartHideoutDeleteProductionCommand,HideoutCustomizationApply,HideoutCustomizationSetMannequinPose
WebSocket (웹소켓)
/notifierServer/getwebsocket/{sessionId}
핸들러(hook) 경로:/notifierServer/getwebsocket/
실제 연결은 경로에 세션 ID(sessionId)가 추가된 형태를 사용합니다.
파일/번들/이미지 제공 (Files/Bundles/Images)
- 번들(bundle):
/files/bundle...(동적 라우트,BundleDynamicRouter) - 이미지(image):
ImageRouter는 런타임에AddRoute로 등록된 경로만 처리합니다.
정적 목록은 코드 상에 고정되어 있지 않습니다.
MVC 컨트롤러 (Mod Controller) 예시
테스트 모드(TestMod)에서 제공되는 예시 엔드포인트:
GET /test/ping(TestController.Ping)
또한 SPTWeb는 app.MapControllers()로 모드(mod)에서 제공하는 MVC 컨트롤러를 자동 등록합니다.