https://api.invox.jp/api/public/
https://api.invox.jp/oauth2/authorize/
リクエストメソッド: GET
認可コードを取得するために使用します。(認可コードはトークンの取得に必要です)
名前 | 内容 |
---|---|
response_type | レスポンスタイプ。code を指定します。 |
client_id | クライアントID。弊社から発行いたします。 |
redirect_uri | コールバックURI。認可レスポンスをリダイレクトするURLです。 |
state | クライアントが初期リクエストに追加する OPAQUE 値。認可サーバはクライアントにリダイレクトして戻るときに、この値を含めます。 |
scope | 認可される権限。利用されるAPIによって異なります。 |
GET https://api.invox.jp/oauth2/authorize/?
response_type=code&
client_id=CLIENT_ID&
redirect_uri=https://YOUR_APP/REDIRECT_URI&
state=STATE&
scope=read write
HTTP/1.1 302 Found
Location: https://YOUR_APP/REDIRECT_URI?code=AUTHORIZATION_CODE&state=STATE
※認可コード(AUTHORIZATION_CODE)の有効期限は1分間であるため、取得後、1分以内にトークンを取得する必要があります。
トークンの取得
https://api.invox.jp/oauth2/token/
リクエストメソッド: POST
トークンの初回取得に使用します。
ヘッダー
パラメータ
名前 | 内容 |
---|---|
grant_type | 付与タイプ。authorization_code を指定します。 |
client_id | クライアントID |
redirect_uri | コールバックURL。認可エンドポイントで使用された redirect_uri と同じ文字列を指定します。 |
code | 認可コード |
リクエストイメージ
POST https://api.invox.jp/oauth2/token >
Content-Type='application/x-www-form-urlencoded'&
Authorization=Basic ENCODED_CLIENT_ID_AND_SECRET
grant_type=authorization_code&
client_id=CLIENT_ID&
code=AUTHORIZATION_CODE&
redirect_uri=https://YOUR_APP/REDIRECT_URI
レスポンス内容
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "ACCESS_TOKEN",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "REFRESH_TOKEN
}
※アクセストークンの有効期限はexpires_inで返却された値(秒)です。 リフレッシュトークン(更新トークン)の有効期限はありません。
トークンのリフレッシュ
https://api.invox.jp/oauth2/token/
リクエストメソッド: POST
トークンのリフレッシュ(有効なアクセストークンの再取得)に使用します。
ヘッダー
Authorization
Basic Base64Encode(CLIENT_ID:CLIENT_SECRET)
クライアントIDとクライアントシークレットをコロン(:)でつないだ文字列をBase64でエンコードした値を、ベーシックHTTP認証を介して認証ヘッダー(Authorization)に渡します。
Content-Type
application/x-www-form-urlencoded
パラメータ
名前 | 内容 |
---|---|
grant_type | 付与タイプ。refresh_token を指定します。 |
client_id | クライアントID |
refresh_token | 更新トークン |
リクエストイメージ
POST https://api.invox.jp/oauth2/token >
Content-Type='application/x-www-form-urlencoded'
Authorization=Basic ENCODED_CLIENT_ID_AND_SECRET
grant_type=refresh_token&
client_id=CLIENT_ID&
refresh_token=REFRESH_TOKEN
レスポンス内容
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "ACCESS_TOKEN",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "REFRESH_TOKEN"
}
※リフレッシュされたアクセストークンの有効期限はexpires_inで返却された値(秒)です。 リフレッシュトークン(更新トークン)の有効期限はありません。
トークンの取り消し
https://api.invox.jp/oauth2/revoke_token/
リクエストメソッド: POST
不要となったアクセストークンの取り消しに使用します。
ヘッダー
パラメータ
名前 | 内容 |
---|---|
token | アクセストークン |
client_id | クライアントID |
client_secret | クライアントシークレット |
リクエストイメージ
POST https://api.invox.jp/oauth2/revoke_token >
Content-Type='application/x-www-form-urlencoded'
token=ACCESS_TOKEN
client_id=CLIENT_ID
client_secret=CLIENT_SECRET
レスポンス内容
HTTP/1.1 200 OK
プロフェッショナルプランによるご契約が必要です。
設定 > サービス > サービス・プラン設定
よりご確認ください。
invox電子帳簿保存にログイン可能なユーザーを登録してください。該当ユーザーによりアップロードされた書類として扱われます(接続用ユーザーを削除するとAPI接続ができなくなります)。
設定 > スタッフ
より設定・確認可能です。
API接続時に「企業ID」が必要となります。
設定 > 会社
より確認可能です(システムが自動採番します。任意の値に変更はできません)。
https://api.invox.jp/oauth2/authorize/?response_type={response_type}&client_id={クライアントID}&redirect_uri={リダイレクトURI}&scope={scope}&state={state}
リダイレクト先に遷移した後、アドレスバーに表示された内容を保存してください(code=以降の文字列が認可コードです)。
認可コードは1分程度で失効しますので、すぐに「2.トークンの取得」を実施してください。
失効した場合は、再度1-1. からやり直して認可コードを取得してください。
curlコマンドの実行サンプル
curl -X POST -H "Authorization: Basic {クライアントIDとクライアントシークレットをコロン(:)でつないだ文字列をBase64でエンコードした値}"
-H "Content-Type: application/x-www-form-urlencoded" "https://api.invox.jp/oauth2/token/"
-d "grant_type=authorization_code"
-d "client_id={クライアントID}"
-d "redirect_uri={リダイレクトURI}"
-d "code={1.で取得した認可コード}"
実行例
応答例(「アクセストークン」と「リフレッシュトークン」が返されます)
curlコマンドの実行サンプル
curl -X POST -H "Authorization: Basic {クライアントIDとクライアントシークレットをコロン(:)でつないだ文字列をBase64でエンコードした値}"
-H "Content-Type: application/x-www-form-urlencoded" "https://api.invox.jp/oauth2/token/"
-d "grant_type=refresh_token"
-d "client_id={クライアントID}"
-d "refresh_token={リフレッシュトークン}"
以下、python3 による簡易スクリプト例です。別途「sample.pdf」ファイルを用意します。
import base64
import json
import requests
def main():
headers = {
"Authorization: Bearer {アクセストークン}",
"content-type: application/json",
}
url = "https://api.invox.jp/api/public/e_storage"
file_content = open("sample.pdf", "rb").read()
data = {
"invox_company_code": "{企業ID}",
"e_storage": {
"doc_type": "見積書(受領)",
"entry_method": "user",
"file_name": "sample.pdf",
"file_content": base64.b64encode(file_content).decode("utf-8"),
"partner_name": "partner_name",
"transaction_date": "2023/07/01",
"transaction_amount": "123456",
"currency_code": "JPY",
"staff_name": "staff",
}
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if __name__ == "__main__":
main()
レスポンス例:書類IDと書類URLが返却されます
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "DOCUMENT_ID",
"url": "DOCUMENT_URL",
}
invox電子帳簿保存にログオンして書類が登録されていることを確認してください。
検索条件の「取込経路」が「API」で検索される書類がAPIによって登録されたものになります。
Q. invox APIのOAth2.0の利用方法について教えてください
Q. コールバックURI(redirect_uri)はどのように指定すればよいですか?
Q. トークンの有効期限はどのくらいですか?
Q. トークンの有効期限が切れた場合はどうすればよいですか?
Q. invox電子帳簿保存 書類取込を利用するにはどのようなプランが必要ですか?
Q. invox電子帳簿保存 書類取込で複数の書類を1度に取り込みすることはできますか?
Q. invox電子帳簿保存 書類取込で取込可能なファイルの種類に制限はありますか?
Q. invox電子帳簿保存 書類取込で取込可能なファイルサイズの制限はありますか?
Q. invox電子帳簿保存に取込済みの書類データを取得するAPIはありますか?
invox_company_code required | string 企業ID | ||||||||||||||||||||||||||||||||||||||||||||||||||
file required | binary 請求書ファイル(ファイル形式:pdf,jpeg,png) | ||||||||||||||||||||||||||||||||||||||||||||||||||
required | object | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
{- "invoice_id": "string"
}
API経由でワークフローの申請を行う場合、以下の制限があります。
・承認パスの全てのステップがスキップされる場合、申請はできません。
invox_company_code required | string 企業ID |
invoice_id required | string 請求書ID |
appr_path_id | number 承認パスID |
staff_code required | string 申請スタッフコード |
{- "invox_company_code": "string",
- "invoice_id": "string",
- "appr_path_id": 0,
- "staff_code": "string"
}
{ }
以下の場合には、指定された値は無視されて、取り込み処理が継続されます。
必須項目以外は、不適切な値の場合(型の不一致、フォーマットが不適切など)
マスタ参照を行う項目(対象は以下項目)は、一意にデータを特定できない場合
対象項目:取引コード、取引名、通貨コード、部門コード、部門名、プロジェクトコード、プロジェクト名、担当者コード、担当者名、タグ名、拡張項目(汎用マスタの場合)
invox_company_code required | string 企業ID | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
{- "invox_company_code": "string",
- "e_storage": {
- "doc_type": "string",
- "entry_method": "user",
- "file_name": "string",
- "file_content": "string",
- "transaction_code": "string",
- "transaction_name": "string",
- "partner_name": "string",
- "corporate_tax_no": "string",
- "transaction_amount": "string",
- "currency_code": "JPY",
- "transaction_date": "string",
- "department_code": "string",
- "department_name": "string",
- "project_code": "string",
- "project_name": "string",
- "staff_code": "string",
- "staff_name": "string",
- "tag": "string",
- "tags": [
- "string"
], - "voucher_number": "string",
- "extension_param1": "string",
- "extension_param2": "string",
- "extension_param3": "string",
- "extension_param4": "string",
- "extension_param5": "string",
- "extension_param6": "string",
- "extension_param7": "string",
- "extension_param8": "string",
- "extension_param9": "string",
- "extension_param10": "string"
}
}
{- "id": "string",
- "url": "string"
}