Yamaha Network Organizer (YNO) 管理APIリファレンス

Yamaha Network Organizer (YNO) の管理APIリファレンスへようこそ。管理APIは、YNOマネージャーを外部システム (Webサービスやお客様ご自身で作成したアプリケーション) から利用するためのREST APIです。管理APIの概要については、YNO操作マニュアルを参照してください。本文書では、管理APIの基本となる利用方法と、サンプルを掲載しています。なお、記載内容は予告なく変更することがあります。あらかじめご了承ください。

基本情報

リクエストの形式

HTTPリクエストは以下の形式で送信します。

METHOD BASE_URL/PATH/PATH_PARAMETERS?QUERY_PARAMETERS
HEADER

BODY

各パラメーターには以下を指定してください。

  • METHOD: 各エンドポイントの仕様を参照してください。
  • BASE_URL: https://yno-mngapi.netvolante.jp
  • PATH: 各エンドポイントの仕様を参照してください。
  • PATH_PARAMETERS: 各エンドポイントの仕様を参照してください。
  • QUERY_PARAMETERS: 各エンドポイントの仕様を参照してください。
  • HEADER
    キー名説明
    X-Yamaha-YNO-MngAPI-KeyAPIキーを指定してください。

    管理APIは、APIキーを利用して認証を行います。APIキーは、YNOマネージャーのGUIで生成できます。生成方法は、YNO操作マニュアルの「APIキーを生成する」を参照してください。
    以下の場合、認証エラーになります。
    • APIキーが正しくない
    • APIキーが有効期間外
    X-Yamaha-YNO-MngAPI-Version管理APIには、エンドポイント全体で1つのバージョンが付与されています。HTTPクライアントは、リクエスト送信時に管理APIのバージョンを指定します。YNOマネージャーは実際に動作している管理APIのバージョンをレスポンスに含めて返却します。

    バージョンは「メジャーバージョン.マイナーバージョン」のフォーマットで管理されます。
    • マイナーバージョンは、エンドポイントに互換性のある変更が発生した場合に更新されます。(例: 1.1)
      • HTTPリクエストで指定されているマイナーバージョンが古い場合 (例: 1.0) でも、リクエストは受け付けられます。
      • 実際の処理は、新しいマイナーバージョンで動作します。
    • メジャーバージョンは、エンドポイントに互換性のない変更が発生した場合に更新されます。(例: 2.0)
      • メジャーバージョンが更新された場合、変更内容によって、HTTPクライアントの修正が必要になる場合があります。
      • 古いメジャーバージョン (例: 1.x) は、弊社が別途定める移行期間を経たのちに廃止されます。
      • HTTPクライアントが廃止されたバージョンを指定してリクエストを送信すると、エラーになります。

    HTTPリクエストでバージョンを指定しない場合、最新バージョンで動作します。
    Content-TypeHTTPメソッドがPOSTまたはPUTの場合、「application/json」を指定してください。
  • BODY: 各エンドポイントの仕様を参照してください。

ルーターを検索するAPIに送信するリクエストの例を以下に示します。この例では説明を簡略化するため、通常付与されるその他のHTTPヘッダーは省略しています。

POST https://yno-mngapi.netvolante.jp/routers/_search
X-Yamaha-YNO-MngAPI-Key: API_KEY
X-Yamaha-YNO-MngAPI-Version: 1.0
Content-Type: application/json

{}

ルーターを検索するAPIに送信するリクエストについて、言語ごとのサンプルは以下のとおりです。

■curl

curl -X POST \
--header "X-Yamaha-YNO-MngAPI-Key: API_KEY" \
--header "X-Yamaha-YNO-MngAPI-Version: 1.0" \
--header "Content-Type: application/json" \
--data "{}" \
https://yno-mngapi.netvolante.jp/routers/_search

■Python

from urllib import request, error
import json

url = "https://yno-mngapi.netvolante.jp/routers/_search"

headers = {
    "X-Yamaha-YNO-MngAPI-Key": "API_KEY",
    "X-Yamaha-YNO-MngAPI-Version": "1.0",
    "Content-Type": "application/json"
}

body = {}

req = request.Request(
    url,
    data=json.dumps(body).encode(),
    headers=headers,
    method="POST"
)
try:
    with request.urlopen(req) as res:
        print(res.read().decode("utf-8"))
except error.URLError as err:
    print(err.read().decode("utf-8"))

■Node.js

var request = require("request");

url = "https://yno-mngapi.netvolante.jp/routers/_search";

headers = {
    "X-Yamaha-YNO-MngAPI-Key": "API_KEY",
    "X-Yamaha-YNO-MngAPI-Version": "1.0",
    "Content-Type": "application/json"
};

body = {};

var options = {
    method: "POST",
    url: url,
    headers: headers,
    body: JSON.stringingify(body)
};

request(options, function (error, response) {
    if (error) {
        throw new Error(error);
    }
    console.log(response.body);
});

レスポンスの形式

HTTPレスポンスで返却される形式は以下のとおりです。

  • ステータスコード
    ステータスコードリクエストの結果
    2xx成功
    400失敗 (不正なリクエスト)
    401失敗 (APIキーによる認証エラー)
    403失敗 (IPアドレスによる認証エラー)
    404失敗 (リソースが見つからない)
    413失敗 (リクエストボディーのサイズが大きすぎる)
    414失敗 (リクエストURIが長すぎる)
    422失敗 (バリデーションエラー)
    429失敗 (リクエスト制限に達している)
    5xx失敗
  • ヘッダー
    キー名説明
    Content-Type「application/json」が返却されます。
    Retry-Afterステータスコードが「429」の場合に、リクエストが可能になるまでの秒数が返却されます。
  • ボディー
    プロパティ名説明
    Metaobject
    MngApiVersionstring実際に動作している管理APIのバージョンです。
    Dataobjectリクエストが「成功」した場合に、この値が追加されます。詳細は、各エンドポイントの仕様を参照してください。
    ErrorsArray of objectsリクエストが「失敗」した場合に、この値が追加されます。
    Codestringエラーの識別子です。
    Messagestringエラーの内容です。
    WarningsArray of objectsリクエストに対して警告がある場合に、この値が追加されます。この値はリクエストの処理結果が成功・失敗いずれの場合にも追加される可能性があります。レスポンスにこの値が含まれる場合、内容を確認し、必要な対応を実施してください。
    Codestring警告の識別子です。
    Messagestring警告の内容です。

以下は、ルーター検索APIへのリクエストに成功した場合に返却されるレスポンスボディーの例です。

{
  "Meta": {
    "MngApiVersion": "1.0"
  },
  "Data": {
    "Routers": [
      {
        "DeviceStatus": "Online",
        "ModelName": "NVR700W",
        "FirmwareRevision": "Rev.15.00.24",
        "DeviceDescription": "device05",
        "EndpointIpAddress": "192.168.1.1",
        "AssignedLabels": [
          "浜松本店"
        ],
        "SerialNumber": "M4Y000000",
        "AssignedUsers": [
          "customer01"
        ]
      }
    ]
  }
}

リクエストに失敗した場合、以下のように失敗した理由が返却されます。一部、理由を返却しないエラーもあります。その場合のボディーは空です。

{
  "Meta": {
    "MngApiVersion": "1.0"
  },
  "Errors": [
    {
      "Code": "INVALID_PROPERTY_TYPE",
      "Message": "0 is not of type 'string'."
    }
  ]
}

リクエストの制限

管理APIのリクエストには、以下の制限があります。

  • 1分あたりのAPIコール回数 (リクエスト回数): 180回まで
  • 1日あたりのAPIコール回数 (リクエスト回数): 30,000回まで
  • 1日あたりのデータ転送 (レスポンスのデータ量): 100MBまで

管理APIへのリクエスト結果が「失敗」の場合も、上記の制限に加算されます。制限を超えて管理APIにリクエストした場合、リクエストに失敗し、HTTPレスポンスのステータスコードに「429」が返却されます。

1日あたりの管理APIの使用状況は、YNOマネージャーのGUIの「管理API使用状況」画面で確認できます。


機能情報

ページネーション

情報を取得するエンドポイントでは、一度に取得できるデータ数に上限があります。すべてのデータを取得するためには、リクエストの送信が繰り返し必要な場合があります。

取得できるデータ数の上限を超えるようなリクエストを送信した場合、以下のデータが返却されます。

  • 取得上限までのデータ
  • 残りのデータを取得するためのパラメーター (NextPageToken)

NextPageTokenの値を、次のリクエストのPageTokenに指定して送信することで、続きのデータを取得できます。例えば、ルーターを検索するAPIは、以下のような手順で使用します。

  1. リクエストボディーに検索条件を指定してリクエストを送信する
  2. NextPageTokenが返却された場合、リクエストボディーにPageTokenを指定して再度リクエストを送信する
    ※PageToken以外のパラメーター (検索条件など) を指定する必要はありません。指定した場合、PageToken以外のパラメーターは無視されます。
  3. 再度NextPageTokenが返却された場合、リクエストボディーに新しいPageTokenを指定してリクエストを送信する
  4. NextPageTokenが返却されなくなるまで、PageTokenを指定したリクエストの送信を繰り返す

NextPageTokenには、5分間の有効期限があります。有効期限が切れてしまった場合、1のリクエストの送信からやりなおす必要があります。


ルーター

ルーターを検索する

管理しているルーターの情報を取得できます。

Authorizations:
X-Yamaha-YNO-MngAPI-Key
header Parameters
Content-Type
required
string
Value: "application/json"
X-Yamaha-YNO-MngAPI-Version
string
Example: 1.0

管理APIのバージョン

指定しない場合、最新バージョンで動作します。

Request Body schema: application/json
PageSize
integer [ 5 .. 100 ]
Default: 20

取得件数

object

取得条件

PageToken
string

続きのデータを取得するためのトークン

前回のリクエスト時に返却された「NextPageToken」の値を指定してください。PageTokenを指定した場合、他のパラメーターは無視されます。

Responses

Request samples

Content type
application/json
Example
{
  • "Query": {
    }
}

Response samples

Content type
application/json
Example
{
  • "Meta": {
    },
  • "Data": {
    }
}

タスク

タスクを使用することで、機器に特定のアクションを実行できます。

現在、タスクでは以下の機能を利用できます。

  • ルーターへのコマンド実行

タスクは非同期で実行されます。そのため、タスクの登録と実行結果の取得は別々のAPIにリクエストを送信する必要があります。以下の手順でタスクを実行します。

  1. タスクを登録する
    ・タスクを登録するAPI (POST /tasks) で、タスクを登録します。
    ・登録したタスクのTaskIdが返却されます。これは、タスクの実行結果を取得するときに使用します。
  2. TaskIdを使用して、タスクの実行結果を取得する
    ・タスクの実行結果を取得するAPI (GET /tasks/TaskId) で、タスクの実行結果を取得します。
    ・タスクの実行が完了するまで、実行結果を取得できません。そのため、実行結果を取得できるまで、リクエストを繰り返す必要があります。

タスクは、登録してから1日経過すると削除されます。

タスクを登録する

特定のアクションを実行するタスクを登録できます。

Authorizations:
X-Yamaha-YNO-MngAPI-Key
header Parameters
Content-Type
required
string
Value: "application/json"
X-Yamaha-YNO-MngAPI-Version
string
Example: 1.0

管理APIのバージョン

指定しない場合、最新バージョンで動作します。

Request Body schema: application/json
Type
required
string
Value: "ExecuteCommand"

タスクのタイプ

  • ExecuteCommand: コマンド実行
Timeout
integer [ 60 .. 1800 ]
Default: 900

タスクがタイムアウトになるまでの時間 (単位: 秒)

この時間内にタスクが実行されない場合、タスクの実行結果が「TIMEOUT」になります。

required
ExecuteCommand (object)

タスクの情報

Typeに応じて、指定する内容が異なります。

Responses

Request samples

Content type
application/json
Example
{
  • "Type": "ExecuteCommand",
  • "Parameters": {
    }
}

Response samples

Content type
application/json
{
  • "Meta": {
    },
  • "Data": {
    }
}

タスクの実行結果を取得する

登録されているタスクの実行結果を取得できます。

タスクが実行中の場合、HTTPレスポンスのステータスコード「202」が返却され、実行結果を取得できません。以下のいずれかの状態になると、ステータスコード「200」が返却され、実行結果を取得できます。

  • すべての機器でタスクの実行が完了する
  • Timeout の時間を過ぎる

タスクの実行結果は、タスクを登録してから1日経過すると削除されます。

Authorizations:
X-Yamaha-YNO-MngAPI-Key
path Parameters
TaskId
required
integer
Example: 10

タスクのID

タスクを登録したときに返却される「TaskId」の値を指定してください。

query Parameters
PageSize
integer [ 5 .. 100 ]
Default: 20
Example: PageSize=50

取得件数

PageToken
string
Example: PageToken=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890

続きのデータを取得するためのトークン

前回のリクエスト時に返却された「NextPageToken」の値を指定してください。PageTokenを指定した場合、他のパラメーターは無視されます。

header Parameters
X-Yamaha-YNO-MngAPI-Version
string
Example: 1.0

管理APIのバージョン

指定しない場合、最新バージョンで動作します。

Responses

Response samples

Content type
application/json
Example
{
  • "Meta": {
    },
  • "Data": {
    }
}