| r42 | ||
|---|---|---|
| r25 (r23으로 되돌림) | 1 | [[분류:the seed/권한]] |
| r17 (r14으로 되돌림) | 2 | [include(틀:the seed/권한)] |
| 3 | [목차] | |
| 4 | == 개요 == | |
| r26 | 5 | [[the seed]] 엔진에서 존재하는 권한 중 하나이다. |
| r16 (새 문서) | 6 | |
| r28 | 7 | == 용도 == |
| r41 | 8 | 더시드엔진은 공개 API를 통한 외부 접속 기능을 지원한다. 단, API는 계정 사용자에 한해서 지원되며 API로 접속하려면 계정의 로그인 정보 대신 API Token이라는 256자리의 무작위 숫자+알파벳으로 구성된 개인 식별키가 필요하다.[*발급방법 API Token은 로그인 후 '우측 상단 프로필 메뉴>[[https://theseed.io/member/mypage|내 정보]]' 페이지에서 최하단에 있는 API Token 항목의 발급 버튼을 누르고 계정의 비밀번호를 입력해서 발급받을 수 있다.][*주의 이 토큰은 곧 '''계정의 ID/비밀번호와 똑같은 역할을 하기 때문에 절대로 유출되지 않도록 주의해야 한다.''' 토큰값만 있으면 계정의 ID와 비밀번호를 몰라도 언제 어디서든지 계정에 마음대로 접속해서 API로 편집 활동을 할 수 있기 때문이다. 만약, 유출되었다고 판단되면 지체 없이 재발급해서 토큰을 교체해야 한다.][* 참고로 한번 발급받은 API Token키는 반영구적으로 유지되지만, '''최초 발급 때를 제외하고 재확인할 방법이 아예 없어서 따로 저장을 해두어야 한다.''' 토큰값을 잊어버려서 재발급하려면 그냥 최초 발급이랑 똑같이 다시 발급받으면 되는데 이 경우 기존 토큰은 만료되고 새 토큰값이 발급되는 식이다. 발급 횟수에는 딱히 제한이 없다.] 이를 이용해 웹브라우저가 아닌 봇, 터미널 프로그램등을 이용해 엔진에 직접 접근하여 자동 편집 등의 위키 작업이 가능하다. 이 때 API를 사용하기 위해서 필요한 권한이 바로 이 권한이다. |
| r16 (새 문서) | 9 | |
| r33 | 10 | 더시드 엔진에서 API는 기본적으로 보호 처리가 되어 있어서 이 권한이 없으면 API Token이 있어도 엔진 상에서 API 접근이 차단된다.[* 이 권한이 없는 상태에서 API 접속 시도 시 어떤 작업을 하더라도 접근 권한이 없다는 '403(Forbidden)' 에러를 반환한다.] 따라서 API를 이용한 봇을 운용하려면 반드시 이 권한이 필요하다. |
| 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으로 반환하게 된다. |
| r22 | 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 | }}} |