OPaaS.io API Document

本仕様書には、2020年に向けた社会全体のICT化推進に関する懇談会と、総務省 都市サービス高度化の実現に向けた共通クラウド基盤構築に関する実証に係る調査請負における成果物を含みます。

目次

更新履歴

日付 内容
2019年1月22日 一般公開

概要

おもてなしクラウド (OPaaS.io) は、利用者が登録したパーソナルデータを、利用者自身がどの情報をどのサービスへ提供するかをきめ細かくコントロールすることができるサービスである。 本ドキュメントでは、その機能を利用するためのAPIを説明している。なお公開しているAPIは、利便性向上等の観点から今後変更する可能性がある。

ここでは、APIの概略と、本ドキュメントで利用している用語を紹介する。

提供するAPIのドメイン

APIのドメインについて

提供するAPIは下記の2つのドメインで提供される。

ドメイン API概要
accounts.opaas.io 主に、ユーザエージェント側で実行するAPI(oauth2/tokenを除く)
api.opaas.io 主にRP (OpenID Connect1.0 におけるRelying Party)側で実行するAPI。使用する際には、リクエストパラメータにoauth2/tokenで得たアクセストークンが必要になる。

提供API一覧

一般のアプリ開発者向け

APIの先頭の https:// は省略する

No Method API API概要
1 GET accounts.opaas.io/oauth2/authorize ・認証要求受付API。認証プロトコルはOpenID Connectを利用。
2 GET accounts.opaas.io/oauth2/signup ・ユーザ登録要求受付API。登録後に accounts.opaas.io/oauth2/authorize を呼び出す。
3 GET accounts.opaas.io/oauth2/resetpassword ・ユーザのパスワード変更要求受付API。変更後に oauth2/authorize を呼び出す。
4 GET accounts.opaas.io/oauth2/logout ・ログアウト受付API。ログアウト実行後に redirect_uri で指定したアドレスにリダイレクトする。
5 POST accounts.opaas.io/oauth2/token ・トークン要求受付API。認証要求受付の結果をトークンとして発行する。OpenID Connectの規約に則る。
6 GET api.opaas.io/api/v1/users/auth/qr ・ユーザーの認証用QRコード取得API。
7 GET api.opaas.io/api/v1/user_attributes ・パーソナルデータ取得API。
8 GET api.opaas.io/api/v1/services ・サービスの一覧取得API。
9 GET api.opaas.io/api/v1/services/{id} ・サービスの情報取得API。
10 GET api.opaas.io/api/v1/rules ・データ形式変換ルール一覧取得API。(※今後提供予定)
11 GET accounts.opaas.io/.well-known/openid-configuration ・OpenID Provider Metadata の取得
12 GET accounts.opaas.io/oauth2/jwks ・id_token の公開鍵の情報の取得

一部の開発者向け

APIのドメインはすべて api.opaas.io なので先頭の https://api.opaas.io は省略する。

No Method API API概要
1 PUT or PATCH /api/v1/user_attributes ・パーソナルデータ更新API。
2 PUT or PATCH /api/v1/user_attributes/image ・パーソナルデータ passport_image 更新API。
3 DELETE /api/v1/user_attributes/image ・パーソナルデータ passport_image 削除API。
4 GET /api/v1/user_attributes/history ・パーソナルデータ要求・変更・提供履歴取得API。
5 GET /api/v1/service_domains ・サービスドメインの一覧取得API。
6 GET /api/v1/service_domains/{id} ・サービスドメインの取得API。
7 GET /api/v1/service_groups ・サービスグループの一覧取得API。
8 GET /api/v1/service_groups/{id} ・サービスグループの取得API。
9 POST /api/v1/users ・ユーザー登録API。
10 GET /api/v1/users/auth ・ユーザー認証方式取得API。
11 PUT or PATCH /api/v1/users/auth ・ユーザー認証方式変更API。
12 GET /api/v1/users/permissions ・サービスへのパーソナルデータ提供ポリシーを取得する。
13 PUT or PATCH /api/v1/users/permissions ・サービスへのパーソナルデータ提供ポリシーを書き換える。

認証フロー

1. ユーザー名・パスワードを利用し、OPaaS.ioの提供する画面を利用する場合

以下のフローを参考にしてください。

認証フロー

auth_type に IDPW(パスワード認証)を指定した場合の認証の流れは以下の通りである。ただし、リクエストパラメータに正しい(エラーとならない)データを指定して実行したものとする。

本APIの処理が成功した場合は、下記の手順 7 で 認可code を発行するが、どのような流れ(途中でユーザ登録や、パスワードのリセットの処理が間に挟まった場合なども含む)で 7 に至った場合でも、本APIを最初に実行した際に与えたリクエストパラメータに対応する 認可code が発行される(手順6が実行された場合は、そこでユーザが許諾したパーソナルデータのみ許諾する)。

  1. API実行時にユーザがログインしていない場合は2へ。ログインしている場合は 5 へ。
  2. ログイン画面が表示される。
  3. アカウント登録手続きの流れ
    1. アカウント登録画面が表示される。メールアドレスを入力すると、そのメールアドレスにメールが送られ、メールが送られたことを表す画面が表示される。
      アカウント登録画面は後述の GET accounts.opaas.io/signup によって直接表示することができる。
    2. 受信したメール内のリンクをクリックすることで、パスワード設定画面が表示される。
    3. パスワードを設定するとアカウントの登録完了画面が表示され、その中のログインボタンをクリックすると 2 へ戻り、ログイン画面が表示される。また、ユーザにはアカウント登録完了のメールが送られる。
  4. パスワード変更手続きの流れ
    1. パスワードリセット画面が表示される。メールアドレスを入力すると、そのメールアドレスにメールが送られ、メールが送られたことを表す画面が表示される。
      パスワードリセット画面は後述の GET accounts.opaas.io/resetpassword によって直接表示することができる。
    2. 受信したメール内のリンクをクリックすることで、パスワード変更画面が表示される。
    3. パスワードを設定するとパスワードの変更完了画面が表示され、その中のログインボタンをクリックすると 2 へ戻り、ログイン画面が表示される。また、ユーザにはパスワード変更完了のメールが送られる
  5. ユーザがサービスに対して許諾していないパーソナルデータがある場合は 6 へ。なければ 7 へ。
  6. パーソナルデータ許諾画面が表示される。許諾するパーソナルデータを選択すると 7 へ。
  7. リクエストパラメータ redirect_uri で指定したアドレスに、URIクエリとしてユーザが許諾したパーソナルデータが入ったアクセストークンを発行するための 認可code を加えたアドレスにリダイレクトされる。

2. ICカードを利用して認証する場合

手順1.

サイネージ利用などのブラウザを利用しない場合には、直接おもてなしクラウドの認証要求受付APIを呼び出してください。認証要求受付API(GET accounts.opaas.io/oauth2/authorize)は以下のパラメータを設定してアクセスします。

auth_type:IDM authori_screen:OFF ※ICカード認証を実施かつ許諾画面は表示しないとした場合です。

手順2:

HTTPステータスコードで302でLocationヘッダに認可コード付きの認証後遷移先URLが設定されます。

--------------------------------------------- HTTP/1.1 302 Found Location: https://serviceA.co.jp/home.jsp?state=statevalue&code=WZHm7cukADLdhkmz ★★ Locationの「https://serviceA.co.jp/home.jsp」部分がredirect_uriです。★★ ★★ redirect_uriのクエリ「code」に設定された値が認可コードです。★★ Content-Type: application/x-www-form-urlencoded;charset=UTF-8 Content-Length: 0 Keep-Alive: timeout=5, max=99 Connection: Keep-Alive ---------------------------------------------

手順3:

手順2で発行された認可コード利用してトークン要求受付APIへアクセストークンの取得要求を行い、取得したアクセストークンを用いて、パーソナルデータ取得APIへのアクセスを行って下さい。

3. QRコードを利用して認証する場合

(利用者側)手順1.

あらかじめ、GET accounts.opaas.io/oauth2/authorize、POST accounts.opaas.io/oauth2/token を実行して、ユーザの認証済のアクセストークンを発行しておいてください。QRコードを利用した認証では、このアクセストークンを使って、一度だけ有効なユーザを認証するQRコードを発行します。

(利用者側)手順2.

手順1で得たアクセストークンを使って、GET api.opaas.io/api/v1/users/auth/qr を実行して下さい。ユーザの認証用トークンが入ったQRコードが生成されます。

下記の例ではQRコードの画像が入ったファイルが生成されます。

https://api.opaas.io/api/v1/users/auth/qr?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

(サービス側)手順3:

QRコード内には、qrtoken=xxxxxxxxx&state=yyyyyyyy のようなデータが格納されているので、これらと auth_type=QR をリクエストパラメータとし、他のリクエストパラメータを設定して GET accounts.opaas.io/auth/authorize を実行して下さい。

QRコードを利用した認証では、パーソナルデータの許諾画面は表示されません(aurhori_screenの設定は必ずOFFとみなされる)。リクエストパラメータ scope に設定されたパーソナルデータのうちユーザがパーソナルデータ許可ポリシーで"許諾"の設定を行っているもののみ提供します。

QRコード内のユーザを認証するトークンは一度使うか、発行後15分経過すると失効します。失効したトークンをリクエストパラメータとして GET accounts.opaas.io/auth/authorize を実行するとエラーとなります。

(サービス側)手順4:

HTTPステータスコードで302でLocationヘッダに認可コード付きの認証後遷移先URLが設定されます。

--------------------------------------------- HTTP/1.1 302 Found Location: https://serviceA.co.jp/home.jsp?state=statevalue&code=WZHm7cukADLdhkmz ★★ Locationの「https://serviceA.co.jp/home.jsp」部分がredirect_uriです。★★ ★★ redirect_uriのクエリ「code」に設定された値が認可コードです。★★ Content-Type: application/x-www-form-urlencoded;charset=UTF-8 Content-Length: 0 Keep-Alive: timeout=5, max=99 Connection: Keep-Alive ---------------------------------------------

(サービス側)手順5:

手順4で発行された認可コード利用してトークン要求受付APIへアクセストークンの取得要求を行い、取得したアクセストークンを用いて、パーソナルデータ取得APIへのアクセスを行って下さい。

各APIの詳細

認証要求受付API (GET accounts.opaas.io/oauth2/authorize )

認証要求の受付を行い、その後http仕様に則った認証フロー後に認証応答を返却する。認証プロトコルはOpenID Connectを利用。

認証要求の受付の結果、ユーザのログインが必要になった場合はログイン画面のHTMLを返し、そのページからのログインが成功した場合に認証受付を続行する。

認証要求の受付の結果、ユーザからの許諾が必要なパーソナルデータが存在する場合は、許諾画面のHTMLを返し、scopeのうち、そのページでユーザが許諾したパーソナルデータのみを許諾する認可codeを提供する。本APIはユーザからの許諾が必要であるかどうかを下記の手順で確認する。

  1. ユーザのサービスへのパーソナルデータ提供ポリシーのうち、要求を行ったサービスに対するポリシーを収集する(パーソナルデータ提供ポリシーは後述の GET or PUT or PATCH api.opaas.io/api/v1/users/permissions によって直接取得、または変更することができる)。
  2. 収集したポリシーのうち、要求されている各パーソナルデータに関するポリシーをそれぞれ取得する。
  3. 要求されているパーソナルデータに対するポリシーが一つも設定されていない場合は、そのパーソナルデータは許諾されていないものとみなす。
  4. 要求されているパーソナルデータに対するポリシーが一つだけ設定されている場合はそのポリシーに設定されているアクセス権限の種類によって許諾されているかどうかを判断する。ポリシーが複数設定されている場合は、ポリシーの type に対して service > service_domain > service_group > reliability の順で優先度をつけ、最も優先度の高いポリシーのアクセス権限の種類によって許諾されているかどうかを判断する。

本APIは、許諾画面でユーザが「If this check box is enabled, the server will save your consent, so that you won't be prompted for the same authorization multiple times.」と表示されたチェックボックスをONにして許諾を行うと、要求されているすべてのパーソナルデータに対して、ユーザが許諾画面で設定した内容に応じたパーソナルデータ提供ポリシーを type=service で自動的に保存する。チェックボックスをOFFにして許諾を行うと、パーソナルデータ提供ポリシーは編集されない。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
scope Query 必須 ユーザに要求するパーソナルデータ。複数設定する場合は半角スペース区切りにて連結。"openid" scope 値は必須。要求パーソナルデータは事前におもてなしインフラに登録した情報のみ要求可能。
response_type Query 必須 レスポンスタイプ。Authorization Code Flow のため、”code” 固定。
client_id Query 必須 要求元のサービスID。事前登録が必要。
redirect_uri Query 必須 応答の返却先。事前登録が必要。
state Query 任意 要求と応答の間で維持されるランダムな値。設定された場合はそのままの値を返却する。
nonce Query 任意 Client セッションと ID Token を紐づける文字列。設定された場合はそのままの値を返却する。
auth_type Query 任意 認証方式。IDPW:ID/パスワード認証。IDM:ICカード認証。QR:QRコード認証。未指定の場合は"IDPW"。"IDM"または"QR"を指定した場合、認証要求の度に認証を行う。
IDM Query 任意 認証に利用するIDm(ICカードのID)を指定する。auth_typeにIDMを指定した場合にこのパラメータが必須となる。
authori_screen Query 任意 許諾画面の表示有無。
ON:許諾画面表示。"scope"にサービス/サービスドメイン/信頼度全てのアクセス制御設定が"未回答"のパーソナルデータが設定されている場合は許諾画面を表示する。
OFF:許諾画面を表示しない。"scope"に設定されたパーソナルデータのうち"許可"のもののみ提供する。
未指定の場合は"ON"。
ただし、auth_typeがQRの場合は、設定値に関わらず"OFF"となる。
code_challenge Query 任意 このパラメータを設定すると、token要求受付APIの際に、 code_verifierパラメータによるcode_challengeを実施する。
code_challenge_method Query 任意 code_challenge時のメソッドを指定する。"plain" 又は "S256" を指定する。未指定時の場合は"plain"。
qrtoken Query 任意 auth_typeが QR の場合、GET api.opaas.io/api/v1/users/auth/qr で得られたQRコード内に記載された、qrtoken(ユーザの認証トークン)を設定する。qrtoken の性質に関しては、下記のQRコード認証についてを参照のこと
lang Query 任意 ログイン、登録、パスワードリセット時のHTMLの表示言語を設定する(これらの表示言語は、上部にあるメニューから変更することもできる)。ただし、現バージョンでは、許諾画面は英語表記のみ対応。
現バージョンでは下記の値を設定可能。
・en: 英語
・ja:日本語
設定しなかった(または上記以外の値を設定した)場合は、ブラウザの言語設定で設定されている言語が設定されたものとみなされる。

注意事項

QRコード認証について

QRコード認証を行う場合、後述の GET api.opaas.io/api/v1/users/auth/qr によって得られるQRコード内に記載されたユーザのトークンを用いてユーザの認証を行う。 具体的な手順は以下の通り。

  1. 本APIでユーザの認証要求の受付を行い、得られた認可コードを用いて POST accounts.opaas.io/oauth/token を実行してアクセストークンを取得する。
  2. 1.で取得したアクセストークンを用いて後述の GET api.opaas.io/api/v1/users/auth/qr を 実行し、1.で認証したユーザの認証トークンが記載されたQRコードを得る。
  3. 本APIに対してリクエストパラメータとして、auth_type=QR、qrtoken=「2.で取得したユーザの認証トークン」を設定して実行する。これら以外のリクエストパラメータは、他の認証方式と同様のものを指定する。

QRコード認証を行った場合、ユーザの認証トークンによってユーザが認証されるため、ログイン画面は表示されない。

また、authori_screen はその設定値に関わらず、OFF として実行されるため、許諾画面が表示されることはない。

qrtoken(ユーザの認証トークン)について

GET api.opaas.io/api/v1/auth が生成する QRコード内に記載された qrtoken の寿命は 15 分であり、生成後15分経過すると失効する。

qrtokenは一度使用すると失効する。

失効した qrtoken を本APIのリクエストパラメータに指定して実行するとエラーとなる。

response_type について

2018年10月5日 時点では code のみ対応している。 今後、他の方式も対応予定。

パーソナルデータの提供許諾ポリシー取得・設定APIについて

後述の GET,PUT or PATCH api.opaas.io/api/v1/users/permissions を参照。

レスポンスパラメータ

ログイン、または許諾が必要な場合は、ステータスコード200で、HTMLが返る。

認証要求が成功した場合は、UA経由のリダイレクトで応答を返却する。

パラメータ名 必須/任意 説明
code 必須 ログインした利用者に紐付く認可コード。
state 任意 要求パラメータのstate。要求時に設定された場合は必須。

HTTPステータスコード

ステータスコード
302 UA経由のリダイレクトで応答を返却する。エラー時はリダイレクト先のURLクエリに後述のエラーレスポンスパラメータが付与される
400 サービス情報が不正、リダイレクトURI が不正のためリダイレクト先が不明な場合の応答。JSONのオブジェクト形式で、statusとmessageにエラーの情報が入る。

エラーレスポンスパラメータ

パラメータ名 必須/任意 説明
error 必須 下記の表を参照
error_description 任意 エラー内容
state 任意 要求パラメータのstate。要求時に設定された場合は必須。

error の詳細説明

error 意味 主な原因
access_denied アクセス拒否 ・auth_type に IDM を指定時に、IDM がユーザの登録した IDM と一致しない
invalid_scope scope が不正 ・scope に "openid" が指定されていない
invalid_request 要求パラメータが不正 ・code_challenge 指定時に、不正なcode_challenge_method を指定した
・auth_type に IDM を指定時に、IDM が設定されていない
invalid_token qrtokenが が不正 auth_type が 'QR' の場合に qrtoken が不正または失効(15分以上経過、または2回以上の使用)している
server_error サーバエラー ・サーバにてエラーが発生した
unsupported_response_type サポートしていない response_type ・response_type に "code" 以外を指定した

サンプル

リクエストサンプル

パスワード認証の場合

・GET https://accounts.opaas.io/oauth2/authorize?scope=openid+email+passport_name&response_type=code&client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&redirect_uri=https%3A%2F%2Ftest-rp.co.jp%2F&state=statevalue&nonce=noceXXXXXX&authori_screen=OFF

IDM認証の場合

・GET https://accounts.opaas.io/oauth2/authorize?scope=openid+email+passport_name&response_type=code&client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&redirect_uri=https%3A%2F%2Ftest-rp.co.jp%2F&state=statevalue&nonce=noceXXXXXX&auth_type=IDM&IDM=xxxxxxxx&authori_screen=OFF

QRコード認証の場合

・GET https://accounts.opaas.io/oauth2/authorize?scope=openid+email+passport_name&response_type=code&client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&redirect_uri=https%3A%2F%2Ftest-rp.co.jp%2F&state=statevalue&nonce=noceXXXXXX&auth_type=QR&qrtoken=xxxxxxxx
補足

リクエストサンプルで、GET メソッドを使用する場合で、リクエストヘッダに記述する必要のあるデータがない場合は、上記のように、「・GET」の次の行にURLのみを表記する。

レスポンスサンプル

正常時
HTTPステータスコード

302

レスポンス内容
HTTP/1.1 302 Found Location: https://test-rp.co.jp?state=statevalue&code=NsjJpaNnH4u9BOnh

異常時(リダイレクト応答)

HTTPステータスコード

302

レスポンス内容
HTTP/1.1 302 Found Location: https://test-rp.co.jp?error=invalid_request&error_description=Unsupported%20response_type%20value&state=statevalue

異常時(400応答)

HTTPステータスコード

400

レスポンス内容(client_id が不正な場合)
{ "status": "Client ID Error", "message": "The client identifier (client_id) is missing or invalid." }
レスポンス内容(auth_type が 'QR' の場合で、qrtokenが不正、または失効した場合)
{ "status": "invalid_token", "message": "The request parameter qrcode is expired or invalid." }

ユーザ登録要求受付API (GET accounts.opaas.io/oauth2/signup )

ユーザ登録認証要求の受付を行うWebページを表示する。

本APIは、以下の3種類の方法で実行される。

  1. 前述の、GET accounts.opaas.io/oauth2/authorize 実行時に、ログインが行われていなかった場合に表示されるログイン画面で sign up ボタンをクリックした際に実行される。詳細は GET accounts.opaas.io/oauth2/authorize の説明内の流れ(以下「authorizeの処理の流れ」と表記)を参照。
  2. 本APIを直接実行することで、aurhorize の処理の流れの 手順1,2 を飛ばして、直接 手順3 のユーザ登録画面へ移行することができる。
  3. 本APIを リクエストパラメータ client_id を設定せずに直接実行することで、authorize の処理の流れとは関係なく、ユーザ登録の処理のみを行う事ができる。1,2 と異なり、ユーザ登録完了時に、ログインのボタンが表示されることはない。

リクエストパラメータ

本APIは上記の 1,2 の方法で実行された場合は、 GET accounts.opaas.io/oauth2/authorizeの処理の流れに組み込まれた API であるため、リクエストパラメータは GET accounts.opaas.io/oauth2/authorize と同じである。従って、リクエストパラメータの一覧は省略する。

上記の 3 の方法で実行された場合は、本APIはリクエストパラメータを必要としない。

レスポンスパラメータ

不正なリクエストや、パラメータがない場合は、ログインID(メールアドレス)を登録するためのHTMLがステータスコード200で返る。それ以外の場合はすべてエラーである。

HTTPステータスコード

ステータスコード
200 ログインIDを登録するためのHTML
302 エラー発生時、UA経由のリダイレクトで応答を返却する。エラー時はリダイレクト先のURLクエリに後述のエラーレスポンスパラメータが付与される。本APIは正常終了時にリダイレクトで応答が行われることはない。
400 サービス情報が不正、リダイレクトURI が不正のためリダイレクト先が不明な場合の応答。JSONのオブジェクト形式で、statusとmessageにエラーの情報が入る。

エラーレスポンスパラメータ

GET accounts.opaas.io/oauth2/authorize と同じ

サンプル

正常時に HTML が返る以外は、GET accounts.opaas.io/oauth2/authorize とほぼ同一なので省略

ユーザのパスワード変更要求受付API (GET accounts.opaas.io/oauth2/resetpassword )

ユーザのパスワード変更要求の受付を行うWebページを表示する。

本APIは、以下の3種類の方法で実行される。

  1. 前述の、GET accounts.opaas.io/oauth2/authorize 実行時に、ログインが行われていなかった場合に表示されるログイン画面で reset password ボタンをクリックした際に実行される。詳細は GET accounts.opaas.io/oauth2/authorize の説明内の流れ(以下「authorizeの処理の流れ」と表記)を参照。
  2. 本APIを直接実行することで、aurhorizeの処理の流れの 手順1,2 を飛ばして、直接 手順4 のパスワード変更画面へ移行することができる。
  3. 本APIを リクエストパラメータ client_id を設定せずに直接実行することで、authorize の処理の流れとは関係なく、パスワードの変更の処理のみを行う事ができる。1,2 と異なり、パスワード変更完了時に、ログインのボタンが表示されることはない。

本APIは、パスワード変更完了時に、それまでログイン状態であったとしても、強制的にログアウトする。

リクエストパラメータ

本APIは上記の 1,2 の方法で実行された場合は、 GET accounts.opaas.io/oauth2/authorizeの処理の流れに組み込まれた API であるため、リクエストパラメータは GET accounts.opaas.io/oauth2/authorize と同じである。従って、リクエストパラメータの一覧は省略する。

上記の 3 の方法で実行された場合は、本APIはリクエストパラメータを必要としない。

レスポンスパラメータ

不正なリクエストパラメータがない場合は、パスワードを変更するユーザID(メールアドレス)を入力するためのHTMLがステータスコード200で返る。それ以外の場合はすべてエラーである。

HTTPステータスコード

ステータスコード
200 パスワードを変更するユーザIDを入力するためのHTML
302 エラー発生時、UA経由のリダイレクトで応答を返却する。エラー時はリダイレクト先のURLクエリに後述のエラーレスポンスパラメータが付与される。本APIは正常終了時にリダイレクトで応答が行われることはない。
400 サービス情報が不正、リダイレクトURI が不正のためリダイレクト先が不明な場合の応答。JSONのオブジェクト形式で、statusとmessageにエラーの情報が入る。

エラーレスポンスパラメータ

GET accounts.opaas.io/oauth2/authorize と同じ

サンプル

正常時に HTML が返る以外は、GET accounts.opaas.io/oauth2/authorize とほぼ同一なので省略

ログアウト要求受付API (GET accounts.opaas.io/oauth2/logout )

ユーザのログアウト要求の受付を行う。

リクエストパラメータとして、client_id と redirect_uri を受け取り、redirect_uri がclient_id のクライアントに登録されていた場合のみ、ユーザのログアウト処理を行い、redirect_uri にリダイレクトする。

ユーザがログインしていなかった場合は、エラーとはせず、redirect_uriにリダイレクトする。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
client_id Query・Body 必須 要求元のサービスID。事前登録が必要。
redirect_uri Query・Body 必須 応答の返却先。事前登録が必要。

レスポンスパラメータ

ログアウトが成功した場合は、UA経由のリダイレクトで応答を返却する。本APIはリダイレクト時に特別なレスポンスパラメータを付与しない。

HTTPステータスコード

ステータスコード
302 UA経由のリダイレクトで応答を返却する。
400 サービス情報が不正、リダイレクトURI が不正のためリダイレクト先が不明な場合の応答。JSONのオブジェクト形式で、statusとmessageにエラーの情報が入る。

サンプル

リクエストサンプル

・GET https://accounts.opaas.io/oauth2/logout?client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&redirect_uri=https%3A%2F%2Ftest-rp.co.jp

レスポンスサンプル

正常時
HTTPステータスコード

302

レスポンス内容
HTTP/1.1 302 Found Location: https://test-rp.co.jp

異常時(パラメータエラー時)

HTTPステータスコード

400

レスポンス内容

client_id が不正な場合

{ "status": "Parameter error", "message": "Parameter client_id is required or invalid." }

redirect_uri が不正な場合

{ "status": "Parameter error", "message": "Parameter redirect_uri is required or invalid." }

トークン要求受付API (POST accounts.opaas.io/api/v1/oauth2/token )

認証要求受付の結果をトークンとして発行する。

リクエストパラメータ

下記で、必須/任意の所に(A)と記述されているものは、grant_typeに"authorization_code"を指定した場合、(R)と記述されているものは、grant_typeに"refresh_token"を指定した場合を表す。

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
grant_type Body 必須 "authorization_code" または "refresh_token"を指定する。
code Body 必須(A) 認証要求受付APIで返却された認可コード。
redirect_uri Body 必須(A) リダイレクトURI。認証要求時のredirect_uri と同じ値。
client_id Body/Header 必須 要求元のサービスID。事前登録が必要。client_id及び、client_secret は HTTP_AUTHORIZATION リクエストヘッダにBasic認証で記述しても良い。BodyとHeaderの両方で指定した場合は、Headerで指定した値が有効となる。
client_secret Body/Header 必須 要求元のサービスのパスワード。事前登録が必要。
refresh_token Body 必須(R) grant_typeが"refresh_token"の場合に必須。リフレッシュトークンを指定し、アクセストークンを再発行する。
code_verifier Body 任意(A) code発行時に、リクエストパラメータにcode_challengeを指定した場合は必須。code_challengeで指定した値と異なる値を指定した場合はinvaid_grantエラーとなる。
X_AUTHORIZATION Header 任意(A) code発行時に、auth_typeにIDMを指定した場合に必須。クライアントのpassphrazeをリクエストヘッダに記載する。
scope Body 任意(R) 要求するパーソナルデータ。複数設定する場合は半角スペース区切りにて連結。元のアクセストークンに許諾されているscopeと、このリクエストパラメータに記載されたscopeの積集合が、新しく生成されるアクセストークンに許諾されるscopeとなる。

初回の認証時には grant_type に authorization_code でトークン(1時間有効)を取得し、その後は grant_type に refresh_token を指定し、リフレッシュトークン(24時間有効)を利用してトークンを再発行することができる。トークンの有効期限が切れた場合には再度認証(GET accounts.opaas.io/oauth2/authorize)が必要となる。

レスポンスパラメータ

パラメータ名 必須/任意 説明
access_token 必須 認可コードに紐付く、アクセストークン。
token_type 必須 発行されたトークンのタイプ。"Bearer"固定。
refresh_token 必須 リフレッシュトークン。
expires_in 必須 アクセストークンの有効期限(秒)。
id_token 必須 認可コードに紐付く、IDトークン。JWT 形式で応答される。

HTTPステータスコード

ステータスコード
200 正常終了
400 異常終了

エラーレスポンスパラメータ

パラメータ名 必須/任意 説明
error 必須 エラーコード。
error_description 任意 ・invalid_request:要求パラメータが不正。
・invalid_client:指定されたサービス 情報が不正。
・invalid_grant:認可コードが不正、またはリダイレクトURI が不正。
・unauthorized_client:サービスがグラントタイプauthorization_code の利用を許可されていない。
・unsupported_grant_type:サポートしていないグラントタイプが指定された。
・invalid_scope:指定されたスコープが不正。
・server_error:サーバでエラーが発生

サンプル

リクエストサンプル

POST /oauth2/token HTTP/1.1 Host: accounts.opaas.io grant_type=authorization_code&code=NsjJpaNnH4u9BOnh&redirect_uri=https%3A%2F%2Ftest-rp.co.jp%2F&client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&client_secret=ZJYCqe3GGRvdrudKyZS0XhGv_Z45DuKhCUk0gBR1vZk

codeのauth_typeがIDM の場合

POST /oauth2/token HTTP/1.1 Host: accounts.opaas.io HTTP-X-AUTHORIZATION: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx client_id=xxxxxxx&client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&grant_type=authorization_code&redirect_uri=https%3A%2F%2Ftest-rp.co.jp%2F&code=NsjJpaNnH4u9BOnh

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "access_token": "SlAV32hkKG", "token_type": "Bearer", "refresh_token": "8xLOxBtZp8", "expires_in": 3600, "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0NzA5NzUwMTEsImF6cCI6IkNMSUFOVDk5OTkiLCJzdWIiOiIwMDAwMSIsIm5vbmNlIjoibm9jZVhYWFhYWCIsImF1ZCI6IkNMSUFOVDk5OTkiLCJpc3MiOiJodHRwczpcL1wvMTkyLjE2OC4yMC43OFwvIiwiaWF0IjoxNDcwOTcxNDExfQ.oN4YB5U6m-L-m9bHS1cXVW0DkEAPLtajA0mCGdEs0VU" }

異常時

HTTPステータスコード

400

レスポンス内容
{ "status":"error", "error_description": "invalid_request" }

ユーザーの認証用QRコード取得API ( GET api.opaas.io/api/v1/users/auth/qr )

ユーザーの認証用QRコードを取得するAPIである。

認証ヘッダに付与されたアクセストークンに基づき、ユーザIDを割り出し、そのユーザに対する認証トークンを生成する。生成した認証トークンは、GET accounts.opaas.io/oauth2/authorize において、(auth_type=QRを指定して)QRコード認証を行う際に、リクエストパラメータ qrtoken に指定して使用する。

QRコードを用いた認証の手順の詳細については GET accounts.opaas.io/oauth2/authorize の「QRコード認証について」を参照のこと。

本APIは、生成した認証トークンの情報を含んだQRコードの画像を出力する。

本APIで生成した認証トークンの寿命は 15 分であり、生成後15分経過すると失効する。また、認証トークンは一度使用すると失効する。

失効した認証トークンを GET accounts.opaas.io/oauth2/authorize のリクエストパラメータとして使用するとエラーとなる。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が有効となる。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。
state Query 任意 要求と応答の間で維持されるランダムな値。設定された場合はそのままの値がQRコード内に記載される。
html Query 任意 本パラメータを指定した場合(値は何を設定しても良い)、QRコードをHTMLの中の画像として出力する。
本パラメータを指定しなかった場合は、content-type: image/png でファイル名が qrcode.png のファイルとして出力する。

レスポンスパラメータ

HTML内の画像または、ファイルとしてQRコードが出力される。

QRコード内のデータには以下の内容が記載される。

qrtoken=「ユーザの認証トークン」&state=「リクエストパラメータ state に設定された値」

HTTPステータスコード

ステータスコード
200 正常終了
401 トークンの設定が不正である
500 サーバー内部エラー

サンプル

リクエストサンプル

リスポンスを画像ファイルで取得する場合。

・GET https://api.opaas.io/api/v1/users/auth/qr?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

リスポンスをHTML内の画像で取得する場合

・GET https://api.opaas.io/api/v1/users/auth/qr?html&access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容

HTMLまたはpng形式の画像。

異常時(アクセストークンが有効でない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "invalid_token", "error_description": "The access token provided is expired, revoked, malformed, or invalid for other reasons" }
異常時(アクセストークン内のscopeにopenidが含まれていない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "insufficient_scope", "error_description": "The request requires higher privileges than provided by the access token" }
異常時(おもてなし内部エラーの場合)
HTTPステータスコード

500

レスポンス内容
技術的な問題が発生しました。ご迷惑をおかけしております。

パーソナルデータ取得API(GET api.opaas.io/api/v1/user_attributes)

おもてなしクラウドの提供するパーソナルデータ取得APIである。 ユーザーがおもてなしクラウドへ登録し、サービスへの提供を許可しているパーソナルデータのみを取得可能である。

OpenID Connect 1.0のUserInfoEndpointの仕様に準拠する。 認証ヘッダに付与されたアクセストークンに基づき、サービスID、ユーザーIDを割り出す。 存在しないパーソナルデータを指定された場合は、無視する。

リクエストパラメータ

必須(*)は、それが記載されているうちの、いずれか一つを必ず指定する必要があることを表す。

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須(*) トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が有効となる。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。
rule Query 任意 ルールID。複数指定する場合は、カンマ区切りで指定する。
filter Query 任意 取得したパーソナルデータ名を指定し、指定がない場合は提供が許可されている全てのパーソナルデータを取得する

注意事項

パーソナルデータ passport_image について

本APIで取得したパーソナルデータ passport_image のURLの有効期限は10分である。取得後10分以上経過した場合は、そのURLから画像にアクセスすることはできなくなるため、必要な場合は再度 GET user_attributes で passport_image のURLを取得する必要がある。

ruleについて

2018年10月5日 時点では rule機能は未提供。 今後対応予定。

レスポンスパラメータ

レスポンスボディへの返却は、暗号化を実施しない場合は"application/json"形式、暗号化を実施する場合は"application/jwt"形式にて返却される。

”appliaction/json”形式の場合、応答レスポンスボディ内にはJSONプレーンテキスト形式のクレームセットデータのみが返却される。 ”application/jwt”形式の場合、応答レスポンスボディ内にはJWT(Json Web Token)形式のデータのみが返却される。JWT形式はBASE64URLエンコードされる。 JSONプレーンテキストまたはJWTクレームセットより下記応答形式のパラメータ(sub,iss,aud)を取得することができる。

パラメータ名 必須/任意 説明
sub 必須 ユーザ識別子。
iss 必須 レスポンスの発行者の識別子(URL)。
aud 必須 サービスID。
パーソナルデータ 必須 パーソナルデータモデル(user_attributes)にてパラメータの項目を参照。

注意事項

application/jwt形式 について

2018年10月5日 時点では application/json形式のみ対応している。 今後、application/jwt形式も対応予定。

HTTPステータスコード

ステータスコード
200 正常終了
401 トークンの設定が不正である
500 システム内の異常発生

注意事項

ステータスコード500の場合のみ、jsonではなく、HTMLでレスポンス内容が返る(他のすべてのAPIについても同様)。

サンプル

リクエストサンプル

アクセストークンをヘッダで指定する場合

GET /api/v1/user_attributes?rule=ecDMLZ2F9H4KotFoeI5TTgO1tM9SG1f1,KdMr2Bd1sTniWgf0XOecwRqLhRYxot7w&filter=first_name,family_name,email,gender HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx

アクセストークンをクエリで指定する場合

・GET https://api.opaas.io/api/v1/user_attributes?rule=ecDMLZ2F9H4KotFoeI5TTgO1tM9SG1f1,KdMr2Bd1sTniWgf0XOecwRqLhRYxot7w&filter=first_name,family_name,email,gender&access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容(要求したパーソナルデータ項目がすべて提供できる場合)

・暗号化しない場合

{ "sub":"https://accounts.opaas.io/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "familiy_name":"Taro", "first_name":"Suzuki", "gender":"1", "email":"example@service.opaas.io", "aud":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "iss":"https://api.opaas.io/" }

・パーソナルデータを暗号化する場合 ※パーソナルデータの暗号化は今後リリース予定

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
レスポンス内容(要求したパーソナルデータの一部のみユーザーが提供を許諾している場合)

・パーソナルデータを暗号化しない場合

{ "sub":"https://accounts.opaas.io/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "family_name":"Taro", "email":"example@service.opaas.io", "aud":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "iss":"https://api.opaas.io/" }

・パーソナルデータを暗号化する場合

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

※許可されたパーソナルデータのみ取得できる

レスポンス内容(「ルール」によってセマンティクス変換が正常に変換できた場合)

※「ルール」を利用したパーソナルデータのセマンティクス変換は今後リリース予定

・パーソナルデータを暗号化しない場合

{ "sub":"https://accounts.opaas.io/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "year":"1982" , "year_jpn":"S57", "aud":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "iss":"https://api.opaas.io/" }

・パーソナルデータを暗号化する場合

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

※西暦(パーソナルデータ:"year")を和暦(パーソナルデータ:"year_jpn")へセマンティクス変換した場合の例

レスポンス内容(セマンティクス変換でエラーが発生した場合)

・パーソナルデータを暗号化しない場合

{ "sub":"https://accounts.opaas.io/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "year":"1982" , "aud":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "iss":"https://api.opaas.io/" }

・暗号化する場合

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

※西暦(パーソナルデータ:"year")を和暦(パーソナルデータ:"year_jpn")へセマンティクス変換できない場合の例

異常時(アクセストークンが有効でない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "invalid_token", "error_description": "The access token provided is expired, revoked, malformed, or invalid for other reasons" }
異常時(アクセストークン内のscopeにopenidが含まれていない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "insufficient_scope", "error_description": "The request requires higher privileges than provided by the access token" }
異常時(おもてなし内部エラーの場合)
HTTPステータスコード

500

レスポンス内容
技術的な問題が発生しました。ご迷惑をおかけしております。

サービス一覧取得API(GET api.opaas.io/api/v1/services)

サービスの一覧を取得する。

リクエストパラメータ

必須(*)は、それが記載されているうちの、いずれか一つを必ず指定する必要があることを表す。

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須(*) トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が優先される。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。
reg_date_from Query 任意 サービスの登録日付による取得範囲の指定(開始日をYYYY-MM-DD形式で指定)。
reg_date_to Query 任意 サービスの登録日付による取得範囲の指定(終了日をYYYY-MM-DD形式で指定)。
sort_type Query 任意 ソート対象のパラメータを指定する。以下の値を設定可能。
複数指定する場合はカンマで区切り、前方指定項目が優先される。
reg_date_asc, reg_date_desc以外は先頭に - をつけることで降順にできる。
name: サービス名称でソートする(昇順)
title: サービスの表示用の名称でソートする(昇順)
reg_date_asc: サービスの登録日付でソートする(昇順)
reg_date_desc: サービスの登録日付でソートする(降順)
service_domain_name: サービスが属するサービスドメイン名でソートする(昇順)
signage_num: サービスに紐づくサイネージの数でソートする(昇順)
require_attr_num: サービスが要求するパーソナルデータ数でソートする(昇順)
service_id Query 任意 検索対象のサービスID。完全一致による検索を行う。複数指定する場合はカンマで区切る。
name Query 任意 検索対象のサービス名称。部分一致による検索を行う。
title Query 任意 検索対象の表示用の名称。部分一致による検索を行う。
description Query 任意 検索対象のサービス説明。部分一致による検索を行う。
service_domain_id Query 任意 検索対象のサービスドメインID。完全一致による検索を行う。
service_groups Query 任意 検索対象が属するサービスグループID。完全一致による検索を行う。複数指定する場合はカンマで区切る
tag Query 任意 検索対象のタグ。完全一致による検索を行う。複数指定する場合はカンマで区切る。
has_signage Query 任意 サイネージの有無。サービスに紐付くサイネージの有無を設定。[0:無、1:有]
keyword Query 任意 検索対象のキーワード。表示用の名称、サービスの説明から指定されたキーワードに部分一致するサービスを取得する。
geohash Query 任意 検索対象のgeohash。前方一致検索を行う。
start_pos Query 任意 検索結果のうち、start_posで指定した数以降のデータを取得する。最初のデータを1とする。省略した場合は1が設定されたものとみなす。
require_num Query 任意 取り出し件数の指定。省略時は全件とみなす。

レスポンスパラメータ

パラメータ名 説明
total_num 条件にヒットした総数
start_pos データの取得開始位置
services サービスに関するデータをリスト形式で返す(以下のserviceの構造参照)

サービス(service)の構造

パラメータ名 説明
service_id サービスのID
name アルファベット表記のサービス名
title ユーザーへの表示用のサービス名称。表示用の名称を多言語対応する場合は、JSON形式で、以下のように記述する。
{ "言語名": "その言語の表示用のサービス名称", ・・・ }
現バージョンで対応している言語名は以下の通りである。
・en:英語
・ja:日本語
description サービスの説明
icon_url サービスを画面表示する際に利用するアイコンのURL
tags タグの名前をリスト形式で格納する
service_domain_id サービスが属するサービスドメインのIDを表す
service_groups サービスが属するサービスグループのIDをリスト形式で格納する
geohash サービスの提供エリアをgeohash 形式で格納する。geohashは次のURLを参照
https://ja.wikipedia.org/wiki/%E3%82%B8%E3%82%AA%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5
floor サービスの提供フロアがある場合は格納する
attrs 要求しているパーソナルデータ名をリスト形式で格納する
reg_date 登録日を格納する

HTTPステータスコード

ステータスコード
200 正常終了
400 リクエストパラメータの設定が正しくない
401 トークンの設定が不正である
500 システム内の異常発生

サンプル

リクエストサンプル

アクセストークンをヘッダで指定する場合

GET /api/v1/services/ HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxx

アクセストークンをクエリで指定する場合

・GET https://api.opaas.io/api/v1/services/?access_token=xxxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容(アクセストークンのユーザが、サービスドメイン 20000000000000000020000000000000 の管理者権限を持ち、20000000000000000020000000000001 の管理者権限を持たない場合)
{ "total_num": 2, "start_pos": 1, "services": [ { "service_id": "2000000000000000001000000000000a", "name": "service1", "title": "サービス1", "description": "説明1", "icon_url": "http://test.com", "tags": [ "abcde" ], "service_domain_id": "20000000000000000020000000000000", "service_groups": [ "20000000000000000030000000000000" ], "geohash": "u4pruydqqvj", "floor": "1.0", "attrs": [ "age", "destination" ], "reg_date": "2018-10-07" "canmodify_userdata": false, "client": "567541", "client_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "passphrase": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "redirect_uris": [ "http://example.com/" ] }, { "service_id": "2000000000000000001000000000000b", "name": "service2", "title": "サービス2", "description": "説明2", "icon_url": "http://test.com", "tags": [], "service_domain_id": "20000000000000000020000000000001", "service_groups": [ "20000000000000000030000000000000" ], "geohash": "u4pruydqqvj", "floor": "10.0", "attrs": [ "address_line_1", "address_line_2", "country" ], "reg_date": "2018-10-07" }, ] }
注意事項

サービスが一つも登録されていない場合でも、エラーとはしない。

異常時(アクセストークンが有効でない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "invalid token", "message": "The access token provided is expired, revoked, malformed, or invalid for other reasons" }
異常時(アクセストークンが openid を許諾しない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "insufficient_scope", "message": "The request requires higher privileges than provided by the access token" }
異常時(リクエストパラメータ has_signage に 0, 1 以外の値を設定した場合)
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. Parameter has_signage must be 0 or 1. Current value is 2" }

サービスの情報取得API(GET api.opaas.io/api/v1/services/{id})

サービスの情報を取得する。

リクエストパラメータ

必須(*)は、それが記載されているうちの、いずれか一つを必ず指定する必要があることを表す。

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須(*) トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が優先される。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。
id Path 必須 取得するサービスのID

レスポンスパラメータ

GET api.opaas.io/api/v1/services/ の個々のサービスのレスポンスパラメータと同じ形式で出力される。

HTTPステータスコード

ステータスコード
200 正常終了
401 トークンの設定が不正である
404 {id}のサービスが存在しない
500 システム内の異常発生

サンプル

リクエストサンプル

アクセストークンをヘッダで指定する場合

GET /api/v1/services/2000000000000000001000000000000a/ HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxx

アクセストークンをクエリで指定する場合

・GET https://api.opaas.io/api/v1/services/2000000000000000001000000000000a/?access_token=xxxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "service_id": "2000000000000000001000000000000a", "name": "service1", "title": "サービス1", "description": "説明1", "icon_url": "http://test.com", "tags": [ "abcde" ], "service_domain_id": "20000000000000000020000000000000", "service_groups": [ "20000000000000000030000000000000" ], "geohash": "u4pruydqqvj", "floor": "1.0", "attrs": [ "age", "destination" ], "reg_date": "2018-10-07" }
異常時({id}のサービスが存在しない場合)
HTTPステータスコード

404

レスポンス内容
{ "status": "error", "message": "service id xxxxxxxxxxxxxxxxxxxxxxxxx does not exist." }
異常時(アクセストークンが有効でない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "invalid token", "message": "The access token provided is expired, revoked, malformed, or invalid for other reasons" }
異常時(アクセストークンが openid を許諾しない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "insufficient_scope", "message": "The request requires higher privileges than provided by the access token" }

ルール一覧取得API(GET api.opaas.io/api/v1/rules)

ルールの情報を取得する。(今後提供予定)

OpenID Provider Metadata の取得API(GET accounts.opaas.io/.well-known/openid-configuration)

OpenID Connect Discovery (https://openid.net/specs/openid-connect-discovery-1_0.html) の OpenID Provider Metadata の情報を取得する。

リクエストパラメータ

なし

レスポンスパラメータ

OpenID Provider Metadata の情報がJSON形式で返る。

HTTPステータスコード

ステータスコード
200 正常終了

サンプル

リクエストサンプル

GET /.well-known/openid-configuration HTTP/1.1 Host: accounts.opaas.io

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "issuer": "https://accounts.opaas.io", "authorization_endpoint": "https://accounts.opaas.io/oauth2/authorize",  以下略 }

id_token の公開鍵の情報の取得API(GET accounts.opaas.io/oauth2/jwks)

POST accounts.opaas.io/oauth2/token のレスポンスパラメータの id_token の暗号化で使われている公開鍵暗号の公開鍵の情報を取得する。

リクエストパラメータ

なし

レスポンスパラメータ

公開鍵の情報がJSON形式で返る。

HTTPステータスコード

ステータスコード
200 正常終了

サンプル

リクエストサンプル

GET /oauth2/jwks HTTP/1.1 Host: accounts.opaas.io

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "keys": [ { "kty": "RSA", "alg": "RS256", "use": "sig", "kid": "b6a08db36ca10a325076003e90a7266d", "n": "qKoplSEdGtXEiI-wiuHewgbA1vhZiU6-ktVTKHB-LMLoee_1Qpv_TbELx0uXAsCH-z8swabD3kCp9snmIqYQauYediqbuCQEA3K7TVrTcmdChxhg9oRsahqbVqS5LQyhidQJ9wbf_I0kSb_ysC4SADoos0-Uordr19vG7bSwP7FZHmdHdqdb4uJvRfIPSahM3MJk87wU2rmo9u6pUSqWqQTlFtl9BXHt7T2FF3qo0FuWGHhDlRXYJSeuUav5U_2JFxbwawxhrKdY-G4JBr1KENuv7rChIYYp7Td_2lS9_0N_3mBw-euDGLG3SxWgLA0dM4XK35fElCirVvqdxni7LQ", "e": "AQAB" } ] }

パーソナルデータを変更するアプリの開発者向け

パーソナルデータ更新API(PUT or PATCH api.opaas.io/api/v1/user_attributes)

おもてなしクラウドの提供するパーソナルデータ更新APIである。 ユーザーがサービスへの提供を許可しているパーソナルデータのみ、 さらにサービスがパーソナルデータの編集権限を持つ場合のみ更新可能である。

認証ヘッダに付与されたアクセストークンに基づき、サービスID、ユーザーIDを割り出す。 存在しないパーソナルデータを指定された場合は、無視する。

本APIは、PUTとPATCHメソッドで同一の動作を行う。

パーソナルデータのうち、 passport_image は後述の PUT or PATCH api.opaas.io/api/v1/user_attributes/image で変更する。また、email については変更できない。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
user_attribute Body 必須 ・更新するパーソナルデータを、JSONのオブジェクト形式で下記のフォーマットで指定する。
・更新するパーソナルデータは、user_attributeの値として、JSONのオブジェクト形式で複数同時に設定できる。
・PUT、PATCHメソッド共に、指定したパーソナルデータのみ更新する。
・更新可能なパーソナルデータの種類と、各パーソナルデータが取りうる値については、パーソナルデータのモデルの表を参照。
・パーソナルデータ passport_image はこのAPIではなく、後述の PUT or PATCH api.opaas.io/api/v1/user_attributes/imageで更新する。
・パーソナルデータのモデルの表のうち、データ型にArrayが表記されているものは、更新後の値をJSONのリスト形式で設定する。
・更新後の値に "" (空文字)を設定することで、パーソナルデータの設定値を削除することができる。emailを除くすべてのパーソナルデータ(データ型がArrayのものも含む)をこの方法で削除することができる。
{"user_attribute": { "更新するパーソナルデータ名": 更新後の値, ・・・ }}

レスポンスパラメータ

更新したパーソナルデータ名と更新後の値をJSONのオブジェクト形式で返す。

HTTPステータスコード

ステータスコード
200 正常終了
400 リクエストパラメータの設定が正しくない
401 トークンの設定が不正である
403 許可されていないパーソナルデータを更新しようとした
500 システム内の異常発生

サンプル

リクエストサンプル

PUT /api/v1/user_attributes HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx {"user_attribute":{"age": 20, "destination": ["Tokyo", "Osaka"]}}

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容(要求したパーソナルデータがすべて変更できる場合)
{"age": 20, "destination": ["Tokyo", "Osaka"]}
異常時(アクセストークンが有効でない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "invalid_token", "error_description": "The access token provided is expired, revoked, malformed, or invalid for other reasons" }
異常時(サービスがパーソナルデータの編集権限を持たない場合)
HTTPステータスコード

403

レスポンス内容
{ "status": "error", "message": "Forbidden. Service xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx is not allowed to change user attribute." }
異常時(許可されていないパーソナルデータを更新しようとした場合)
HTTPステータスコード

403

レスポンス内容
{ "status": "error", "message": "Forbidden. You are not allowed to change scope age." }
補足

現状では許可されていないパラメータが複数あった場合でも、messageには最初に見つかったscopeだけを表示する。

リクエストサンプル(パーソナルデータを削除する場合)

PUT /api/v1/user_attributes HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx {"user_attribute":{"age": ""}}

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{"age": null}
補足

データを削除した場合は、レスポンス内容の更新後の値は null となる。

リクエストサンプル(存在しないパーソナルデータ(dummy)を更新しようとした場合)

PUT /api/v1/user_attributes Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx {"user_attribute":{"age": 20, "dummy": 0}}

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{"age": 20}
補足

存在しないパーソナルデータを変更しようとした場合は無視され、エラーとはしない。

リクエストサンプル(指定されたパラメータがJSONフォーマットでない場合)

PUT /api/v1/user_attributes HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx {"user_attribute":}
異常時
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. Parameter {\"user_attribute\":} is not JSON format" }

リクエストサンプル(パラメータに user_attribute が設定されていない場合)

PUT /api/v1/user_attributes HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx {"dummy":{"age": 0}}

レスポンスサンプル

異常時
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. Parameter user_attribute is required." }

リクエストサンプル(指定されたパーソナルデータの設定値が不正な場合)

PUT /api/v1/user_attributes HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx {"user_attribute":{"gender": 5}}
異常時
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. {'gender': [\"Value '5' is not a valid choice.\"]}"} }
補足

複数のパーソナルデータを同時に更新しようとした場合、一つでもパーソナルデータの設定値が不正であった場合は、他のパーソナルデータの更新値が適切であったとしても、パーソナルデータは一切更新されない。

リクエストサンプル(指定されたパーソナルデータのフォーマットが異なる場合)

PUT /api/v1/user_attributes HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx {"user_attribute":{"priority_language": "aaa"}}
異常時
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. {'priority_language': ['Value aaa must be list.']}" }

リクエストサンプル(パーソナルデータemailを更新しようとした場合)

PUT /api/v1/user_attributes HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx {"user_attribute":{"email": ""}}

レスポンスサンプル

異常時
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. Scope email can not be modified." }

リクエストサンプル(パーソナルデータpassport_imageを更新しようとした場合)

PUT /api/v1/user_attributes HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx {"user_attribute":{"passport_image": ""}}

レスポンスサンプル

異常時
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. Please use PUT or PATCH user_attributes/image to change passport_image." }

パーソナルデータ passport_image 更新API(PUT or PATCH api.opaas.io/api/v1/user_attributes/image)

おもてなしインフラの提供するパーソナルデータ passport_image の更新を行うAPIである。 ユーザーが passport_image への提供を許可している場合のみ、 さらにサービスがパーソナルデータの編集権限を持つ場合のみ更新が可能である。

認証ヘッダに付与されたアクセストークンに基づき、サービスID、ユーザーIDを割り出す。

本APIは、PUTとPATCHメソッドで同一の動作を行う。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
upload_file Body 必須 更新する画像ファイルのデータを Content-Type: multipart/form-data でBodyに記述する。

レスポンスパラメータ

なし

HTTPステータスコード

ステータスコード
201 正常終了
401 トークンの設定が不正である
403 許可されていないパーソナルデータを更新しようとした
500 システム内の異常発生

サンプル

リクエストサンプル

PUT /api/v1/user_attributes/image HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxx Content-Length: xxxxxxx Content-Type: multipart/form-data; 以下省略

curlでリクエストした場合の例

curl "https://api.opaas.io/api/v1/user_attributes/image" -L -X PATCH -H "Authorization: Bearer xxxxxxxxxxxxxxx" -F upload_file=@C:\Users\xxxxx\xxxxxx.jpg

レスポンスサンプル

正常時
HTTPステータスコード

201

レスポンス内容

なし

異常時(アクセストークンが有効でない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "invalid_token", "error_description": "The access token provided is expired, revoked, malformed, or invalid for other reasons" }
異常時(サービスがパーソナルデータの編集権限を持たない場合)
HTTPステータスコード

403

レスポンス内容
{ "status": "error", "message": "Forbidden. Service xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx is not allowed to change user attribute." }
異常時(passport_imageが許可されていない場合)
HTTPステータスコード

403

レスポンス内容
{ "status": "error", "message": "Forbidden. Scope passport_image is required." }

パーソナルデータ passport_image 削除API(DELETE api.opaas.io/api/v1/user_attributes/image)

おもてなしクラウドの提供するパーソナルデータ passport_image の削除を行うAPIである。 ユーザーが passport_image への提供を許可している場合のみ、 さらにサービスがパーソナルデータの編集権限を持つ場合のみ削除が可能である。

認証ヘッダに付与されたアクセストークンに基づき、サービスID、ユーザーIDを割り出す。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
item_key Body 必須 Content-Type: application/x-www-form-urlencoded で itemkey=passport_image をBodyに記述する。

レスポンスパラメータ

なし

HTTPステータスコード

ステータスコード
201 正常終了
401 トークンの設定が不正である
403 許可されていないパーソナルデータを更新しようとした
500 システム内の異常発生

サンプル

リクエストサンプル

DELETE /api/v1/user_attributes/image HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxx Content-Length: 23 Content-Type: application/x-www-form-urlencoded item_key=passport_image

レスポンスサンプル

正常時
HTTPステータスコード

204

レスポンス内容

なし

補足

パーソナルデータに passport_image が存在しない場合もエラーとはならず、正常終了する。

異常時(アクセストークンが有効でない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "invalid_token", "error_description": "The access token provided is expired, revoked, malformed, or invalid for other reasons" }
異常時(サービスがパーソナルデータの編集権限を持たない場合)
HTTPステータスコード

403

レスポンス内容
{ "status": "error", "message": "Forbidden. Service xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx is not allowed to change user attribute." }
異常時(Bodyにitem_keyが記述されていない場合)
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. Parameter item_key is required." }
異常時(Bodyのitem_keyにpassport_image以外が設定されていた場合(下記の例ではdummyを設定))
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. Parameter item_key dummy is not passport_image." }
異常時(passport_imageが許可されていない場合)
HTTPステータスコード

403

レスポンス内容
{ "status": "error", "message": "Forbidden. Scope passport_image is required." }

パーソナルデータ要求・変更・提供履歴取得API(GET api.opaas.io/api/v1/user_attributes/history)

パーソナルデータをサービスへ要求・提供した記録およびパーソナルデータを変更した履歴を取得する。 サービスが許可されているパーソナルデータに関する記録のみ取得できる。

リクエストパラメータ

必須(*)は、それが記載されているうちの、いずれか一つを必ず指定する必要があることを表す。

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須(*) トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が優先される。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。
service_id Query 任意 検索対象のサービスID。完全一致による検索を行う。
per_page Query 任意 レスポンスに格納される1ページあたりの履歴の件数。未指定の場合は全件格納される。
page Query 任意 レスポンスのページ。per_pageが設定された場合のみ有効となる。未指定の場合は1。
date_from Query 任意 履歴の日付による取得範囲の指定(開始日をYYYY-MM-DD形式で指定)
date_to Query 任意 履歴の日付による取得範囲の指定(終了日をYYYY-MM-DD形式で指定)
sort_order Query 任意 日付による履歴の並び順(ASC: 古い順、 DESC: 新しい順 を指定可能)
action Query 任意 パーソナルデータへの提供・変更等の種類を指定して履歴を絞り込む(OFFER: 要求、READ: 提供、UPDATE: 変更)

レスポンスパラメータ

結果はJSONのオブジェクト形式で下記の表の内容を返す。

パラメータ名 説明
total_count 条件にヒットする履歴の総数
history 履歴に関するデータをリスト形式で返す
per_page リクエストパラメータにper_pageを設定した場合のみ、per_pageの値が設定される。
page リクエストパラメータにper_pageを設定した場合のみ、pageの値が設定される。

historyの構造

パラメータ名 説明
action アクションの種類(OFFER: 要求、READ: 提供、UPDATE: 変更)
status trueを返す
service_id パーソナルデータを要求・提供・変更したサービスのID
item_text パーソナルデータを変更した場合(action=UPDATE)、変更したパーソナルデータ名とその値をオブジェクトとして格納。それ以外の場合は {} を格納。
key_list 要求・変更・提供したパーソナルデータ名のリスト(リスト形式)
created_at 履歴が作成された日時(ISO 8601形式)

HTTPステータスコード

ステータスコード
200 正常終了
400 リクエストパラメータの設定が正しくない
401 トークンの設定が不正である
500 システム内の異常発生

サンプル

リクエストサンプル

アクセストークンをヘッダで指定する場合

GET /api/v1/user_attributes/history HTTP/1.1 Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx

アクセストークンをクエリで指定する場合

・GET GET https://api.opaas.io/api/v1/user_attributes/history?access_token=xxxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "total_count": 185, "history": [ { "action": "OFFER", "status": true, "service_id": "2000000000000000001000000000000a", "item_text": {}, "key_list": [ "accessibility", "address_line_1", "address_line_2", "age", "city", "country", "day_of_birth", "destination", "email", "entry_date", "family_name", "first_name", "food_and_drink_prohibition", "food_preference", "gender", "issue_date", "month_of_birth", "native_language", "original_address", "original_name", "passport_birth", "passport_country", "passport_gender", "passport_image", "passport_mrz", "passport_name", "passport_nationality", "passport_number", "priority_language", "qualification_for_stay", "state", "telephone", "term_of_validity", "user_interface", "year_of_birth", "zip"] "created_at": "2018-09-16T06:07:36.943Z" }, { "action": "UPDATE", "status": true, "service_id": "2000000000000000001000000000000a", "item_text": {"destination": "Tokyo"}, "key_list": ["destination"], "created_at": "2018-09-16T06:22:29.080Z" }, 以下略 ] }
異常時(アクセストークンが有効でない場合)
HTTPステータスコード

401

レスポンス内容
{ "error": "invalid_token", "error_description": "The access token provided is expired, revoked, malformed, or invalid for other reasons" }

リクエストサンプル(パラメータが不正な場合)

・GET GET https://api.opaas.io/api/v1/user_attributes/history?access_token=xxxxxxxxxx&per_page=a

レスポンスサンプル

異常時
HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. Parameter per_page a must be positive integer value." }

サービスドメイン一覧取得API ( GET api.opaas.io/service_domains)

サービスドメインの一覧を取得する。

サービスドメインは、特定の企業、団体などが扱う複数のサービスを集めたものであり、サービスは必ず一つのサービスドメインに属する必要がある。

認証ヘッダに付与されたアクセストークンに基づき、ユーザーIDを割り出す。

サービスドメイン一覧の取得を行うにはアクセストークンから割り出したユーザがサービスドメインに対する管理者権限を持つ必要がある。インフラ管理者はすべてのサービスドメインを、サービスドメインの管理者は自身が管理するサービスドメインの一覧を取得できる。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization httpヘッダ 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が優先される。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。
service_domain_id Query 任意 検索対象のサービスドメインID。完全一致による検索を行う。複数指定する場合はカンマで区切る。
name Query 任意 検索対象のサービスドメイン名称。部分一致による検索を行う。
title Query 任意 検索対象の表示用の名称。部分一致による検索を行う。
description Query 任意 検索対象のサービス説明。部分一致による検索を行う。
service_id Query 任意 検索対象に属するサービスID。完全一致による検索を行う。
tag Query 任意 検索対象のタグ。完全一致による検索を行う。複数指定する場合はカンマで区切る。
keyword Query 任意 検索対象のキーワード。表示用の名称、サービスドメインの説明から指定されたキーワードに部分一致するサービスドメインを取得する。
reliability_from Query 任意 信頼度による取得範囲の下限の指定
reliability_to Query 任意 信頼度による取得範囲の上限を指定
reg_date_from Query 任意 履歴の日付による取得範囲の指定(開始日をYYYY-MM-DD形式で指定)
reg_date_to Query 任意 履歴の日付による取得範囲の指定(終了日をYYYY-MM-DD形式で指定)
start_pos Query 任意 検索結果のうち、start_posで指定した数以降のデータを取得する。最初のデータを1とする。省略した場合は1が設定されたものとみなす。
require_num Query 任意 取り出し件数の指定。省略時は全件とみなす。
sort_type Query 任意 ソート対象のパラメータを指定する。以下の値を設定可能。
複数指定する場合はカンマで区切り、前方指定項目が優先される。
reg_date_asc, reg_date_desc以外は先頭に - をつけることで降順にできる。
name: サービスドメインのアルファベット表記でソートする(昇順)
title: サービスドメインのユーザへの提示用の名前でソートする(昇順)
reliability: サービスドメインの信頼度でソートする(昇順)
reg_date_asc: サービスドメインの登録日付でソートする(昇順)
reg_date_des: サービスドメインの登録日付でソートする(降順)
service_domain_id: サービスドメインのIDでソートする(昇順)
service_num: サービスドメインに属するサービスの数でソートする(昇順)

レスポンスパラメータ

パラメータ 説明
total_num サービスドメインの総数
start_pos 結果の取得開始位置
service_domains サービスドメインのリスト

サービスドメインのデータ構造

パラメータ 説明
service_domain_id サービスドメインのID
name サービスドメインのアルファベット表記の名前
title ユーザーへの提示用のサービスドメインの名前
description サービスドメインの説明
icon_url サービスドメインのアイコン
tags サービスドメインのタグのリスト
reliability サービスドメインの信頼度
email サービスドメインのメールアドレス
telephone サービスドメインの電話番号
division サービスドメインの部署
address サービスドメインの住所
website サービスドメインのウェブサイトのURL
reg_date サービスドメインの登録日
services サービスドメインに属するサービスのIDのリスト

HTTPステータスコード

ステータスコード
200 正常終了
403 認証エラー
500 サーバー内部エラー

サンプル

リクエストサンプル

・GET GET https://api.opaas.io/api/v1/service_domains/?access_token=xxxxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "total_num": 1, "start_pos": 1 "service_domains": [{ "service_domain_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "name":"service domain 1", "title": "サービスドメイン1", "description": "サービスドメイン1の説明", "icon_url":"http://test.com", "tags": [ "test tag1", "test tag2" ], "reliability": 1, "email": "a@test.com", "telephone": "012-345-6789", "division": "test", "address": "Nagoya", "website": "http://web.com", "reg_date": "2018-09-08", "services": [ "00000000000000000000010000000003", "00000000000000000000010000000007", ] }] }

異常時(ユーザが管理者権限を持たない場合)

HTTPステータスコード

403

レスポンス内容

)

{ "status":"error", "message": "Request user is not administrator." }

サービスドメイン情報取得API ( GET api.opaas.io/service_domains/{id})

サービスドメインの情報を取得する

認証ヘッダに付与されたアクセストークンに基づき、ユーザーIDを割り出す。

サービスドメインの取得を行うにはアクセストークンから割り出したユーザがサービスドメインに対する管理者権限を持つ必要がある。インフラ管理者または、サービスドメインの管理者のみがサービスドメインの情報を取得できる。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization httpヘッダ 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が優先される。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。
id Path 必須 取得するサービスドメインのID

レスポンスパラメータ

GET api.opaas.io/service_domains/ の個々のサービスドメインのパラメータと同じ。

HTTPステータスコード

ステータスコード
200 正常終了
403 認証エラー
404 {id}のサービスドメインが存在しない
500 サーバー内部エラー

サンプル

リクエストサンプル

・GET GET https://api.opaas.io/api/v1/service_domains/{id}/?access_token=xxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "service_domain_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "name":"service domain 1", "title": "サービスドメイン1", "description": "サービスドメイン1の説明", "icon_url":"http://test.com", "tags": [ "test tag1", "test tag2" ], "reliability": 1, "email": "a@test.com", "telephone": "012-345-6789", "division": "test", "address": "Nagoya", "website": "http://web.com", "reg_date": "2018-09-08", "services": [ "00000000000000000000010000000003", "00000000000000000000010000000007", ] }

異常時(ユーザが管理者権限を持たない場合)

HTTPステータスコード

403

レスポンス内容

)

{ "status":"error", "message": "Request user is not administrator." }

サービスグループ一覧取得API ( GET api.opaas.io/service_groups )

サービスグループの一覧を取得する。サービスグループを利用することで、複数のサービスに対してパーソナルデータの提供を一括で設定できる。

認証ヘッダに付与されたアクセストークンに基づき、ユーザーIDを割り出す。

サービスグループ一覧の取得を行うにはアクセストークンから割り出したユーザがサービスグループに対する管理者権限を持つ必要がある。インフラ管理者はすべてのサービスグループを、サービスグループの管理者は自身が管理するサービスグループの一覧を取得できる。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization httpヘッダ 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が優先される。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。
service_group_id Query 任意 検索対象のサービスグループID。完全一致による検索を行う。複数指定する場合はカンマで区切る。
name Query 任意 検索対象のサービスグループ名称。部分一致による検索を行う。
title Query 任意 検索対象の表示用の名称。部分一致による検索を行う。
description Query 任意 検索対象のサービス説明。部分一致による検索を行う。
services Query 任意 検索対象に属するサービスID。完全一致による検索を行う。複数指定する場合はカンマで区切る。
keyword Query 任意 検索対象のキーワード。表示用の名称、サービスグループの説明から指定されたキーワードに部分一致するサービスグループを取得する。
reg_date_from Query 任意 履歴の日付による取得範囲の指定(開始日をYYYY-MM-DD形式で指定)
reg_date_to Query 任意 履歴の日付による取得範囲の指定(終了日をYYYY-MM-DD形式で指定)
start_pos Query 任意 検索結果のうち、start_posで指定した数以降のデータを取得する。最初のデータを1とする。省略した場合は1が設定されたものとみなす。
require_num Query 任意 取り出し件数の指定。省略時は全件とみなす。
sort_type Query 任意 ソート対象のパラメータを指定する。以下の値を設定可能。
複数指定する場合はカンマで区切り、前方指定項目が優先される。
reg_date_asc, reg_date_desc以外は先頭に - をつけることで降順にできる。
name: サービスグループのアルファベット表記でソートする(昇順)
title: サービスグループのユーザへの提示用の名前でソートする(昇順)
reg_date_asc: サービスグループの登録日付でソートする(昇順)
reg_date_des: サービスグループの登録日付でソートする(降順)
service_group_id: サービスグループのIDでソートする(昇順)
service_num: サービスグループに属するサービスの数でソートする(昇順)

レスポンスパラメータ

パラメータ 説明
total_num サービスグループの総数
start_pos 結果の取得開始位置
service_groups サービスグループのリスト

サービスグループのデータ構造

パラメータ 説明
service_group_id サービスグループのID
name サービスグループのアルファベット表記の名前
title ユーザーへの提示用のサービスグループの名前
description サービスグループの説明
icon_url サービスグループのアイコン
reg_date サービスグループの登録日
services サービスグループに属するサービスのIDのリスト

HTTPステータスコード

ステータスコード
200 正常終了
403 認証エラー
500 サーバー内部エラー

サンプル

リクエストサンプル

・GET GET https://api.opaas.io/api/v1/service_groups/?access_token=xxxxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "total_num": 1, "start_pos": 1 "service_groups": [{ "service_group_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "name":"service group 1", "title": "サービスグループ1", "description": "サービスグループ1の説明", "icon_url":"http://test.com", "reg_date": "2018-09-08", "services": [ "00000000000000000000010000000003", "00000000000000000000010000000007", ] }] }

異常時(ユーザが管理者権限を持たない場合)

HTTPステータスコード

403

レスポンス内容

)

{ "status":"error", "message": "Request user is not administrator." }

サービスグループ情報取得API ( GET api.opaas.io/service_groups/{id})

サービスグループの情報を取得する

認証ヘッダに付与されたアクセストークンに基づき、ユーザーIDを割り出す。

サービスグループの取得を行うにはアクセストークンから割り出したユーザがサービスグループに対する管理者権限を持つ必要がある。インフラ管理者または、サービスグループの管理者のみがサービスグループの情報を取得できる。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization httpヘッダ 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が優先される。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。
id Path 必須 取得するサービスグループのID

レスポンスパラメータ

GET api.opaas.io/service_groups/ の個々のサービスグループのパラメータと同じ。

HTTPステータスコード

ステータスコード
200 正常終了
403 認証エラー
404 {id}のサービスグループが存在しない
500 サーバー内部エラー

サンプル

リクエストサンプル

・GET GET https://api.opaas.io/api/v1/service_groups/{id}/?access_token=xxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "service_group_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "name":"service group 1", "title": "サービスグループ1", "description": "サービスグループ1の説明", "icon_url":"http://test.com", "reg_date": "2018-09-08", "services": [ "00000000000000000000010000000003", "00000000000000000000010000000007", ] }

異常時(ユーザが管理者権限を持たない場合)

HTTPステータスコード

403

レスポンス内容

)

{ "status":"error", "message": "Request user is not administrator." }

ユーザー登録API ( POST api.opaas.io/api/v1/users)

ユーザー登録を行うAPIである。 認証ヘッダに付与されたアクセストークンに基づき、サービスIDを割り出し、 サービスがパーソナルデータの編集権限を持つ場合のみ登録が可能である。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
Content-Type Header 必須 application/jsonを指定する
(パラメーター名無し) Body 必須 登録するユーザの情報をJSON形式で格納する。指定するユーザの情報は以下の通り。
・login_id ユーザのログインIDをメールアドレス形式で設定する。
・password 登録するユーザのパスワード
・user_status 登録するユーザのステータス。0と1を指定可能だが、現状ではこのパラメータは使用されない。

補足

GET accounts.opaas.io/oauth2/signup と異なり、本APIを実行することで直接ユーザの登録が行われる。その際に、login_id のメールアドレスの実在性のチェックは行われない。また、パスワードもこのAPIで直接設定する。

本APIはユーザのICカードの情報 (IDm) を設定することはできない。ユーザの IDm は PUT or PATCH api.opaas.io/api/v1/users/auth で編集する。

目的地等のパーソナルデータは PUT or PATCH api.opaas.io/api/v1/user_attirbutes で設定するため、本APIでは受け付けない

レスポンスパラメータ

登録に成功した場合、下記のパラメータがJSONのオブジェクト形式で返される。 なお、レスポンスパラメータにパスワードの情報は表示されない。

パラメータ 説明
org_id 登録したユーザーのID (Ucode)
login_id 登録したユーザーのログインID(メールアドレス)
user_status 登録したユーザーの状態(現時点では未使用)

HTTPステータスコード

ステータスコード
201 正常終了
400 パラメータエラー
401 トークンの設定が不正である
403 認証エラー
500 サーバー内部エラー

サンプル

リクエストサンプル

POST /api/v1/users Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxx Content-Type:application/json Content-Length: 61 {"login_id":"a@test.com","password":"xxxxxx","user_status":0}

レスポンスサンプル

正常時
HTTPステータスコード

201

レスポンス内容
{ "org_id": "xxxxxxxxxxxxxxxxxxxxxxxxxx", "login_id": "a@test.com", "user_status": "0" }

異常時(認証エラー。アクセストークンのサービスがパーソナルデータの編集権限を持たない場合)

HTTPステータスコード

403

レスポンス内容
{ "error": "error", "message": "Forbidden. Service xxxxxxx is not allowed to change user attribute." }

異常時(パラメーターエラー。login_idのユーザが既に登録されている場合)

HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "{'login_id': ['Authori User with this xxxxxxxxxxxxxxxxxxxx already exists.']}" }

異常時(パラメーターエラー。login_idがメールアドレスでない場合)

HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "{'login_id': ['Enter a valid email address.']}" }

ユーザー認証方式取得API ( GET api.opaas.io/api/v1/users/auth)

ユーザーの認証情報である、IDm と user_status(現時点ではこのパラメータは未使用) の情報を取得するAPIである。本APIでパスワードを取得することはできない。

認証ヘッダに付与されたアクセストークンに基づき、サービスID、ユーザーIDを割り出し、割り出したユーザの認証情報を変更する。

サービスがパーソナルデータの編集権限を持つ場合のみ情報の取得が可能である。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
access_token Query 必須(*) アクセストークンはQueryとして指定することも可能。httpヘッダと同時に指定した場合は、httpヘッダの値が有効となる。Queryで指定する場合は、token_typeがBearerのもののみを受け付け、access_token取得値のみ指定する。

レスポンスパラメータ

idm と user_status の値がJSONのオブジェクト形式で返される。

パラメータ 説明
user_status ユーザのステータス情報(現時点では未使用)
idm IDm

HTTPステータスコード

ステータスコード
200 正常終了
401 トークンの設定が不正である
403 認証エラー
500 サーバー内部エラー

サンプル

リクエストサンプル

・GET GET https://api.opaas.io/api/v1/users/auth?access_token=xxxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "idm": "zzzzzzzz", "user_status": "0" }

ユーザー認証情報変更API ( PUT or PATCH api.opaas.io/api/v1/users/auth)

ユーザーの認証情報である、パスワードとIDmを設定するAPIである。パスワードのみ、IDmのみの変更も可能である。

認証ヘッダに付与されたアクセストークンに基づき、サービスID、ユーザーIDを割り出し、割り出したユーザの認証情報を変更する。

サービスがパーソナルデータの編集権限を持つ場合のみ登録が変更である。

GET accounts.opaas.io/oauth2/resetpassword と異なり、本APIを実行することで直接ユーザのパスワードの変更が行われる。

本APIは、PUTとPATCHメソッドで同一の動作を行う。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
Content-Type Header 必須 application/jsonを指定する
(パラメーター名無し) Body 必須 変更するユーザの情報をJSON形式で格納する。指定するユーザの情報は以下の通り。
・old_password ユーザーの古いパスワードを指定する。指定された場合は古いパスワードが正しいかチェックするが、指定されなかった場合はチェックしない。
・new_password ユーザーの新しいパスワードを指定する。
・idm ユーザーの新しいIDmを指定する。現在のユーザが設定している値も含め、既存のユーザが設定しているIDmと同じ値を設定した場合はエラーとなる。

レスポンスパラメータ

変更した場合、変更後のパラメータがJSONのオブジェクト形式で返される。

パラメータ 説明
new_password 新しいパスワード
idm 新しいIDm

HTTPステータスコード

ステータスコード
200 正常終了
400 パラメータエラー
401 トークンの設定が不正である
403 認証エラー
500 サーバー内部エラー

サンプル

リクエストサンプル

PUT /api/v1/users Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxx Content-Type:application/json Content-Length: 70 {"old_password":"xxxxxxxx","new_password":"yyyyyyyy","idm":"zzzzzzzz"}

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "idm": "zzzzzzzz" }

パスワードを変更した場合、レスポンス内容には表示されない。

リクエストサンプル(パラメータを一つも設定しなかった場合)

PUT /api/v1/users Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxx Content-Type:application/json Content-Length: 2 {}

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{}
補足

パラメータを一つも設定しない場合でも、エラーとはしない。

異常時(パラメーターエラー。old_passwordに現在のパスワードと異なった値を指定した場合)

HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. Parameter old_password is invalid." }

異常時(パラメーターエラー。既に登録されているIDMを指定した場合)

HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter error. IDm xxx already exist." }

サービスへのパーソナルデータ提供ポリシー取得API ( GET api.opaas.io/api/v1/users/permissions )

自分自身のパーソナルデータをどのサービスに提供するかに関する設定状況を取得するAPIである。(ポータルアプリ等から呼び出されることを想定)

認証ヘッダに付与されたアクセストークンに基づき、サービスID、ユーザーIDを割り出す。

サービスがパーソナルデータの編集権限を持つ場合のみ取得が可能である。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization httpヘッダ 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
service_id Query 任意 検索対象のうち、type が service のものについて、IDによる完全一致による検索を行う。複数指定する場合はカンマで区切る。
service_domain_id Query 任意 検索対象のうち、type が service_domain のものについて、IDによる完全一致による検索を行う。複数指定する場合はカンマで区切る。
service_group_id Query 任意 検索対象のうち、type が service_group のものについて、IDによる完全一致による検索を行う。複数指定する場合はカンマで区切る。
reliability Query 任意 検索対象のうち、type が reliability のものについて、完全一致による検索を行う。
min_reliability Query 任意 検索対象のうち、type が reliability のものについて、指定した値以上のものの検索を行う。
reliability Query 任意 検索対象のうち、type が reliability のものについて、指定した値以下のものの検索を行う。
sort_type Query 任意 ソート対象のパラメータを指定する。auth_num または -authnum を設定可能。auth_num を設定した場合、許可するパーソナルデータの数でソートする(昇順)。-authnum の場合は降順でソートする。

レスポンスパラメータ

結果はJSONのオブジェクト形式で下記の表の内容を返す。

パラメータ名 説明
user_authorities 設定状況を表す配列。配列の各要素のデータ構造は下記の表を参照

user_authorities の配列の各要素(オブジェクト)の構造

パラメータ名 説明
type 設定の種類。service, service_domain, service_group, reliablity のいずれかの値を取り、type_id で設定される対象に、attrs で許諾されているパーソナルデータが提供される。同じパーソナルデータに対して複数の提供ポリシーが設定されている場合は、service > service_domain > service_group > reliability の順で優先度が最も高いものが使われる。
type_id 提供の対象。type が service の場合は service_id, service_domain の場合は servie_domain_id, service_group の場合は service_group_id、reliability の場合は、service_domain の信頼度の下限値が得られる
attrs パーソナルデータのアクセス権限の情報を表す配列。配列の各要素のデータ構造は下記の表を参照

attrs の配列の各要素(オブジェクト)の構造。attrs に表示されないパーソナルデータは、すべてtype, type_id の条件では許諾されていないものとみなされる。

パラメータ名 説明
attr_id パーソナルデータ名
authority パーソナルデータのアクセス権限。0:未設定、1: 許諾する、2:許諾しない のいずれかの値を取る。現時点の実装では、0と2は同義である。

HTTPステータスコード

ステータスコード
200 正常終了
400 パラメータエラー
401 トークンの設定が不正である
403 認証エラー
500 サーバー内部エラー

サンプル

リクエストサンプル

・GET GET https://api.opaas.io/api/v1/users/permissions/?access_token=xxxxxxxxx

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "user_authorities": [ { "type": "reliability", "type_id": "1", "attrs": [ { "attr_id": "gender", "authority": "1" }, { "attr_id": "age", "authority": "0" } ] } ] }

異常時(認証エラー時。サービスがパーソナルデータの編集権限を持たない場合)

HTTPステータスコード

403

レスポンス内容
{ "status": "error", "message": "Forbidden. Service xxxxxxxx is not allowed to change user attribute." }

サービスへの許諾変更API ( PUT or PATCH api.opaas.io/api/v1/users/permissions )

自分自身のパーソナルデータをどのサービスに提供するか設定する (ポータルアプリ等から呼び出されることを想定)

認証ヘッダに付与されたアクセストークンに基づき、サービスID、ユーザーIDを割り出す。

サービスがパーソナルデータの編集権限を持つ場合のみ設定が可能である。

本APIは、PUTとPATCHメソッドで同一の動作を行う。

リクエストパラメータ

パラメータ名 Path/Query/
Body/Header
必須/任意 複数指定可否 説明
Authorization Header 必須 トークン要求受付API (POST accounts.opaas.io/oauth2/token) で発行されたアクセストークン。トークン要求受付APIで発行されたtoken_typeとaccess_tokenを利用する。指定する値は、”[token_type取得値] [access_token取得値]”とする。
Content-Type Header 必須 application/jsonを指定する
(パラメーター名無し) Body 必須 どのサービスに提供するかを表すポリシーをJSON形式で格納する。指定する形式は、GET api.opaas.io/api/v1/users/permissions のレスポンスパラメータと同じである。
本APIは、user_authorities の配列で指定された以外の type の設定状況には影響を与えない。
user_authorities の配列内に、同じ type のデータを複数設定した場合は、最後に設定されたものが有効となる。

レスポンスパラメータ

レスポンスパラメータ

変更した場合、変更後のパラメータがJSONのオブジェクト形式で返される。

HTTPステータスコード

ステータスコード
200 正常終了
400 パラメータエラー
401 トークンの設定が不正である
403 認証エラー
500 サーバー内部エラー

サンプル

リクエストサンプル

PUT /api/v1/users/permissions Host: api.opaas.io Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxx Content-Type:application/json Content-Length: 144 {"user_authorities":[{"type":"reliability", "type_id":"1", "attrs":[{"attr_id":"gender", "authority": "1"},{"attr_id":"age", "authority": 2}]}]}

レスポンスサンプル

正常時
HTTPステータスコード

200

レスポンス内容
{ "user_authorities": [ { "type": "reliability", "type_id": "1", "attrs": [ { "attr_id": "gender", "authority": "1" }, { "attr_id": "age", "authority": 2 } ] } ] }
補足

上記の例の場合、type が reliability の設定状況のみ更新される(type が service, service_domain, service_group の設定状況には影響を与えない)。

異常時(認証エラー時。サービスがパーソナルデータの編集権限を持たない場合)

HTTPステータスコード

403

レスポンス内容
{ "status": "error", "message": "Forbidden. Service xxxxxxxx is not allowed to change user attribute." }

異常時(パラメータエラー時。user_authoritiesが存在しない場合)

HTTPステータスコード

400

レスポンス内容
{ "status": "error", "message": "Parameter user_authorities is required" }

モデル一覧

パーソナルデータ(user_attributes)

おもてなしパーソナルデータのモデルを記載します。

項目名 データ型 複数 説明
gender String 性別。とりうる値は、ISO 5218 で規定された区分を利用。
age String 年代。 とりうる値は、00,10,20,30,40,50,60,70,80,90。
native_language String 母国語。とりうる値は、IETF言語タグで規定された区分を利用。
priority_language Array[String] 優先言語。とりうる値は、IETF言語タグで規定された区分を利用。
destination Array[String] 目的地のリスト。とりうる値は","を含まない文字列。
arrival_airport String 到着空港。とりうる値は、IATA空港コード(3レターコード)とする。
departure_airport String 出発空港。とりうる値は、IATA空港コード(3レターコード)とする。
arrival_date String 到着日。"YYYY-MM-DD"形式で登録。
departure_date String 出発日。"YYYY-MM-DD"形式で登録。
user_interface Array[String] 希望するユーザーインタフェース。とりうる値は、コード表"希望するユーザーインタフェースに関わるコード"参照。
accessibilty Array[String] アクセシビリティに関する情報。とりうる値は、コード表"アクセシビリティに関する情報"参照。
food_and_drink_prohibition Array[String] 食の禁忌。とりうる値は、コード表"食の禁忌に関わるコード"参照。
food_preference Array[String] 食の嗜好。とりうる値は、コード表"食の嗜好に関わるコード"参照。2次リリースで追加予定。
email String メールアドレス。
first_name String アルファベット表記の名。
family_name String アルファベット表記の姓。
original_name String 母国語表記の名前。
country String 国。とりうる値は、ISO 3166-1(Alpha-3) で規定された区分を利用。
zip String 郵便番号。
state String アルファベット表記の都道府県。または、州。
city String アルファベット表記の市区町村。
address_line_1 String アルファベット表記の住所1(番地など)。
address_line_2 String アルファベット表記の住所2(アクセスなど)。
original_address String 母国語表記の住所。
year_of_birth String 生年月日の西暦年。
month_of_birth String 生年月日の月。
day_of_birth String 生年月日の日。
telephone String 電話番号。
passport_country String パスポートの発行国。とりうる値は、国際民間航空機関(ICAO)で発行されている“ICAO Doc9303“で規定されている内容に準拠した国を示すコード(3-letter code)である。MRZからの読み取り値のみ提供する。
passport_name String パスポート記載の氏名。MRZからの読み取り値のみ提供する。
passport_number String パスポート記載の旅券番号。MRZからの読み取り値のみ提供する。
passport_gender String パスポート記載の旅券者の性別。MRZからの読み取り値のみ提供する。
passport_birth String パスポート記載の旅券者の生年月日。"YYYY-MM-DD"形式で登録。MRZからの読み取り値のみ提供する。
passport_nationality String パスポート記載の国籍情報。とりうる値は、国際民間航空機関(ICAO)で発行されている“ICAO Doc9303“で規定されている内容に準拠した国を示すコード(3-letter code)である。MRZからの読み取り値のみ提供する。
issue_date String パスポート記載の旅券発行年月日。とりうる値は、"YYYY-MM-DD"形式で登録。
term_of_validity String パスポート記載の旅券有効期限年月日。とりうる値は、MRZからの読み取り値のみ提供し、"YYYY-MM-DD"形式で登録。
entry_date String パスポート記載の上陸年月日。とりうる値は、"YYYY-MM-DD"形式で登録。
qualification_for_stay String パスポート記載の在留資格。
passport_mrz String パスポート記載のパスポートの旅券情報(機械読み取り部分)。とりうる値は、国際民間航空機関(ICAO)で発行されている“ICAO Doc9303“で規定されている44桁2行で構成される旅券情報部分の文字列情報(MRZ)を提供する。
passport_image String パスポートの写しファイル。とりうる値は、取得可能なURLを発行。取得したURLの有効期限は10分で、それ以降は再度 GET user_attributes でURLを取得する必要がある。
common_id String パーソナルデータを他のサービスにリンクさせる際に使用するID

ルール情報(Rule)

ルール情報のモデルを記載します。

ルール項目名 データ型 複数 説明
rule_id String ルールID。ルール情報を識別するコード。
service_domain_id String サービスドメインID。ルール情報を登録・使用できるサービスドメインID。
name String ルールを識別する名称。
description String ルールの説明内容。
source String 変換元のパーソナルデータの項目名。
destination String 変換先のパーソナルデータの項目名。
type String ルール変換する属性タイプ。とりうる値は、same(無変換)、eval(スクリプト)、url(外部のAPI使用)を設定。
request_option Object リクエストオプションモデル。type=urlのときのみ返す。
script String スクリプト。type=evalのときのみ返す。とりうる値は、ルール変換のJavaScriptコードを取得。

リクエストオプション(request_option)

ルール情報の中で外部サービスのAPI使用でセマンティクス変換する際に利用するリクエストオプションのモデルを記載します。

ルール項目名 データ型 複数 説明
method String メソッド。とりうる値は、GETのみ。
requestBody String リクエストボディ。
location String 変換URL。とりうる値は、プロトコル(http)を含むルール変換URL。${source}で変換元パーソナルデータを埋め込む。

コード一覧

希望するユーザーインタフェースに関わるコード

コード ユーザーインタフェース 英語名 備考
screen 画面表示 screen information
voice 音声案内 voice guidance
sign_language 手話案内 sign language

アクセシビリティに関する情報

コード アクセシビリティの条件 英語名 備考
wheelchair 車いす wheelchair
deafness deafness
blindness blindness
stroller ベビーカー stroller
senior 高齢者 senior citizens
pregnant 妊婦 pregnant woman
injured 負傷者 injured person 松葉杖など、歩行に困難な方

食の禁忌に関わるコード

コード アレルギー種類 英語名 備考
NO-ASHR えび no shrimp 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ACRA かに no crab 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AWHE 小麦 no wheat 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ABUC そば no buck wheat 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AEGG no egg 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ADAI 乳製品 no Dairy products 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-PEAN 落花生 no peanut 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AABA あわび no abalone 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ASQU いか no squid 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-SALR いくら no salmon roe 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AORA オレンジ no orange 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ACAS カシューナッツ no cashew nut 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AKIW キウイフルーツ no kiwi 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ABEE 牛肉 no beef 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AWAL くるみ no walnut 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ASES ごま no sesame 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-SALM さけ no salmon 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AMAC さば no mackerel 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ASOY 大豆 no soy 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ACHI 鶏肉 no chicken 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ABAN バナナ no banana 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-APOR 豚肉 no pork 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AMAT まつたけ no matsutake mushroom 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-PEAC もも no peach 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-ATAR やまいも no taro 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AAPP りんご no apple 農林水産省で指定されている特定原材料等27品目で指定されている品物
NO-AGEL ゼラチン no gelatin 農林水産省で指定されている特定原材料等27品目で指定されている品物
VLML ベジタリアン vegetarian 肉類や魚類は使用しない食事(卵や乳製品は使用する)
VGML ビーガン vegan 肉、魚、卵、乳製品、蜂蜜など動物由来の食品は一切使用しない食事
HNML ヒンズー教 hindu 牛肉の他、豚肉も避けますが、茹でた魚、鶏肉、羊肉、魚介類、米、フルーツ等を使用する食事(調理の際のアルコールは使用しない)
MOML イスラム教 islam 豚肉を使用した製品、ゼラチン、お酒、アルコールより抽出された香味成分、うろこやひれの無い海洋生物の肉は使用しない食事
JUML ユダヤ教 judaism ユダヤの掟によって調理され、祈りを捧げられたユダヤ正教信者の食事
VJML ジャイナ教 jainism 肉・魚・卵・乳製品など動物性のものに加え、根菜も使用していない食事
DBML 糖尿病 diabetes 糖尿病患者向けに調理された食事
LSML 低塩 Low salt 減塩調理された食事を好む人向けに調理された食事
LFML 低脂肪 low fat diet 低脂肪調理された食事を好む人向けに調理された食事
LCML 低カロリー low calory 低カロリー調理された食事を好む人向けに調理された食事
GFML グルテンフリー gluten-free グルテンを含まない食材で調理された食事

食の嗜好に関わるコード

コード 嗜好の種類 英語名 備考
DL-SPCI 辛いもの(苦手) spicy (dislike) 辛い食べ物が苦手な方が選択する項目
DL-BITT 苦いもの(苦手) bitter (dislike) 苦い食べ物が苦手な方が選択する項目
DL-SOUR 酸っぱいもの(苦手) sour (dislike) 酸っぱい食べ物が苦手な方が選択する項目
DL-RAWF 生もの(苦手) raw food(dislike) 生もの(加熱調理されていない)の食べ物が苦手な方が選択する項目