r46
r19
1[[분류:the seed/권한]]
r14
2[include(틀:the seed/권한)]
r1
3[목차]
4== 개요 ==
r46
(삭제된 사용자)
5[[더시드|the seed]] 엔진에 존재하는 권한 중 하나로 말그대로 API에 접근할 수 있는 권한이다.
r1
6
r22
7== 용도 ==
r42
8더시드엔진은 공개 API를 통한 외부 접속 기능을 지원한다. 단, API는 계정 사용자에 한해서 지원되며 API로 접속하려면 계정의 로그인 정보 대신 API Token이라는 256자리의 무작위 숫자+알파벳으로 구성된 개인 식별키가 필요하다.[*발급방법 API Token은 로그인 후 '우측 상단 프로필 메뉴>[[https://theseed.io/member/mypage|내 정보]]' 페이지에서 최하단에 있는 API Token 항목의 발급 버튼을 누르고 계정의 비밀번호를 입력해서 발급받을 수 있다.][*주의 이 토큰은 곧 '''계정의 ID/비밀번호와 똑같은 역할을 하기 때문에 절대로 유출되지 않도록 주의해야 한다.''' API 접속은 2차 인증의 영향을 받지 않기 때문에 토큰값만 있으면 계정의 ID와 비밀번호를 몰라도 언제 어디서든지 계정에 마음대로 접속해서 API로 편집 활동을 할 수 있기 때문이다. 만약, 유출되었다고 판단되면 지체 없이 재발급해서 토큰을 교체해야 한다.][* 참고로 한번 발급받은 API Token키는 반영구적으로 유지되지만, '''최초 발급 때를 제외하고 재확인할 방법이 아예 없어서 따로 저장을 해두어야 한다.''' 토큰값을 잊어버려서 재발급하려면 그냥 최초 발급이랑 똑같이 다시 발급받으면 되는데 이 경우 기존 토큰은 만료되고 새 토큰값이 발급되는 식이다. 발급 횟수에는 딱히 제한이 없다.] 이를 이용해 웹브라우저가 아닌 봇, 터미널 프로그램등을 이용해 엔진에 직접 접근하여 자동 편집 등의 위키 작업이 가능하다. 이 때 API를 사용하기 위해서 필요한 권한이 바로 이 권한이다.
r4
9
r41
10더시드엔진의 공개 API는 기본적으로 보호 처리가 되어 있어서 이 권한이 없으면 API Token이 있어도 엔진 상에서 API 접근이 차단된다.[* 이 권한이 없는 상태에서 API 접속 시도 시 어떤 작업을 하더라도 접근 권한이 없다는 '403(Forbidden)' 에러를 반환한다.] 따라서 API를 이용한 봇을 운용하려면 반드시 이 권한이 필요하다.
r27
11
r36
12[[나무위키]]와 [[알파위키]]의 경우 봇 계정에게 이 권한을 부여해서 API를 이용한 자동 편집을 할 수 있게 해준다. 다만, 자세한 봇 사용 계획과 규모, 그리고 유사 시 대처 방안 등을 자세하게 담은 사용 계획을 제시 후 승인을 받아야 하며, 이후 봇으로 문제를 일으키거나 하면 권한이 강제로 회수될 수도 있으니 주의. 이 권한으로 API에 접속해서 편집을 하는 경우 '최근 변경'에서 기여자 이름 옆에 ''(API)''라고 표시되어 봇에 의한 편집임을 구분할 수 있는데, 나무위키 한정으로 최근 변경에서 더 이상 봇 편집이 뜨지 않게 커스텀되어 있다.[* 나무위키의 경우 대규모로 봇을 운용하는 사람이 많은데 이 때 여러 봇의 작동이 겹칠 경우 최근 변경이 봇 편집내역으로 도배되어서 사실상 정상적으로 기능하지 못하는 문제가 있어서 이를 방지하기 위한 조치로 보인다. 다른 위키에서도 [[config]] 등으로 설정할 수 있는지는 불명.][* 다만, 실제로는 계속 표시되고는 있으나 최근 변경 페이지 상에서만 숨겨지도록 세팅되어 있는 것으로 보이는데 사이드바와 게시판에 뜨는 최근 변경 배너에서는 봇의 편집이 그대로 노출되기 때문.]
r26
13
r27
14더시드위키에서는 악용 가능성이 딱히 없는지라 요청 시 무난하게 권한을 부여받아 봇을 테스트해볼 수 있다. 다만, API 활용 계획 등을 명확하게 밝혀야 한다.
r22
15
16[[https://doc.theseed.io]]에서 API의 사용 방법을 확인할 수 있다.
17
r21
18== API 사용 방법 ==
r4
191. 사용자가 요청하면 JSON으로 반환하게 된다.
r39
202. API_TOKEN[* 'Authorization': 'Bearer API_TOKEN'의 API_TOKEN[br] 이때, Bearer는 제거하면 안 된다.]에는 [[https://theseed.io/member/mypage|내 정보]]의 API Token 발급 버튼을 눌러 자신의 계정 비밀번호를 입력한 뒤 나오는 token값을 적으면 된다.
r4
21
22=== python ===
23==== 편집 시작 ====
r7
24{{{#!syntax python
25import requests
r4
26
27headers = {
28 'Authorization': 'Bearer API_TOKEN',
29}
30
31requests.get('https://theseed.io/api/edit/%EB%8D%94%EC%83%88%EB%93%9C%EC%9C%84%ED%82%A4', headers=headers)
r7
32}}}
r17
33
r4
34===== 결과 =====
35||{
r17
36 "text": "\
37
38[[분류:더새드위키]]\\n[include\(틀:더새드위키)]\\n|\|<-2><table align=right><:><bgcolor=#fedcba>''\'{{\{#black 더새드위키[br]The Sad Wiki}}}''\' |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 개설 일자}}}''\' |\|<#FFFFFF> 2021년 1월 25일[\* \[[더새드위키:가짜규칙]] 문서가 처음 \\"차단회피\\"라는 문서명으로 생성되고 더새드위키:가짜규칙 문서명으로 이동된 날짜 기준] |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 대표색}}}''\' |\|<#FFFFFF> {{\{#!wiki style=\\"display: inline; background: #fedcba; border-radius: 3px; padding: 3px 4px\\"\\n{{\{#000000 ''\'살구색''\' {{\{-2 (#fedcba)}}}}}}}}}[\* 알파위키의 대표색인 #abcdef를 거꾸로 한 것이다.] |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 언어}}}''\' |\|<#FFFFFF> 한국어 |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 위키 엔진}}}''\' |\|<#FFFFFF> the seed |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 라이선스}}}''\' |\|<#FFFFFF> CC BY-SA 4.0 |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 창립자}}}''\' |\|<#FFFFFF> \[[사용자:maca|maca]] |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 소유자}}}''\' |\|<#FFFFFF> \[[사용자:maca|maca]] |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 사무관}}}''\' |\|<#FFFFFF> \[[사용자:maca|maca]] |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 상임 관리자}}}''\' |\|<#FFFFFF> \[[사용자:maca|maca]][\*+], \[[사용자:Blank|Blank]] |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 운영관리관}}}''\' |\|<#FFFFFF> \[[사용자:maca|maca]], \[[사용자:Blank|Blank]] |\|\\n|\|<:><bgcolor=#fedcba>''\'{{\{#black 관리자}}}''\' |\|<#FFFFFF> \[[사용자:chodyyy|chodyyy]] |\|\\n\[목차]\\n= 개요 =\\n>우리 모두가 창조해 나가는 가상의 위키, 더새드위키\\n>-\--\-\\n>더새드위키의 슬로건\\n2021년 1월 25일 더시드위키에서 만들어진 더시드위키 내 가상의 위키이다. -\-더시드위키의 식민지다.-\- 실제로 있는 위키는 아니다.\\n\\n= 트리비아 =\\n * 번역하면 슬픈(sad) 위키라고 한다.\\n * 네이버에 더새드위키라고 검색하면 더샌드위치(...)로 나온다.\\n\[각주]",
r4
39 "exists": true,
40 "token": "Gg1GLvxEks+V3rS30qa2oelNP2VNxrGWC2HLKtBmH21/xoWCHpEdRbZ5liNh7IWI"
41}
42||
43
44==== 편집 제출 ====
r5
45 * 이곳의 token에는 편집 시작에서 JSON으로 받은 token값을 입력하면 된다.
r9
46{{{#!syntax python
47import requests
r12
48import json
r4
49
50headers = {
51 'Content-Type': 'application/json',
52 'Authorization': 'Bearer API_TOKEN',
53}
54
r12
55data = {
r13
56 'text': 'Hello, world', #수정할 내용
57 'log': '', #자동 편집 시 남길 편집 요약
58 'token': received_token #편집 시작 시 받은 token
r12
59}
r4
60
r12
61response = requests.post('https://theseed.io/api/edit/%EB%8D%94%EC%83%88%EB%93%9C%EC%9C%84%ED%82%A4', headers=headers, data=json.dumps(data))
r9
62}}}
r17
63
r4
64===== 결과 =====
r8
65{{{#!syntax json
66{
r4
67 "status":"success",
68 "rev":28
69}
r8
70}}}
r17
71
r4
72==== 역링크 조회 ====
r10
73{{{#!syntax python
74import requests
r4
75
76headers = {
77 'Content-Type': 'application/json',
78 'Authorization': 'Bearer API_TOKEN',
79}
80
81response = requests.get('https://theseed.io/api/backlink/%EB%8D%94%EC%83%88%EB%93%9C%EC%9C%84%ED%82%A4', headers=headers)
r10
82}}}
r17
83
r4
84===== 결과 =====
r11
85{{{#!syntax json
86{
r4
87 "namespaces":[
88 {"namespace":"문서","count":6},
89 {"namespace":"틀","count":5},
90 {"namespace":"분류","count":1}
91 ],
92 "backlinks":[
93 {"document":"Thesadwiki","flags":"redirect"},
94 {"document":"thesadwiki","flags":"redirect"},
95 {"document":"더새드위키:sad스킨","flags":"link"},
96 {"document":"더새드위키:권한 요청","flags":"link"},
97 {"document":"슬픈 위키","flags":"redirect"},
98 {"document":"위키 등급분류","flags":"link"}
99 ],
100 "from":null,
101 "until":null
r11
102}
r19
103}}}
104
r43
105==== 토론 목록 조회 ====
r19
106{{{#!syntax python
107import requests
108headers = {
109 'Content-Type': 'application/json',
110 'Authorization': 'Bearer API_TOKEN',
111}
112response = requests.get('https://theseed.io/api/discuss/%EB%8D%94%EC%8B%9C%EB%93%9C%EC%9C%84%ED%82%A4:%EC%97%B0%EC%8A%B5%EC%9E%A5', headers=headers)
113}}}
114
r43
115===== 결과 =====
r19
116{{{#!syntax json
117[
118 {
119 "slug": "GleamingSqualidRedPies",
120 "topic": "더시드위키 토론 연습장",
121 "updated_date": 1736493937,
122 "status": "normal"
123 }
124]
125}}}