#1 特許情報取得APIとは
特許情報取得APIとは、日本国特許庁が提供するサービスであり、特許情報を取得するためのRest-APIです。今月(2022年1月)になってからサービスを開始したので、未だ情報の蓄積がなされておりません。よって、ここでは特許情報取得APIについて簡単に説明すると共に、トークンの取得方法について説明します。
特許情報取得API 利用規約 はこちらです。
特許情報取得API 利用の手引き はこちらです。
API情報提供サイト はこちらです。
#2 概略利用方法
##2.1 手続き
特許情報取得APIは、令和4年1月現在にて無料で提供されているものですが、利用規約に同意した上で、特許庁に利用者登録をしなければ使用できません。利用登録方法についても、APIを利用した特許情報の試行提供を開始しますのページに記載されていますので、それに従って特許庁に申し込んでください。
特許庁から存在確認の電話が来て暫くすると、IDとパスワードとトークン取得パスが通知されます。
なお、トークン取得パスは一般には非公開とのことですので、以下にてトークン取得パスは伏せさせていただきます。
##2.2 認証と情報取得
(1)先ず、IDとパスワードをヘッダに設定して、トークン取得パスに対してPOSTを実行すると access_token と refresh_token が取得できます。
access_token は、1時間に亘って有効です。
refresh_token は、access_token を更新するためのトークンであり、8時間に亘って有効です。
(2) refresh_token の有効期間内に refresh_token をヘッダに設定して、トークン取得パスに対してPOSTを実行すると access_token と refresh_token を更新できます。
(3)取得した access_token をヘッダに設定して、各情報取得パスに対してGETを実行すると特許情報が取得できます。
#3 トークン取得について
##3.1 curl.exe による方法
この方法は、弁理士の椿豊先生にご教示いただいたものです。
Windows10のコマンドプロンプトを開いて、以下のコマンドを実行してください。トークンが取得できます。
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "grant_type=password" --data-urlencode "username=ユーザ名" --data-urlencode "password=パスワード(未エンコード)" https://ip-data.jpo.go.jp/(トークン取得パス)
JSON形式のトークンが取得できます。標準出力なのでリダイレクト可能です。
##3.2 VBAによる方法
Excelのワークシートを開いて、マクロボタンをクリックしたのち、「作成」ボタンをクリックして Visual Basic for Application エディタを開くと、下記コードをコピペしてください
そして、トークン取得パスとユーザ名とパスワードを設定して test_auth_token() を実行すると、メッセージボックスに、Httpレスポンスが表示され、その後に取得したトークンが表示されます。
Option Explicit
'----------------------------------------------------------------------
' 機能:特許情報取得API? 認証手続
'----------------------------------------------------------------------
Sub test_auth_token()
Dim objweb As Object
Set objweb = CreateObject("MSXML2.ServerXMLHTTP")
Call objweb.Open("POST", "https://ip-data.jpo.go.jp/(トークン取得パス)", False)
Call objweb.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
Dim szBody As String
szBody = "grant_type=password"
szBody = szBody & "&username=" & encodeUrlUtf8("ユーザ名(未エンコード)")
szBody = szBody & "&password=" & encodeUrlUtf8("パスワード(未エンコード)")
objweb.Send (szBody)
MsgBox (objweb.Status)
MsgBox (objweb.responseText)
End Sub
'----------------------------------------------------------------------
' 文字列をURLエンコード
'----------------------------------------------------------------------
Public Function encodeUrlUtf8(ByRef strSource As String) As String
Dim objSC As Object
Set objSC = CreateObject("ScriptControl")
objSC.Language = "Jscript"
encodeUrlUtf8 = objSC.CodeObject.encodeURIComponent(strSource)
Set objSC = Nothing
End Function
正常に設定できたならば、先ずhttpステータス200が表示されます。
次にアクセストークンを含んだJSONが表示されます。但し文字列が長いので途中までです。
##3.3 Talend API による方法
Talend APIとは、Rest-API をテストするためのクローム拡張です。もちろん無料です。
Talend APIを使って access_token を取得可能です。
(1)METHOD として POST を選択します。
(2)HOST に https://ip-data.jpo.go.jp/(トークン取得パス) を設定します。
(3)Headers に Content-Type: application/x-www-form-urlencoded を設定します。
(4)Body に grant_type=password&username=ユーザ名(エンコード済)&password=パスワード(エンコード済) を設定します。
(5)Send ボタンをクリックして、Response 200 が返されればOKです。以下がレスポンスペインです。
なお、URLエンコードされたユーザ名とパスワードを得るには、例えばURLエンコード・デコードのページを使ってください。
手作業で半角文字列をURLエンコードする場合には、例えば「a~z」「A~Z」「0~9」「'」「.」「-」「*」「)」「(」「_」はそのまま変更せず、それ以外の文字を %に続き、文字コードを16進数2桁で記載してください。
#4 Talend APIによる特許情報取得
なお、取得した access_token を使って Talend API により 特許情報を取得する方法を以下に示します。
(1)METHOD として GET を選択します。
(2)HOST に 特許情報取得APIを設定します。
ここでは経過情報取得API:https://ip-data.jpo.go.jp/api/patent/v1/app_progress/(出願番号)
を設定しています。
(3)Headers に Authorization: Bearer (アクセストークン) を設定します。
(4)Send ボタンをクリックして、Response 200 が返されればOKです。以下がレスポンスペインです。
Response のBody に特許経過情報が取得されています。