アプリケーション開発

ユーザー管理 API

Symphony では、他のユーザーに対して、自分のゲートウェイを経由してデバイスを操作する権限を与える枠組み (共有ユーザー) を提供しています。このユーザー管理 API では、自分自身のユーザー情報の管理に加え、共有ユーザーの管理の機能が提供されます。

共有ユーザーを生成するためには、いくつかの手順を踏む必要があります。まず、相手のユーザーから、共有ユーザー生成許可を与えてもらう必要があります。こちらから一方的に相手のユーザーを共有ユーザーにすることはできません。まず相手にあなたのユーザー ID (userId) を知らせる必要があります。相手のユーザーは、あなたに共有ユーザー登録許可を与えます。これを、相手があなたと Friendlyship を結ぶ、と言います。Friendlyship を結ぶためには、createFriendlyship() メソッドを使います (相手のユーザーが実行します)。

相手があなたと Friendlyship を結んだら、あなたは createShareUser() メソッドを使って、相手を共有ユーザーとして登録することができます。その際に、相手から、相手のユーザー ID (userId) を知らせてもらう必要があります。このように、共有ユーザー生成には、自分と相手とでそれぞれのユーザー ID (userId) を交換しておく必要がありますので、注意してください。

あなたは、共有ユーザーに対して、あなたのゲートウェイを通してあなたのデバイスの操作許可を与えることができます。その許可付与の詳細については、「 ロール管理 API」の章をご覧ください。

どのユーザーにどんな許可を与えたかは、getShareUserPermissions() メソッドで確認することができます。

getUser()

このメソッドは、共有ユーザー情報を取得します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 共有ユーザーのユーザー ID。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .build();

dSymphony.getUser(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null,
  "userInfo": {
    "userId": "WEdfn98Q",
    "userName": "花子"
  }
}

レスポンス情報のうち、主要な値の意味は以下のとおりです。

レスポンス
プロパティ名 説明
userInfo SymphonyArray ユーザー情報を表す UserInfo オブジェクト。

getMyUser()

このメソッドは、マイユーザ (自分のユーザー) 情報を取得します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドには、引数はありません。

サンプルコード
dSymphony.getMyUser().thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null,
  "userInfo": {
    "userId": "wNrFkaOg",
    "userName": "太郎"
  }
}

レスポンス情報のうち、主要な値の意味は以下のとおりです。

レスポンス
プロパティ名 説明
userInfo Object ユーザー情報を表す UserInfo オブジェクト。

updateMyUserName()

このメソッドは、マイユーザーの名前を変更します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userName String 必須 ユーザー名。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userName", "太郎")
    .build();

dSymphony.updateMyUserName(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null
}

getFriendlyships()

このメソッドは、Friendlyship を結んだユーザーの一覧を取得します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドには、引数はありません。

サンプルコード
dSymphony.getFriendlyships().thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null,
  "friendlyshipList": [
    {
      "userId": "WEdfn98Q",
      "userName": "花子"
    }
  ]
}

レスポンス情報のうち、主要な値の意味は以下のとおりです。

レスポンス
プロパティ名 説明
friendlyshipList Object ユーザー情報を表す UserInfo オブジェクトのリスト。

createFriendlyship()

このメソッドは、相手のユーザーと Friendlyship を結びます。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 Friendlyship を結ぶ相手ユーザーのユーザー ID
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .build();

dSymphony.createFriendlyship(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null
}

deleteFriendlyships()

このメソッドは、すべての Friendlyship を解除します。どのユーザーとも Friendlyship を結んでいない場合、このメソッドを呼び出すとエラーを返します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドには、引数はありません。

サンプルコード
dSymphony.deleteFriendlyships().thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null
}

getFriendlyship()

このメソッドは、Friendlyship を結んだユーザー情報を取得します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 Friendlyship を結んだ相手ユーザーのユーザー ID。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .build();

dSymphony.getFriendlyship(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null,
  "friendlyshipInfo": {
    "userId": "WEdfn98Q",
    "userName": "花子"
  }
}

レスポンス情報のうち、主要な値の意味は以下のとおりです。

レスポンス
プロパティ名 説明
friendlyshipInfo SymphonyArray ユーザー情報を表す UserInfo オブジェクト。

deleteFriendlyship()

このメソッドは、Friendlyship を結んだユーザーから Friendlyship を解除します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 Friendlyship を結んだ相手ユーザーのユーザー ID。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .build();

dSymphony.deleteFriendlyship(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null
}

getShareUsers()

このメソッドは、共有ユーザーの一覧を取得します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドには、引数はありません。

サンプルコード
dSymphony.getShareUsers().thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null,
  "sharingUserList": [
    {
      "userId": "PUBLIC_USER",
      "userName": "PUBLIC_USER",
      "isInvalid": false
    },
    {
      "userId": "WEdfn98Q",
      "userName": "花子",
      "isInvalid": false
    }
  ]
}

レスポンス情報のうち、主要な値の意味は以下のとおりです。

レスポンス
プロパティ名 説明
sharingUserList SymphonyArray ユーザー情報を表す UserInfo オブジェクトのリスト。

createShareUser()

このメソッドは、共有ユーザーを新規に生成します。リソースを共有させたいユーザーのユーザー ID を指定して共有ユーザーを登録しますが、このメソッドでいきなり共有ユーザーとして登録することはできません。事前に相手のユーザー側で、createFriendlyship() メソッドを使って、共有ユーザー生成の許可を与えてもらう必要があります。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 リソースを共有させたいユーザーのユーザー ID
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .build();

dSymphony.createShareUser(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null
}

deleteShareUsers()

このメソッドは、すべての共有ユーザーをまとめて削除します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドには、引数はありません。

サンプルコード
dSymphony.deleteShareUsers(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null
}

getShareUser()

このメソッドは、ユーザー ID から共有ユーザー情報を取得します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 共有ユーザーのユーザー ID。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .build();

dSymphony.getShareUser(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null,
  "sharingUserInfo": {
    "userId": "WEdfn98Q",
    "userName": "花子",
    "isInvalid": false
  }
}

レスポンス情報のうち、主要な値の意味は以下のとおりです。

レスポンス
プロパティ名 説明
sharingUserInfo SymphonyArray ユーザー情報を表す UserInfo オブジェクト。

updateShareUser()

このメソッドは、共有ユーザーの無効化・有効化を行います。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 共有ユーザー ID。
isInvalid Boolean 必須 true を指定すると無効に、false を指定すると有効にします。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .put("isInvalid", false)
    .build();

dSymphony.updateShareUser(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null
}

deleteShareUser()

このメソッドは、共有ユーザーを削除します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 共有ユーザーのユーザー ID。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .build();

dSymphony.deleteShareUser(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null
}

getShareUserRoles()

このメソッドは、共有ユーザーに付与したロール情報の取得します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 共有ユーザー ID。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .put("roleIdList", new SymphonyArray.Builder().add("rl-A68023F982DE365646789D50AEA0548A").build())
    .build();

dSymphony.getShareUserRoles(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null,
  "roleList": [
    {
      "roleId": "rl-A68023F982DE365646789D50AEA0548A",
      "roleName": "Hue Light #1 ON",
      "permissionList": [
        {
          "permissionId": "pm-992584384AD382C3B82DDDD3A606E8FB",
          "thingId": "th-A7E2F85D264D52E8F2EA0B507D8CCA57",
          "actionId": null,
          "policy": "DeviceFullAccess",
          "additional": {
            "term": [
              {
                "once": {
                  "from": "2018-03-01T00:00:00+09:00",
                  "to": "2018-04-01T00:00:00+09:00"
                },
                "weekly": null,
                "everyday": null
              }
            ],
            "location": [],
            "number": []
          }
        }
      ]
    }
  ]
}

レスポンス情報のうち、主要な値の意味は以下のとおりです。

レスポンス
プロパティ名 説明
roleList SymphonyArray ロール情報を表す RoleInfo オブジェクトのリスト。

setShareUserRoles()

このメソッドは、共有ユーザーにロールパーミッションをセットします。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 共有ユーザーのユーザー ID。
roleIdList SymphonyArray 任意 ロール ID のリスト。もしすべてのロールを解除したい場合は、空の配列を指定するか、または、このプロパティを引数として指定しないでください。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .put("roleIdList", new SymphonyArray.Builder().add("rl-A68023F982DE365646789D50AEA0548A").build())
    .build();

dSymphony.setShareUserRoles(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null
}

getShareUserPermissions()

このメソッドは、共有ユーザーに付与したパーミッションの取得します。このメソッドは、CompletableFuture オブジェクトを返します。

このメソッドは、以下のプロパティを持ったオブジェクトを引数に取ります。

パラメータ
プロパティ名 必須 説明
userId String 必須 共有ユーザー ID。
サンプルコード
SymphonyObject params = new SymphonyObject.Builder()
    .put("userId", "WEdfn98Q")
    .build();

dSymphony.getShareUserPermissions(params).thenAccept(obj -> {
    Log.d(TAG, obj.toString());
}).exceptionally(ex -> {
    Log.e(TAG, "", ex);
    return null;
});

このメソッドの実行が成功すると、コールバック関数には Symphony から返されたオブジェクトが引数に与えられます。

レスポンスの例
{
  "result": 0,
  "error": null,
  "permissionList": [
    {
      "permissionId": "pm-992584384AD382C3B82DDDD3A606E8FB",
      "roleId": "rl-A68023F982DE365646789D50AEA0548A",
      "thingId": "th-A7E2F85D264D52E8F2EA0B507D8CCA57",
      "actionId": null,
      "policy": "DeviceFullAccess",
      "additional": {
        "term": [
          {
            "once": {
              "from": "2018-03-01T00:00:00+09:00",
              "to": "2018-04-01T00:00:00+09:00"
            },
            "weekly": null,
            "everyday": null
          }
        ],
        "location": [],
        "number": []
      }
    }
  ]
}

レスポンス情報のうち、主要な値の意味は以下のとおりです。

レスポンス
プロパティ名 説明
permissionList SymphonyArray パーミッション情報を表す PermissionInfo オブジェクトのリスト。