Skip to content

共通仕様

このページでは、TimeTracker NX Web APIの共通仕様について紹介します。

基本方針

TimeTracker NX Web APIにおけるメソッド毎の共通的なふるまいは以下のとおりです。

取得 (GET)

URIに取得対象オブジェクトのIDを指定し、データを取得します。 複数のIDを指定した場合、指定したIDのデータが一つも存在しない場合にエラーになります。いずれかのIDのデータが存在する場合はエラーになりません。

追加 (POST)

追加するデータをリクエストボディで指定します。 必須フィールドが指定されなかった場合はエラーになります。任意のフィールドで未指定の場合は、既定値が適用されます。

更新 (PUT)

更新するデータをリクエストボディで指定します。 指定したフィールドのみ値が更新されます。指定したIDのデータが存在しない場合はエラーになります。

削除 (DELETE)

URIのパスパラメーターに削除対象オブジェクトのIDを指定し、データを削除します。 指定したIDのデータが存在しない場合はエラーになります。

オブジェクトIDの指定

対象オブジェクト(データ)のIDをURI中で指定することにより、特定のオブジェクトに対する操作を実行します。 URIの定義中 {~Id} もしくは {~Ids} の部分が該当します。

例:指定したユーザーの実績工数を取得する

定義:      GET /system/users/{userIds}/timeEntries
実行例:    GET /system/users/10/timeEntries

{~Ids}の場合は、複数のIDを指定することが可能です。その場合、対象オブジェクトのIDをカンマ区切りで指定します。

例:プロジェクト情報を取得する

定義:      GET /project/projects/{projectIds}
実行例:    GET /project/projects/120,121,122

対象オブジェクトを複数指定する(下位リソースが存在する)場合も、同様にそれぞれのIDを指定します。

例:指定したユーザーの特定の実績工数情報を取得する

定義:      GET /system/users/{userIds}/timeEntries/{timeEntryIds}
実行例:    GET /system/users/10/timeEntries/1000,1001

クエリパラメーター

クエリパラメーターとは、Web APIを実行する際に任意で追加可能なパラメーターです。このパラメーターを使用することで、実行するAPIに様々な条件を追加することができます。 クエリパラメーターは、URIの末尾に「?」に続けて指定します。複数のクエリパラメーターを指定する場合は、「&」でつなぎます。

また、一覧取得のAPIにおいては、文字列 (string型) のクエリパラメーターに複数の値を指定することが可能です。複数の値を指定する場合は、値と値を「,」でつなぎます。

ソート

以下のパラメーターにより、取得(GET)のAPIにより取得したデータの並び順を指定することができます。

ソート関連パラメーター

パラメーター 説明
orderby string 出力結果の並び順を指定します。ソート対象のフィールドの後ろに空白 (" ") を入れて指定します。既定値は asc です。(asc: 昇順、desc: 降順)

例:ユーザーの一覧情報をコードの降順で取得

GET /system/users?orderby=code desc

削除済みデータの扱いを指定

取得(GET)のAPIにより取得対象とするデータにおいて、以下のパラメーターにより削除済みデータの扱いを指定することができます。

削除データ関連パラメーター

パラメーター 説明
includeDeleted boolean 削除済みデータを含めて取得するかどうかを指定します。既定値は false です。(true: 含める、false: 含めない)
isDeleted boolean 削除済みデータのみ取得するかどうかを指定します。includeDeleted が true の場合のみ指定可能です。(true: 削除済みデータのみ、false:削除されていないデータのみ)

例:ユーザーの一覧情報を取得(削除済みユーザーも含める)

GET /system/users?includeDeleted=true

ページネーション

データの一覧を取得するAPIにおいて、パフォーマンス向上のためにページネーションを活用することができます。 ページネーションは取得対象データの件数や何件目から取得するかを指定するもので、大量のデータを取得する際に特に有効です。 ページネーションに関するパラメーターは以下のとおりです。

ページネーション関連パラメーター

パラメーター 説明
limit int データの最大取得件数を指定します。
offset int 対象データのうち、何番目のデータから取得するかを指定します。未指定の場合および0を指定した場合は、先頭のデータから取得します。0は先頭のデータを意味します。

例:指定ユーザーの実績工数一覧を取得する(10件目のデータから最大50件)

GET /system/users/10/timeEntries?limit=50&offset=9

関連オブジェクトを指定して取得

取得(GET)のAPIには、以下のパラメーターを利用して対象オブジェクトの取得結果に含まれる関連オブジェクトの範囲が指定できるものがあります。

関連オブジェクト指定用パラメーター

名前 説明
includes string 取得対象となる関連オブジェクトのフィールド名をカンマ区切りの文字列で指定する。

例:プロジェクト情報を取得する(プロジェクトメンバを含める)

リクエスト

GET /project/projects/120?includes=Members

レスポンス

[
    {
        "name":"S機器の開発",
        "code":"PRJ-002",
        "managerId":"21",
        .
        .
        .
        // プロジェクトメンバの情報がレスポンスに追加されます。
        "members":[
            {"partyId":"14","name":"山本 博","englishName":"","partyType":"User",・・・},
            {"partyId":"15","name":"藤井 智一","englishName":"","partyType":"User",・・・},
            {"partyId":"17","name":"柴田 智彦","englishName":"","partyType":"User",・・・},
            {"partyId":"21","name":"岡本 直哉","englishName":"","partyType":"User",・・・},
            {"partyId":"23","name":"植田 信貴","englishName":"","partyType":"User",・・・},
            {"partyId":"40","name":"黒川 悠太","englishName":"","partyType":"User",・・・}
        ],
    }
]

取得データに含まれるフィールドの指定

取得(GET)のAPIでは、対象オブジェクトの取得結果に含まれるフィールドを指定することができます。 フィールドを指定する場合、以下のパラメーターをURIに追加します。

フィールド指定用パラメーター

名前 説明
fields string 取得対象フィールドをカンマ区切りの文字列で指定する。

Note

fieldsパラメーターが利用できるのは、workItemエリアの取得APIのみです。

例:ワークアイテム情報を取得する(指定フィールドのみ)

リクエスト

 GET /workitem/workItems/1500?fields=name,plannedStartDate,plannedFinishDate,actualTime

レスポンス

[
    {  
        // fieldsパラメータに指定したパラメータが取得されます
        "fields": {
           "Id": "1470075",
           "Name": "仕様作成",
           "PlannedStartDate": "2018-06-04T00:00:00",
           "PlannedFinishDate": "2019-03-29T00:00:00",
           "ActualTime": 28065,
        }
    }
]

アクションパラメーター

追加 (POST) や更新 (PUT) のAPIには、フィールド値に加えてオブジェクトの操作を指定することができるものがあります。これはリクエストボディに記述するパラメーターで、アクションパラメーターと呼びます。 アクションパラメーターには、大別すると「関連オブジェクト操作」「移動」「復元」「その他」の3つに分類されます。以下の種類のアクションパラメーターがあります。

アクションパラメーターの一覧

API 種別 パラメーター 説明
プロジェクトの追加 関連オブジェクト操作 userGroups プロジェクト固有のユーザーグループを追加する
members プロジェクトメンバを追加する
プロジェクトの更新 関連オブジェクト操作 userGroupChange プロジェクト固有のユーザーグループを更新する
memberChange プロジェクトメンバを更新する
その他 setLocked 対象プロジェクトをロックする
ワークアイテムの追加 移動 orderBefore 指定アイテムの直前に移動する
orderAfter 指定アイテムの直後に移動する
orderFirst 先頭に移動する
orderLast 末尾に移動する
ワークアイテムの更新 移動 orderBefore 指定アイテムの直前に移動する
orderAfter 指定アイテムの直後に移動する
orderFirst 先頭に移動する
orderLast 末尾に移動する
moveParentTo 親アイテムを移動する
復元 restore 削除したアイテムを復元する
restoreToParent 復元先の親アイテムを指定する
その他 moveScheduleDays スケジュールを更新する (子アイテムも含む)
clearSchedule スケジュールをクリアする (子アイテムも含む)
setCompleted アイテムを「完了」にする (子アイテムも含む)
setTimeEntryLocked 実績入力をロックする (子アイテムも含む)
changeItemTypeTo アイテムタイプを変更する
clearAllFieldCalcTypes フィールドの決定方法をデフォルトに戻す

Note

詳細は各APIのページをご覧ください。

例:プロジェクト情報更新時にユーザーグループを追加する

リクエスト PUT /project/projects/100

{
    "name": "XXシステム開発",
    "userGroupChange": {
        "adds": [
            { "name": "設計チーム" },
            { "name": "実装チーム" }
        ]
    }
}

レスポンス

{
    "id": "100",
    "addedUserGroupIds": ["21", "22"]
}

レスポンス

データ形式

TimeTracker NX Web APIでは、レスポンスはすべてJSON形式で返されます。 APIの種類により、レスポンスには以下の情報が含まれます。

APIの種類 レスポンスデータ
取得(GET) ステータスコード、取得したリソースデータ
追加(POST) ステータスコード、追加されたリソースのID、追加対象以外で変更されたリソースのデータ
更新(PUT) ステータスコード、更新対象以外で変更されたリソースのデータ
削除(DELETE) ステータスコード、削除対象以外で変更されたリソースのデータ

ステータスコード

リクエストの処理結果を示すステータスコードは以下のとおりです。

コード 名前 説明
200 OK リクエストの処理が成功した。
400 Bad Request 無効なリクエストとしてリクエストが棄却された。
401 Unauthorized ユーザー認証に失敗し、リクエストが棄却された。
500 Internal Server Error サーバー内で問題が発生した。

Note

エラーが発生した場合、エラー前のデータの状態に必ず戻る仕組みになっています。データの破壊や中途半端な更新が起きることはありません。

エラーコード

Web API実行時にエラーが発生した場合に返されるエラーコードは以下のとおりです。

コード 説明
FieldCannotBeEmpty フィールドに空の値が指定されている
FieldMustBeUnique フィールドの値が一意でない
FieldOutOfRange フィールドの値域を超えている
IdNotAvailable 指定したIDのデータが利用できない
IdNotFound 指定したIDのデータが削除されている、あるいは見つからない
InputTimeEntryAlwaysLocked 実績入力が全期間ロックされている
InputTimeEntryLocked 特定の日付以前の実績入力がロックされている
InvalidAssignment プロジェクトのメンバーでないユーザーを指定した
InvalidCredentials 認証情報が不正
InvalidCurrentPassword パスワードが現在のパスワードと一致しない
InvalidFormat パラメータの形式が不正
InvalidLicenseKey ライセンスキーが不正
InvalidParameter パラメーターが不正
LicenseExceeded ライセンス数を超過している
LicenseExpired ライセンスが無効
NotMatchActualTimeUnit 実績工数の入力粒度と異なる
NotMatchPlannedTimeUnit 計画工数の入力粒度と異なる
OperationDenied 実行時のエラーチェックで失敗した
PasswordMismatch 新しいパスワードと確認用のパスワードが一致しない
ProjectLocked プロジェクトがロックされている
SecurityError セキュリティ権限エラー
TimeEntryOverlapped 他の実績工数と重複する
WorkItemLocked ワークアイテムの実績入力がロックされている
WorkItemNotAssigned リソース割り当てがされてない

型ごとの既定値

任意指定のパラメーターや、追加APIで任意指定のフィールドについて、個別の指定がないものの既定値は以下のとおりです。

既定値
boolean false
int 0
double 0
string null
datetime null

日付型の指定方法について

更新日時など、TimeTrackerNX が自動的に記録する日時はすべて UTC とし、ISO 8601 に従って YYYY-MM-DDThh:mm:ssZ で返します。
YYYY-MM-DD と hh:mm:ss の間の T、hh:mm:ss の後ろの Z は固定値です。

指定例:2018年6月8日 4時56分40秒(UTC)の場合
"2018-06-08T04:56:40Z"

ユーザーがリクエストに指定する日時や日付は YYYY-MM-DDThh:mm:ss、YYYY-MM-DD の形式とし、タイムゾーンの変換は行う必要はありません。
日時の場合の T 以降は省略可能とし、省略した場合は YYYY-MM-DDT00:00:00 として扱います。

権限

Web APIを実行する際のTimeTracker NXの権限には、認証に使用したTimeTracker NXのユーザー権限が適用されます。