Skip to content

nanato12/qiita-sdk-python

Repository files navigation

qiita-sdk-python

This is the Qiita API v2 library.

Requirements

Python 3.8+

Installation

$ pip install qiita-sdk

Getting Started

from os import environ

from qiita import Qiita
from qiita.v2.models.create_item_request import CreateItemRequest
from qiita.v2.models.item_tag import ItemTag

# Instantiate the Qiita class by passing the API access token.
q = Qiita(access_token=environ["QIITA_API_ACCESS_TOKEN"])

# Create a new Qiita post (item) by calling the `create_item_with_http_info` method.
# This method not only creates the post but also returns detailed HTTP response
# information, which includes both the response data and status.
res = q.create_item_with_http_info(
    CreateItemRequest(
        body="aaa",
        tags=[ItemTag(name="python", versions=[])],
        title="title",
        private=True,
        tweet=False,
        slide=True,
    )
)
print(f"{res.data=}")
# res.data=Item(rendered_body='<p data-sourcepos="1:1-1:3">aaa</p>\n', body='aaa\n', coediting=False, comments_count=0, created_at='2024-10-06T03:11:04+09:00', group=None, id='e65b64d0e83e6f281a75', likes_count=0, private=True, reactions_count=0, stocks_count=0, tags=[ItemTag(name='Python', versions=[])], title='title', updated_at='2024-10-06T03:11:04+09:00', url='https://qiita.com/nanato12/private/e65b64d0e83e6f281a75', user=User(description='えんじにあ', facebook_id='', followees_count=10, followers_count=340, github_login_name='nanato12', id='nanato12', items_count=10, linkedin_id='', location='Tokyo', name='ななといつ', organization='', permanent_id=437282, profile_image_url='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437282/profile-images/1701305446', team_only=False, twitter_screen_name='nanato12_dev', website_url=''), page_views_count=None, team_membership=None, slide=True, organization_url_name=None)

概要

このドキュメントではQiita API v2の仕様について説明します。

リクエスト

APIとの全ての通信にはHTTPSプロトコルを利用します。アクセス先のホストには、Qiitaのデータを利用する場合には qiita.com を利用し、Qiita Teamのデータを利用する場合には *.qiita.com を利用します ( * には所属しているTeamのIDが入ります)。

パラメータ

API v2へのリクエストには、GET、POST、PUT、PATCH、DELETEの5種類のHTTPメソッドを利用します。多くのAPIへのリクエストにはパラメータを含められますが、GETリクエストにパラメータを含める場合にはURIクエリを利用し、それ以外の場合にはリクエストボディを利用します。パラメータには、ページネーション用途など任意で渡すものと、投稿時の本文など必須のものが存在します。APIドキュメントには、各APIごとに送信可能なパラメータが記載されています。

利用制限

認証している状態ではユーザーごとに1時間に1000回まで、認証していない状態ではIPアドレスごとに1時間に60回までリクエストを受け付けます。

シングルサインオンを利用中のチームについて

シングルサインオンによる認証のみを許可しているQiita Teamのチームでは、セキュリティ上の理由から、チーム別アクセストークンでのみAPIを利用したアクセスが可能です。

ステータスコード

200、201、204、400、401、403、404、500の8種類のステータスコードを利用します。GETまたはPATCHリクエストに対しては200を、POSTリクエストに対しては201を、PUTまたはDELETEリクエストに対しては204を返します。但し、エラーが起きた場合にはその他のステータスコードの中から適切なものを返します。

データ形式

APIとのデータの送受信にはJSONを利用します。JSONをリクエストボディに含める場合、リクエストのContent-Typeヘッダにapplication/jsonを指定してください。但し、GETリクエストにバラメータを含める場合にはURIクエリを利用します。また、PUTリクエストまたはDELETEリクエストに対してはレスポンスボディが返却されません。日時を表現する場合には、ISO 8601 形式の文字列を利用します。

GET /api/v2/items?page=1&per_page=20 HTTP/1.1

エラーレスポンス

エラーが発生した場合、エラーを表現するオブジェクトを含んだエラーレスポンスが返却されます。このオブジェクトには、エラーの内容を説明するmessageプロパティと、エラーの種類を表すtypeプロパティで構成されます。typeプロパティはエラーの種類ごとに一意な文字列で、^[a-z0-9_]+$ というパターンで表現できます。

{
  \"message\": \"Not found\",
  \"type\": \"not_found\"
}

ページネーション

一部の配列を返すAPIでは、全ての要素を一度に返すようにはなっておらず、代わりにページを指定できるようになっています。これらのAPIには、1から始まるページ番号を表すpageパラメータと、1ページあたりに含まれる要素数を表すper_pageパラメータを指定することができます。pageの初期値は1、pageの最大値は100に設定されています。また、per_pageの初期値は20、per_pageの最大値は100に設定されています。

ページを指定できるAPIでは、Linkヘッダ を含んだレスポンスを返します。Linkヘッダには、最初のページと最後のページへのリンクに加え、存在する場合には次のページと前のページへのリンクが含まれます。個々のリンクにはそれぞれ、first、last、next、prevという値を含んだrel属性が紐付けられます。

Link: <https://qiita.com/api/v2/users?page=1>; rel=\"first\",
      <https://qiita.com/api/v2/users?page=1>; rel=\"prev\",
      <https://qiita.com/api/v2/users?page=3>; rel=\"next\",
      <https://qiita.com/api/v2/users?page=6>; rel=\"last\"

また、ページを指定できるAPIでは、要素の合計数が Total-Count レスポンスヘッダに含まれます。

Total-Count: 6

JSON Schema

Qiita API v2では、APIのインターフェースを定義したJSON-Schemaを提供しています。このスキーマでは、APIでどのようなリソースが提供されているか、それらはどのようなプロパティを持っているか、それらがどのように表現されるか、及びどのような操作が提供されているかといった事柄が定義されています。スキーマには、次のURLでアクセスできます。

Documentation for API Endpoints

All URIs are relative to https://qiita.com

Class Method HTTP request Description
TeamApi add_group_members POST /api/v2/groups/{url_name}/members Add group members
TeamApi create_comment POST /api/v2/items/{item_id}/comments Create comment
TeamApi create_group POST /api/v2/groups Create group
TeamApi create_imported_comment POST /api/v2/items/{item_id}/imported_comments Create imported comment
TeamApi create_item POST /api/v2/items Create item
TeamApi create_item_stock PUT /api/v2/items/{item_id}/stock Create item stock
TeamApi delete_comment DELETE /api/v2/comments/{comment_id} Delete comment
TeamApi delete_group DELETE /api/v2/groups/{url_name} Delete group
TeamApi delete_group_members DELETE /api/v2/groups/{url_name}/members Delete group members
TeamApi delete_item DELETE /api/v2/items/{item_id} Get item stockers
TeamApi delete_item_stock DELETE /api/v2/items/{item_id}/stock Delete item stock
TeamApi get_authenticated_user GET /api/v2/authenticated_user Get authenticated user
TeamApi get_authenticated_user_items GET /api/v2/authenticated_user/items Get authenticated user items
TeamApi get_comment GET /api/v2/comments/{comment_id} Get comment
TeamApi get_group GET /api/v2/groups/{url_name} Get group
TeamApi get_group_member GET /api/v2/groups/{url_name}/members/{user_id} Get group member
TeamApi get_group_members GET /api/v2/groups/{url_name}/members Get group members
TeamApi get_groups GET /api/v2/groups Get groups
TeamApi get_item GET /api/v2/items/{item_id} Get item
TeamApi get_item_comments GET /api/v2/items/{item_id}/comments Get item comments
TeamApi get_item_stockers GET /api/v2/items/{item_id}/stockers Get item stockers
TeamApi get_items GET /api/v2/items Get items
TeamApi get_oauth_team_authorize GET /api/v2/oauth/team_authorize Get OAuth team authorize
TeamApi is_item_stock GET /api/v2/items/{item_id}/stock Is item stock
TeamApi update_comment PATCH /api/v2/comments/{comment_id} Update comment
TeamApi update_group PATCH /api/v2/groups/{url_name} Update group
TeamApi update_item PATCH /api/v2/items/{item_id} Update item
UserApi create_comment POST /api/v2/items/{item_id}/comments Create comment
UserApi create_item POST /api/v2/items Create item
UserApi create_item_like PUT /api/v2/items/{item_id}/like Create item like
UserApi create_item_stock PUT /api/v2/items/{item_id}/stock Create item stock
UserApi delete_api_v2_access_tokens_access_token DELETE /api/v2/access_tokens/{access_token} Delete access token
UserApi delete_comment DELETE /api/v2/comments/{comment_id} Delete comment
UserApi delete_item DELETE /api/v2/items/{item_id} Get item stockers
UserApi delete_item_like DELETE /api/v2/items/{item_id}/like Delete item like
UserApi delete_item_stock DELETE /api/v2/items/{item_id}/stock Delete item stock
UserApi follow PUT /api/v2/users/{user_id}/following Follow
UserApi get_authenticated_user GET /api/v2/authenticated_user Get authenticated user
UserApi get_authenticated_user_items GET /api/v2/authenticated_user/items Get authenticated user items
UserApi get_comment GET /api/v2/comments/{comment_id} Get comment
UserApi get_item GET /api/v2/items/{item_id} Get item
UserApi get_item_comments GET /api/v2/items/{item_id}/comments Get item comments
UserApi get_item_likes GET /api/v2/items/{item_id}/likes Get item likes
UserApi get_item_stockers GET /api/v2/items/{item_id}/stockers Get item stockers
UserApi get_items GET /api/v2/items Get items
UserApi get_oauth_authorize GET /api/v2/oauth/authorize Get OAuth authorize
UserApi get_user GET /api/v2/users/{user_id} Get user
UserApi get_user_followees GET /api/v2/users/{user_id}/followees Get user followees
UserApi get_user_followers GET /api/v2/users/{user_id}/followers Get user followers
UserApi get_users GET /api/v2/users Get users
UserApi is_item_like GET /api/v2/items/{item_id}/like Is item like
UserApi is_item_stock GET /api/v2/items/{item_id}/stock Is item stock
UserApi is_user_following GET /api/v2/users/{user_id}/following Is user following
UserApi issue_access_tokens POST /api/v2/access_tokens Issue access token
UserApi unfollow DELETE /api/v2/users/{user_id}/following Unfollow
UserApi update_comment PATCH /api/v2/comments/{comment_id} Update comment
UserApi update_item PATCH /api/v2/items/{item_id} Update item

Documentation For Models

About

Qiita API v2 SDK for Python

Resources

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •