| r50 | ||
|---|---|---|
| r25 (r23으로 되돌림) | 1 | [[분류:the seed/권한]] |
| r17 (r14으로 되돌림) | 2 | [include(틀:the seed/권한)] |
| 3 | [목차] | |
| 4 | == 개요 == | |
| r44 | 5 | [[the seed]] 엔진에 존재하는 권한 중 하나로 말그대로 API에 접근할 수 있는 권한이다. |
| r16 (새 문서) | 6 | |
| r28 | 7 | == 용도 == |
| r50 | 8 | 더시드엔진은 공개 API를 통한 외부 접속 기능을 지원한다. 단, API는 계정 사용자에 한해서 지원되며 API로 접속하려면 계정의 로그인 정보 대신 API Token이라는 256자리의 무작위 숫자+알파벳으로 구성된 개인 식별키가 필요하다.[*발급방법 API Token은 로그인 후 '우측 상단 프로필 메뉴>[[https://theseed.io/member/mypage|내 정보]]' 페이지에서 최하단에 있는 API Token 항목의 발급 버튼을 누르고 계정의 비밀번호를 입력해서 발급받을 수 있다.][*주의 이 토큰은 곧 '''계정의 ID/비밀번호와 똑같은 역할을 하기 때문에 절대로 유출되지 않도록 주의해야 한다.''' API 접속은 2차 인증의 영향을 받지 않기 때문에 토큰값만 있으면 계정의 ID와 비밀번호를 몰라도 언제 어디서든지 계정에 마음대로 접속해서 API로 편집 활동을 할 수 있기 때문이다. 만약, 유출되었다고 판단되면 지체 없이 재발급해서 토큰을 교체해야 한다.][* 참고로 한번 발급받은 API Token키는 반영구적으로 유지되지만, '''최초 발급 때를 제외하고 재확인할 방법이 아예 없어서 따로 저장을 해두어야 한다.''' 토큰값을 잊어버려서 재발급하려면 그냥 최초 발급이랑 똑같이 다시 발급받으면 되는데 이 경우 기존 토큰은 만료되고 새 토큰값이 발급되는 식이다. 발급 횟수에는 딱히 제한이 없다.] 이를 이용해 웹브라우저가 아닌 봇, 터미널 프로그램등을 이용해 엔진에 직접 접근하여 자동 편집 등의 위키 작업이 가능하다. 이 때 API를 사용하기 위해서 필요한 권한이 바로 이 권한이다. |
| r16 (새 문서) | 9 | |
| r49 | 10 | 더시드엔진의 공개 API는 기본적으로 보호 처리가 되어 있어서 이 권한이 없으면 API Token이 있어도 엔진 상에서 API 접근이 차단된다.[* 이 권한이 없는 상태에서 API 접속 시도 시 어떤 작업을 하더라도 접근 권한이 없다는 '403(Forbidden)' 에러를 반환한다.] 따라서 API를 이용한 봇을 운용하려면 반드시 이 권한이 필요하다. |
| r33 | 11 | |
| r42 | 12 | [[나무위키]]와 [[알파위키]]의 경우 봇 계정에게 이 권한을 부여해서 API를 이용한 자동 편집을 할 수 있게 해준다. 다만, 자세한 봇 사용 계획과 규모, 그리고 유사 시 대처 방안 등을 자세하게 담은 사용 계획을 제시 후 승인을 받아야 하며, 이후 봇으로 문제를 일으키거나 하면 권한이 강제로 회수될 수도 있으니 주의. 이 권한으로 API에 접속해서 편집을 하는 경우 '최근 변경'에서 기여자 이름 옆에 ''(API)''라고 표시되어 봇에 의한 편집임을 구분할 수 있는데, 나무위키 한정으로 최근 변경에서 더 이상 봇 편집이 뜨지 않게 커스텀되어 있다.[* 나무위키의 경우 대규모로 봇을 운용하는 사람이 많은데 이 때 여러 봇의 작동이 겹칠 경우 최근 변경이 봇 편집내역으로 도배되어서 사실상 정상적으로 기능하지 못하는 문제가 있어서 이를 방지하기 위한 조치로 보인다. 다른 위키에서도 [[config]] 등으로 설정할 수 있는지는 불명.][* 다만, 실제로는 계속 표시되고는 있으나 최근 변경 페이지 상에서만 숨겨지도록 세팅되어 있는 것으로 보이는데 사이드바와 게시판에 뜨는 최근 변경 배너에서는 봇의 편집이 그대로 노출되기 때문.] |
| r32 | 13 | |
| r33 | 14 | 더시드위키에서는 악용 가능성이 딱히 없는지라 요청 시 무난하게 권한을 부여받아 봇을 테스트해볼 수 있다. 다만, API 활용 계획 등을 명확하게 밝혀야 한다. |
| r28 | 15 | |
| 16 | [[https://doc.theseed.io]]에서 API의 사용 방법을 확인할 수 있다. | |
| 17 | ||
| r27 | 18 | == API 사용 방법 == |
| r17 (r14으로 되돌림) | 19 | 1. 사용자가 요청하면 JSON으로 반환하게 된다. |
| r45 | 20 | 2. API_TOKEN[* 'Authorization': 'Bearer API_TOKEN'의 API_TOKEN[br] 이때, Bearer는 제거하면 안 된다.]에는 [[https://theseed.io/member/mypage|내 정보]]의 API Token 발급 버튼을 눌러 자신의 계정 비밀번호를 입력한 뒤 나오는 token값을 적으면 된다. |
| r17 (r14으로 되돌림) | 21 | |
| 22 | === python === | |
| 23 | ==== 편집 시작 ==== | |
| 24 | {{{#!syntax python | |
| 25 | import requests | |
| 26 | ||
| 27 | headers = { | |
| 28 | 'Authorization': 'Bearer API_TOKEN', | |
| 29 | } | |
| 30 | ||
| 31 | requests.get('https://theseed.io/api/edit/%EB%8D%94%EC%83%88%EB%93%9C%EC%9C%84%ED%82%A4', headers=headers) | |
| 32 | }}} | |
| r21 | 33 | |
| r17 (r14으로 되돌림) | 34 | ===== 결과 ===== |
| 35 | ||{ | |
| r21 | 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\[각주]", | |
| r17 (r14으로 되돌림) | 39 | "exists": true, |
| 40 | "token": "Gg1GLvxEks+V3rS30qa2oelNP2VNxrGWC2HLKtBmH21/xoWCHpEdRbZ5liNh7IWI" | |
| 41 | } | |
| 42 | || | |
| 43 | ||
| 44 | ==== 편집 제출 ==== | |
| 45 | * 이곳의 token에는 편집 시작에서 JSON으로 받은 token값을 입력하면 된다. | |
| 46 | {{{#!syntax python | |
| 47 | import requests | |
| 48 | import json | |
| 49 | ||
| 50 | headers = { | |
| 51 | 'Content-Type': 'application/json', | |
| 52 | 'Authorization': 'Bearer API_TOKEN', | |
| 53 | } | |
| 54 | ||
| 55 | data = { | |
| 56 | 'text': 'Hello, world', #수정할 내용 | |
| 57 | 'log': '', #자동 편집 시 남길 편집 요약 | |
| 58 | 'token': received_token #편집 시작 시 받은 token | |
| 59 | } | |
| 60 | ||
| 61 | response = 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)) | |
| 62 | }}} | |
| r21 | 63 | |
| r17 (r14으로 되돌림) | 64 | ===== 결과 ===== |
| 65 | {{{#!syntax json | |
| 66 | { | |
| 67 | "status":"success", | |
| 68 | "rev":28 | |
| 69 | } | |
| 70 | }}} | |
| r21 | 71 | |
| r17 (r14으로 되돌림) | 72 | ==== 역링크 조회 ==== |
| 73 | {{{#!syntax python | |
| 74 | import requests | |
| 75 | ||
| 76 | headers = { | |
| 77 | 'Content-Type': 'application/json', | |
| 78 | 'Authorization': 'Bearer API_TOKEN', | |
| 79 | } | |
| 80 | ||
| 81 | response = requests.get('https://theseed.io/api/backlink/%EB%8D%94%EC%83%88%EB%93%9C%EC%9C%84%ED%82%A4', headers=headers) | |
| 82 | }}} | |
| r21 | 83 | |
| r17 (r14으로 되돌림) | 84 | ===== 결과 ===== |
| 85 | {{{#!syntax json | |
| 86 | { | |
| 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 | |
| 102 | } | |
| r25 (r23으로 되돌림) | 103 | }}} |
| 104 | ||
| 105 | ===== 토론 목록 조회 ===== | |
| 106 | {{{#!syntax python | |
| 107 | import requests | |
| 108 | headers = { | |
| 109 | 'Content-Type': 'application/json', | |
| 110 | 'Authorization': 'Bearer API_TOKEN', | |
| 111 | } | |
| 112 | response = 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 | ||
| 115 | ====== 결과 ====== | |
| 116 | {{{#!syntax json | |
| 117 | [ | |
| 118 | { | |
| 119 | "slug": "GleamingSqualidRedPies", | |
| 120 | "topic": "더시드위키 토론 연습장", | |
| 121 | "updated_date": 1736493937, | |
| 122 | "status": "normal" | |
| 123 | } | |
| 124 | ] | |
| 125 | }}} |