Maximo REST API（MXAPIWO）で作業指示書データを取得する方法

## はじめに

IBM Maximoは、資産管理や保全業務を効率化するための強力なプラットフォームです。  
その中で、REST APIを利用することで、他システムとの連携や自動化が可能になります。

本記事では、Maximoの「作業指示書API（MXAPIWO）」を使って情報を取得する手順をご紹介します。

## 前提条件

以下の環境・設定を前提とします。

- Maximo Manage 8 以降のバージョンを使用していること
- 管理者ユーザー（`maxadmin`）で操作を行うこと

## ゴール

この記事のゴールは、**作業指示書の情報をAPI経由で取得すること**です。  
具体的には、MaximoのREST APIでオブジェクト構造 `MXAPIWO` にアクセスし、作業指示書情報を取得します。

あわせて、必要な設定とコードスニペットもご紹介します。

## 手順概要

まずは、APIを使うまでの全体像を把握しましょう。  
具体的な操作方法は後ほど詳しく解説します。

1. APIキーの発行  
2. セキュリティグループにオブジェクト構造（MXAPIWO）のアクセス権を付与  
   - ※設定変更後はログアウトしないと反映されないため注意  
3. 発行したAPIキーを使ってAPIにリクエストを送信  

## 詳細な手順

### 1. APIキーの発行

サイドメニューの「統合」→「APIキー」から、「APIキーの追加」を選択します。  
ここで新しいAPIキーを発行できます。

![APIキーの追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/f8f28d41-6145-44e0-9c6b-4290291f6321.png)

### 2. セキュリティ設定

APIから `MXAPIWO` のデータにアクセスするには、**対象ユーザーが属するセキュリティグループにアクセス権限を付与**する必要があります。

#### 2-1. セキュリティグループの検索

サイドメニューの「セキュリティー」→「セキュリティー・グループ」へ移動します。

ここでは、APIを呼び出すユーザー（今回は `maxadmin`）が所属するセキュリティグループ（今回は `MAXADMIN`）を選択します。

![セキュリティグループの検索](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/4faf87f3-632b-4e1b-90b8-a211a8a5ee5f.png)

#### 2-2. オブジェクト構造の権限設定

「オブジェクト構造」タブを開きます。  
フィルターアイコンから `MXAPIWO` を検索し、対象の行を選択します。

![MXAPIWOの選択](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/b6d0481e-d27d-45a1-874c-687c7c4656b0.png)

#### 2-3. アクション権限と属性権限を設定

下にスクロールすると、以下の2つの権限設定欄があります。

- 上：アクションの権限（GET, POST, PUT, DELETE）
- 下：データ項目ごとの権限

今回は、すべて許可して保存します。

![権限の設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/2241ed08-d36f-48f4-82cd-a4c29658841c.png)

#### 2-4. 設定の反映（ログアウト）

⚠ **セキュリティ設定の変更を反映させるには、一度ログアウトが必要**です。  
Maximoではセッション中に権限変更が反映されないため注意しましょう。

![ログアウト](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/7e626540-a838-4394-a2e7-a3b128fed035.png)

### 3. APIを呼び出す

OpenAPI（Swagger UI）でAPI定義を確認できます。

URL末尾に `/maximo/api.html` を付けてアクセスしてください。  
例：`https://your-environment.com/maximo/api.html`

出典: [IBM Maximo REST API](https://developer.ibm.com/apis/catalog/maximo--maximo-manage-rest-api/Introduction)

![Swagger UI画面1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/3d543cbc-a8c9-4f1a-b2c3-4df43d574a1e.png)  
![Swagger UI画面2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/c7ac5292-2350-4cca-b27c-71dc1324acb2.png)

### 4. cURLで呼び出してみる

以下のcURLコマンドで、`MXAPIWO` の情報を取得できます。  
`your-api-key` と `your-environment.com` は自身の環境に置き換えてください。

```zsh
curl -X GET "https://masworkspace.manage.your-environment.com/maximo/api/os/mxapiwo" \
     -H "accept: application/json" \
     -H "apikey: your-api-key" \
     --insecure \
     --get \
     --data-urlencode "oslc.where=wonum=1318" \
     --data-urlencode "oslc.select=wonum,siteid,description,assetnum,failurecode,problemcode,jpnum,wopriority,estdur,status,status_description" \
     --data-urlencode "lean=1"
```

### 5. 返り値の例

```json
{
  "member": [
    {
      "_rowstamp": "1498977",
      "status_description": "Waiting on approval",
      "worklog_collectionref": "http://localhost/maximo/api/os/mxapiwo/_QkVERk9SRC8xMzE4/modifyworklog",
      "failurecode": "PUMPS",
      "assetnum": "11430",
      "description": "作業指示書作成デモ8888",
      "siteid": "BEDFORD",
      "href": "http://localhost/maximo/api/os/mxapiwo/_QkVERk9SRC8xMzE4",
      "estdur": 0.0,
      "status": "WAPPR",
      "wonum": "1318"
    }
  ],
  "href": "http://localhost/maximo/api/os/mxapiwo",
  "responseInfo": {
    "href": "https://masworkspace.manage.your-environment.com/maximo/api/os/mxapiwo?oslc.where=wonum%3d1318&oslc.select=wonum%2csiteid%2cdescription%2cassetnum%2cfailurecode%2cproblemcode%2cjpnum%2cwopriority%2cestdur%2cstatus%2cstatus_description&lean=1"
  }
}
```

## おわりに

MaximoではAPIを活用することで、外部連携や業務の自動化が可能になります。  
今回は、作業指示書API（`MXAPIWO`）の呼び出し手順をご紹介しました。

この方法は、他のオブジェクト構造にも応用可能です。たとえば、

- 資産（MXAPIASSET）
- 保守計画（MXAPIPM）

なども同様にアクセスできます。

今後は、作業指示の自動作成や進捗管理の自動化など、より高度な業務連携にもチャレンジしてみてください。
MaximoのREST APIを活用すれば、現場の業務効率化をさらに一歩進めることが可能です。

## 参考リンク

- Maximo 製品情報  
  https://www.ibm.com/jp-ja/products/maximo

- Maximo REST API（IBM Developer）  
  https://developer.ibm.com/apis/catalog/maximo--maximo-manage-rest-api/Introduction