# MDM One MH API

- 概要
  - はじめに
  - リクエスト
  - レスポンス
  - 凡例
- APIリスト
  - スケジュール一覧取得
  - スケジュール実行
  - スケジュールモニター一覧
  - スケジュールモニター履歴一覧
  - スケジュールリクエスト詳細

## 概要

### はじめに

MDM One MH APIとは、MDM One MH の特定の機能をさまざまな言語からWeb経由で呼び出すためのAPIです。
MDM One MH APIを使用するためには、MDM One MH のAPI設定が有効である必要があります。また、MDM One MH で発行したAPIキーが必要です。

#### MDM One MH のAPI設定を有効にする

1. マスターポータルでログインします。
2. 「設定」タブの「サーバー設定」を表示します。
3. 「API設定」を選択します。
4. 「API設定」項目で「有効にする」を選択し、「更新」をクリックします。

初めてAPI設定を有効にした場合はAPIキーが発行され、下部「APIキー」項目に表示されます。

#### APIキーを入手する

初めてAPIキーを発行する場合は、上記「MDM One MH のAPI設定を有効にする」の手順で発行されます。APIキーを再発行する場合は、上記手順を参考にしてマスターポータルで「API設定」画面を表示し、下部にある「APIキー」項目のチェックボックスをクリックします。「APIキー」項目に新しいAPIキーが表示されます。

#### APIキーを使用する

APIを使用する時に、パラメーターapikey=APIキーを設定してください。

### リクエスト

リクエストのURLは以下のような形式です。

    https://[ホスト名]:[ポート番号]/mdmapi/[API指定]/[レスポンスタイプ]

ホスト名 | マスターポータルのホスト名を指定します。
ポート番号 | マスターポータルのポート番号を指定します。インストール時のデフォルト値は26443です。インストール時に変更した場合は、変更したポート番号を指定してください。
API指定 | MDM One MH APIのパスを指定します。APIリストを参照してください。
レスポンスタイプ | xml,json,htmのいずれかを指定します。 マスターポータルが返すレスポンスは、XML(text/xml), JSON(text/javascript) ,HTML(text/html)の３つのコンテントタイプがあります。省略可能で、省略した場合はXMLになります。

それぞれのAPIサービスを使用するにはHTTPメソッドを指定します。

- GET:閲覧用メソッド
- POST:新規作成用メソッド
- PUT:更新用メソッド
- DELETE:削除用メソッド

### レスポンス

リクエストで指定されたレスポンスタイプ（XML,JSON,HTML）のいずれかの形式で返ります。
例えば、スケジュール一覧取得（list）のリクエストに対するレスポンスはそれぞれ以下のようになります。（サーバーアドレスはhostname、ポート番号は26443とします）

#### レスポンスがXML

    ＜リクエストURL＞
    https://hostname:26443/mdmapi/schedules/xml

    <?xml version="1.0" encoding="UTF-8"?>
    <Schedules>
    	<Schedule>
    		<Id>sc_00003</Id>
    		<Name>スケジュール１</Name>
    		<Status>Stop</Status>
    		<Description>説明の文章です</Description>
    		<NextDate>2008-03-12T00:00:00.000 JST</NextDate>
    	</Schedule>
    	<Schedule>
    		<Id>sc_00004</Id>
    		<Name>スケジュール２</Name>
    		<Status>Running</Status>
    		<Description>２番目の説明です</Description>
    		<NextDate>2008-03-12T00:00:00.000 JST</NextDate>
    	</Schedule>
    </Schedules>

#### レスポンスがJSON

    ＜リクエストURL＞
    https://hostname:26443/mdmapi/schedules/json

    {"Schedules":
       {"Schedule":
          [
             {"Name":"スケジュール１","Status":"Stop","Description":"説明の文章です","NextDate":"2008-03-12T00:00:00.000 JST","Id":"sc_00003"},
             {"Name":"スケジュール２","Status":"Running","Description":"２番目の説明です","NextDate":"2008-03-12T00:00:00.000 JST","Id":"sc_00004"}
          ]
       }
    }

#### レスポンスがHTML

    ＜リクエストURL＞
    https://hostname:26443/mdmapi/schedules/htm

    <?xml version="1.0" encoding="UTF-8"?>
    <table>
    	<tr>
    		<td>sc_00003</td>
    		<td>スケジュール１</td>
    		<td>Stop</td>
    		<td>2008-03-12T00:00:00.000 JST</td>
    		<td>説明の文章です</td>
    	</tr>
    	<tr>
    		<td>sc_00004</td>
    		<td>スケジュール２</td>
    		<td>Running</td>
    		<td>2008-03-12T00:00:00.000 JST</td>
    		<td>２番目の説明です</td>
    	</tr>
    </table>

### 凡例

APIリストの凡例は以下になります。

URL | APIのURL
説明 | APIの説明
リクエスト | リクエストで設定できるパラメータ
レスポンス | レスポンスノードの説明

## APIリスト

### スケジュール一覧取得

URL | https://[hostname]:[port]/mdmapi/schedules
説明 | スケジュール一覧のリストを返します
リクエスト | get:メソッド
パラメータ | 説明
--- | ---
--- | 指定できるパラメータはありません
レスポンス |
ノード | 説明
Schedules | ルートエレメントになります
Schedule | スケジュール情報セットエレメント
Id | スケジュールID
Name | スケジュール名
Status | Running:開始状態、Stop:停止状態
NextDate | 次回実行予定時間、Stopのときは属性に isnull="true" が設定され値は設定されません
Description | スケジュールの説明
    ＜リクエスト＞
    GET /mdmapi/schedules/xml HTTP/1.1
    Accept: */*
    Accept-Language: ja
    UA-CPU: x86
    Accept-Encoding: gzip, deflate
    User-Agent: libwww-perl/5.805
    Host: localhost:26443
    Connection: Keep-Alive
    X-MDMONEMHWEBAPI: 009e3ad5-cfe1-4561-b509-1adf8f3460ad-0b5caef973e5c8bd14175d4399e0eca7

    ＜レスポンス＞
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=UTF-8
    Content-Length: 445
    Server: ASTERIA HTTP Daemon/1.01
    Date: Tue, 11 Mar 2008 07:35:25 GMT
    Connection: close
    Set-Cookie: SESSIONID=81FB5D56776C4C15A8B0898201EB8819;Path=/

    <?xml version="1.0" encoding="UTF-8"?>
    <Schedules>
    	<Schedule>
    		<Id>sc_00003</Id>
    		<Name>スケジュール１</Name>
    		<Status>Stop</Status>
    		<Description>説明の文章です</Description>
    		<NextDate>2008-03-12T00:00:00.000 JST</NextDate>
    	</Schedule>
    	<Schedule>
    		<Id>sc_00004</Id>
    		<Name>スケジュール２</Name>
    		<Status>Running</Status>
    		<Description>２番目の説明です</Description>
    		<NextDate>2008-03-12T00:00:00.000 JST</NextDate>
    	</Schedule>
    </Schedules>

### スケジュール実行

URL | https://[hostname]:[port]/mdmapi/execschedule
説明 | スケジュールを実行します。idで実行するスケジュールを指定します
リクエスト | post:メソッド
パラメータ | 説明
--- | ---
id | 実行するスケジュールのID
レスポンス |
ノード | 説明
ExecuteResponse | ルートエレメントになります
Status | 実行結果のステータスが設定されます。
OK | 実行に成功しました
NG | 実行に失敗しました
Running | 実行中のため実行できませんでした
RequestId | 成功した場合、リクエストIDが入ります
Message | メッセージが入ります
    ＜リクエスト＞
    POST /mdmapi/execschedule/xml HTTP/1.1
    Accept: */*
    Referer: https://localhost:26443/test.html
    Accept-Language: ja
    Content-Type: application/x-www-form-urlencoded
    UA-CPU: x86
    Accept-Encoding: gzip, deflate
    User-Agent: libwww-perl/5.805
    Host: localhost:26443
    Content-Length: 88
    Connection: Keep-Alive
    Cache-Control: no-cache
    X-MDMONEMHWEBAPI: 009e3ad5-cfe1-4561-b509-1adf8f3460ad-0b5caef973e5c8bd14175d4399e0eca7

    id=sc_00004

    ＜レスポンス＞
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=UTF-8
    Content-Length: 118
    Server: ASTERIA HTTP Daemon/1.01
    Date: Tue, 11 Mar 2008 07:24:39 GMT
    Connection: close
    Set-Cookie: SESSIONID=8678376B3D2F4F0F922ACB13D147AFA9;Path=/

    <?xml version="1.0" encoding="UTF-8"?>
    <ExecuteResponse>
    <Status>OK</Status>
    <Message>Success</Message>
    </ExecuteResponse>

### スケジュールモニター一覧

URL | https://[hostname]:[port]/mdmapi/monitorlist
説明 | スケジュール単位で最新４つリクエストの一覧を表示します
リクエスト | get:メソッド
パラメータ | 説明
--- | ---
--- | 指定できるパラメータはありません
レスポンス |
ノード | 説明
Monitor | ルートエレメントになります
Schedule | スケジュール
Id | ルートエレメントになります
Name | ルートエレメントになります
Requests | ルートエレメントになります
Request | ルートエレメントになります
    ＜リクエスト＞
    GET /mdmapi/monitorlist/xml HTTP/1.1
    TE: deflate,gzip;q=0.3
    Connection: TE, close
    Host: 192.168.5.165:26443
    User-Agent: libwww-perl/5.805
    Content-Type: application/x-www-form-urlencoded
    X-MDMONEMHWEBAPI: 009e3ad5-cfe1-4561-b509-1adf8f3460ad-0b5caef973e5c8bd14175d4399e0eca7

    ＜レスポンス＞
    Content-Type: text/xml; charset=UTF-8
    Content-Length: 1118
    Server: ASTERIA HTTP Daemon/1.01
    Date: Tue, 11 Mar 2008 07:59:40 GMT
    Connection: close

    <?xml version="1.0" encoding="UTF-8"?>
    <Monitor>
        <Schedule>
            <Id>sc_00003</Id>
            <Name>スケジュール１</Name>
            <Requests>
                <Request>
                    <RequestId></RequestId>
                    <Status>WAITING</Status>
                    <StartTime isnull="true" />
                    <EndTime isnull="true" />
                    <ExecTime>0</ExecTime>
                </Request>
                <Request>
                    <RequestId>2008-03-10-000010</RequestId>
                    <Status>CANCEL</Status>
                    <StartTime>2008-03-10T22:16:59.658 JST</StartTime>
                    <EndTime isnull="true" />
                    <ExecTime>25896</ExecTime>
                </Request>
                <Request>
                    <RequestId>2008-03-07-000007</RequestId>
                    <Status>CANCEL</Status>
                    <StartTime>2008-03-07T17:35:59.382 JST</StartTime>
                    <EndTime isnull="true" />
                    <ExecTime>422</ExecTime>
                </Request>
                <Request>
                    <RequestId>2008-03-05-000006</RequestId>
                    <Status>CANCEL</Status>
                    <StartTime>2008-03-05T18:53:32.936 JST</StartTime>
                    <EndTime isnull="true" /><ExecTime>31</ExecTime>
                </Request>
            </Requests>
        </Schedule>
        <Schedule>
            <Id>sc_00004</Id>
            <Name>スケジュール２</Name>
            <Requests>
                <Request>
                    <RequestId>2008-03-11-000011</RequestId>
                    <Status>RETRYWAITING</Status>
                    <StartTime>2008-03-11T16:24:39.438 JST</StartTime>
                    <EndTime isnull="true" />
                    <ExecTime>343</ExecTime>
                </Request>
            </Requests>
        </Schedule>
    </Monitor>

### スケジュールモニター履歴一覧

URL | https://[hostname]:[port]/mdmapi/monitorhistory
説明 | 指定したスケジュールのリクエスト履歴一覧を表示されます
リクエスト | get:メソッド
パラメータ | 説明
--- | ---
scheduleid | 表示するスケジュールのID
max | 表示する最大件数 1 - 100
page | ページ番号
レスポンス |
ノード | 説明
Monitor | ルートエレメントになります
Id | スケジュールID
Name | スケジュール名
Requests | リクエスト一覧
Request | リクエスト
Id | リクエスト
Status | リクエストのステータス
WAITING | 次回実行時刻まで待機中
PROCESSING | 実行中
RETRYWAITING | リトライ待ち
SUCCESS | 正常終了
FAILURE | 異常終了
CANCEL | 強制終了
StartTime | 開始時刻
EndTime | 終了時刻
ExecTime | 実行時間 ミリsec
    ＜リクエスト＞
    GET /mdmapi/monitorhistory/xml?scheduleid=sc_00003&max=3 HTTP/1.1
    TE: deflate,gzip;q=0.3
    Connection: TE, close
    Host: 192.168.5.165:26443
    User-Agent: libwww-perl/5.805
    Content-Type: application/x-www-form-urlencoded
    X-MDMONEMHWEBAPI: 009e3ad5-cfe1-4561-b509-1adf8f3460ad-0b5caef973e5c8bd14175d4399e0eca7

    ＜レスポンス＞
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=UTF-8
    Content-Length: 606
    Server: ASTERIA HTTP Daemon/1.01
    Date: Tue, 11 Mar 2008 18:07:22 GMT
    Connection: close

    <?xml version="1.0" encoding="UTF-8"?>
    <Monitor>
        <Id>sc_00003</Id>
        <Name>スケジュール１</Name>
        <Requests>
            <Request>
                <Id></Id>
                <Status>WAITING</Status>
                <StartTime isnull="true" />
                <EndTime isnull="true" />
                <ExecTime>0</ExecTime>
            </Request>
            <Request>
                <Id>2008-03-11-000029</Id>
                <Status>CANCEL</Status>
                <StartTime>2008-03-11T19:25:17.258 JST</StartTime>
                <EndTime isnull="true" />
                <ExecTime>10031</ExecTime>
            </Request>
            <Request>
                <Id>2008-03-11-000028</Id>
                <Status>CANCEL</Status>
                <StartTime>2008-03-11T19:25:00.597 JST</StartTime>
                <EndTime isnull="true" />
                <ExecTime>7051</ExecTime>
            </Request>
        </Requests>
        <Next>1</Next>
    </Monitor>

### スケジュールリクエスト詳細

URL | https://[hostname]:[port]/mdmapi/monitordetail
説明 | スケジュールリクエスト詳細を表示します
リクエスト | get:メソッド
パラメータ | 説明
--- | ---
scheduleid | スケジュールIDを指定します
requestid | リクエストIDを指定します
eachjob | true:ジョブ履歴をジョブ毎に表示します , false:ジョブ履歴をまとめて表示します
レスポンス |
ノード | 説明
Monitor | ルートエレメントになります
Id | スケジュールID
Name | スケジュール名
Requests | リクエスト一覧
Request | リクエスト
Id | リクエスト
Status | リクエストのステータス
WAITING | 次回実行時刻まで待機中
PROCESSING | 実行中
RETRYWAITING | リトライ待ち
SUCCESS | 正常終了
FAILURE | 異常終了
CANCEL | 強制終了
StartTime | 開始時刻
EndTime | 終了時刻
ExecTime | 実行時間 ミリsec
JobStatus | 現在のジョブのステータス
Job | ジョブ情報
Id | ジョブID
Name | ジョブ名
Status | ジョブステータス
SubStatus | サブジョブステータス
MasterProfileId | マスタープロファイルID
MasterProfileName | マスタープロファイル名
StartTime | 開始時刻
EndTime | 終了時刻
ExecTime | 実行時間 ミリsec
Insert | Insert件数
Update | Update件数
Delete | Delete件数
JobHistory | 現在のジョブのステータス
Job | ジョブ情報
History | ジョブ履歴
Id | ジョブID
Status | ジョブステータス
SubStatus | サブジョブステータス
LastModified | 更新日付
    ＜リクエスト＞
    GET /mdmapi/monitordetail/xml?scheduleid=sc_00003&requestid=2008-03-11-000029 HTTP/1.1
    TE: deflate,gzip;q=0.3
    Connection: TE, close
    Host: 192.168.5.165:26443
    User-Agent: libwww-perl/5.805
    Content-Type: application/x-www-form-urlencoded
    X-MDMONEMHWEBAPI: 009e3ad5-cfe1-4561-b509-1adf8f3460ad-0b5caef973e5c8bd14175d4399e0eca7

    ＜レスポンス＞
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=UTF-8
    Content-Length: 3507
    Server: ASTERIA HTTP Daemon/1.01
    Date: Tue, 11 Mar 2008 18:30:34 GMT
    Connection: close

    <?xml version="1.0" encoding="UTF-8"?>
    <Monitor>
        <Id>sc_00003</Id>
        <Name>スケジュール１</Name>
        <RequestId>2008-03-11-000029</RequestId>
        <Status>CANCEL</Status>
        <StartTime>2008-03-11T19:25:17.258 JST</StartTime>
        <EndTime>1970-01-01T09:00:00.000 JST</EndTime>
        <ExecTime>10031</ExecTime>
        <JobStatus>
            <Job>
                <Id>mp_00002_center_00001</Id>
                <Name>ソースからセンターへのコピー</Name>
                <Status>Cancel</Status><SubStatus>None</SubStatus>
                <MasterProfileId>mp_00002</MasterProfileId><MasterProfileName>新規マスタープロファイル1</MasterProfileName>
                <StartTime>2008-03-11T19:25:17.258 JST</StartTime><EndTime>2008-03-11T19:25:27.289 JST</EndTime><ExecTime>0</ExecTime>
                <Insert>0</Insert><Update>0</Update><Delete>0</Delete>
    		</Job>
            <Job>
                <Id>mp_00002_target_00001</Id>
                <Name>センターからターゲットへのコピー</Name>
                <Status>Cancel</Status><SubStatus>None</SubStatus>
                <MasterProfileId>mp_00002</MasterProfileId><MasterProfileName>新規マスタープロファイル1</MasterProfileName>
                <StartTime isnull="true" /><EndTime isnull="true" /><ExecTime>0</ExecTime>
                <Insert>0</Insert><Update>0</Update><Delete>0</Delete>
            </Job>
        </JobStatus>
        <JobHistory>
            <Job>
                <History>
                    <Id>mp_00002_target_00001</Id>
                    <Status>Cancel</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:29.847 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>Cancel</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:29.847 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>Error</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:27.289 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>Processing</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:27.257 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>Starting</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:27.242 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>RetryStarting</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:27.242 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>RetryWaiting</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:25.105 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>Processing</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:25.089 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>Starting</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:25.073 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>RetryStarting</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:25.073 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>RetryWaiting</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:17.273 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>Processing</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:17.258 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>Starting</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:17.258 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_target_00001</Id>
                    <Status>Waiting</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:17.258 JST</LastModified>
                </History>
                <History>
                    <Id>mp_00002_center_00001</Id>
                    <Status>Waiting</Status><SubStatus>None</SubStatus>
                    <LastModified>2008-03-11T19:25:17.258 JST</LastModified>
                </History>
            </Job>
        </JobHistory>
    </Monitor>

    ※ eachjob=true の場合
    <JobHistory>
        <Job Id="mp_00002_center_00001">
            <History><Id>mp_00002_center_00001</Id> ... <LastModified>2008-03-11T19:25:29.847 JST</LastModified></History>
            <History><Id>mp_00002_center_00001</Id> ... <LastModified>2008-03-11T19:25:27.289 JST</LastModified></History>

                       :
                       :

            <History><Id>mp_00002_center_00001</Id> ... <LastModified>2008-03-11T19:25:17.258 JST</LastModified></History>
        </Job>
        <Job Id="mp_00002_target_00001">
            <History><Id>mp_00002_target_00001</Id> ... <LastModified>2008-03-11T19:25:29.847 JST</LastModified></History>
            <History><Id>mp_00002_target_00001</Id> ... <LastModified>2008-03-11T19:25:17.258 JST</LastModified></History>
        </Job>
    </JobHistory>

[ TOP ]