公開APIリファレンス

Workify360 Focusの公開APIを使えば、独自のスクリプトやツールから、ダッシュボードと同じルールでレポートや時間データを読み取り、変更を加えられます。公開API、APIキー、WebhookはPremiumプランに含まれます。

このページのオペレーションは後方互換性が保たれます。同じオペレーションの機械可読なOpenAPIドキュメント:

https://api.focus.workify360.com/v1/openapi/public.json

APIコントラクトのバージョン0.1.0(c95fb97bb49a)から生成されています。

認証

すべてのリクエストのAuthorizationヘッダーで個人用APIキーを送信してください。キーは作成した本人に属し、その本人として動作し、本人の現在のロールで許可されている範囲を超えることはありません。キーがない、誤っている、期限切れ、または取り消されている場合、リクエストにはコードunauthorizedとともに401が返されます。

curl https://api.focus.workify360.com/v1/me \
  -H "Authorization: Bearer w360_pat_…"

キーの作成、スコープの設定、取り消しの方法: APIキーと公開API

スコープ

各オペレーションには1つのスコープが必要で、その横に表示されています。キーがそのスコープを持ち、所有者の現在のロール、チーム、プランがリクエストを許可している場合に、ダッシュボードとまったく同じようにオペレーションを利用できます。

スコープ許可される操作
me自分のプロフィールとタイマー
reports:readレポート、時間エントリー、不在、シフト、チーム、プロジェクト、タスク、エクスポートの読み取り
time:write時間エントリー、不在、シフト、タスク、タスクに割り当てた時間の追加・変更と、申請の承認・却下
org:adminメンバー、チーム、招待、プロジェクトの管理
webhooks:manageWebhookエンドポイントの管理

レート制限

キーごとに1分あたり600ユニット、組織全体ではすべてのキーの合計で1分あたり1,800ユニットまで送信できます。何かを変更するリクエスト(GETとHEAD以外)は2ユニット、それ以外のリクエストは1ユニットとして数えます。また、1つのキーが一度に送信できるのは最大60ユニットで、毎秒10ユニットずつ回復します。そのため、1分あたり600ユニット未満でも、60件を超える読み取り(または30件を超える変更)を一気に送ると429が返されます。

ヘッダー意味
RateLimit: "key";r=598;t=2カウント対象のすべてのレスポンスに付与:キーの残りユニット数と、満タンに戻るまでの秒数
RateLimit-Policy: "key";q=600;w=60, "tenant";q=1800;w=60カウント対象のすべてのレスポンスに付与:キーと組織の1分あたりの制限
Retry-After: 12429(コードrate_limited)のときに付与:次のリクエストまでに待つ秒数

エラー

エラーはRFC 9457のproblemドキュメント(Content-Type: application/problem+json)です。codeはプログラムで扱うための安定したsnake_caseのコードで、titleはログ用の英語のテキストです。typeはそのコードのヘルプアドレスhttps://workify360.com/help/errors/<code>/(_は-に置き換え)で、コードに解説記事がある場合はそのヘルプ記事が開きます。

HTTP/1.1 403 Forbidden
Content-Type: application/problem+json

{
  "type": "https://workify360.com/help/errors/forbidden/",
  "title": "Forbidden",
  "status": 403,
  "code": "forbidden",
  "action": "webhooks.manage",
  "traceId": "4bf92f3577b34da6a3ce929d0e0e4736"
}

一部のエラーには追加のフィールドがあります:errors(422 validation_failedのフィールドエラー)、action(403 forbiddenが指す権限)、requiredPlan(402 feature_not_in_plan)、retryAfterSeconds(429と503)、traceId(サポートへのお問い合わせ時にお知らせください)。

ステータスコード発生条件
400 invalid_request パラメーターの形式が不正、または不足している
401 unauthorized キーがない、誤っている、期限切れ、取り消されている、または所有者が組織を離れた
402 feature_not_in_plan, subscription_read_only プランにその機能が含まれていない、またはサブスクリプションが閲覧専用になっている
403 forbidden, feature_not_enabled キーにスコープがない、または所有者の現在のロール、チーム、設定がリクエストを許可していない
412 version_conflict If-Matchのバージョンが最新ではない。リソースを読み直してください
422 validation_failed リクエストボディが不正。errorsに該当フィールドが一覧表示されます
428 precondition_required このオペレーションには、読み取ったバージョンを指定したIf-Matchヘッダーが必要
429 rate_limited リクエストが多すぎる。Retry-Afterの秒数だけ待ってください

ヘルプ記事のあるコードは、オペレーション一覧でリンクになっています。

Webhook

APIに何度も問い合わせる代わりに、何かが変更されたときに、お客様のエンドポイントで署名付きのHTTPSリクエストを受け取れます。イベント、リクエストの形式、Node.jsとPythonでの署名の検証方法、再試行、シークレットのローテーションについては、ヘルプ記事で説明しています: Webhook

オペレーション

分野ごとにまとめています。概要とフィールドの説明はAPIコントラクトから取得しています。

不在

GET /v1/absences スコープ: reports:read

List absences overlapping a range.

パラメーター
名前場所型説明
from クエリ string (date)
to クエリ string (date) At most 366 days after from.
userId クエリ string (uuid)
teamId クエリ string (uuid)
status クエリ string
typeId クエリ string (uuid)
cursor クエリ string
limit クエリ integer (int32)
レスポンス
200 AbsencePage
エラー

POST /v1/absences スコープ: time:write

Request (or record) an absence.

パラメーター
名前場所型説明
Idempotency-Key必須 ヘッダー string Required: the same key and body return the first answer
リクエストボディ
AbsenceRequest
レスポンス
201 AbsenceDto
エラー

POST /v1/absences/{id}/decision スコープ: time:write

Approve or reject an absence (the G1 endpoint of the calendar).

パラメーター
名前場所型説明
id必須 パス string (uuid) Id
If-Match必須 ヘッダー string ETag of the resource ("v<n>"); missing: 428, stale: 412
リクエストボディ
CalendarDecisionRequest
レスポンス
200 AbsenceDto
エラー

アクティビティ

GET /v1/activity/day スコープ: reports:read

One user's local day (My Focus, the timeline): totals, productivity, attendance, day plan, slots, apps, time entries.

パラメーター
名前場所型説明
date クエリ string (date) The user's local day (required).
userId クエリ string (uuid) Default: the caller; another user must be visible (else 403).
レスポンス
200 ActivityDayDto
エラー

時間の割り当て

GET /v1/allocations スコープ: reports:read

A person's allocations of a range of local days (the caller's, the people they manage, and the time on the projects they manage).

パラメーター
名前場所型説明
userId クエリ string (uuid) Default: the caller.
from クエリ string (date) Local date, included.
to クエリ string (date) Local date, included; at most 93 days after from.
projectId クエリ string (uuid)
cursor クエリ string
limit クエリ integer (int32) 1–200 (default 200).
レスポンス
200 AllocationPage
エラー

POST /v1/allocations スコープ: time:write

Put time on a project: entered (manual) or tracked time assigned afterwards (assignment); for another person with allocations.write.

パラメーター
名前場所型説明
Idempotency-Key ヘッダー string | null The same key and body return the first answer (a different body: 422 idempotency_key_reused)
リクエストボディ
AllocationCreateRequest
レスポンス
201 AllocationCreatedDto
エラー

エクスポート

POST /v1/exports スコープ: reports:read

Request an export: the file is produced by a worker job with the requester's current role.

パラメーター
名前場所型説明
Idempotency-Key必須 ヘッダー string Required: the same key and body return the first answer
リクエストボディ
CreateExportRequest
レスポンス
202 ExportJobDto
エラー

GET /v1/exports/{id} スコープ: reports:read

One export job (poll every 2 s).

パラメーター
名前場所型説明
id必須 パス string (uuid) Id
レスポンス
200 ExportJobDto
エラー

自分

GET /v1/me スコープ: me

The signed-in person, their membership, organization, rights and session.

レスポンス
200 MeDto
エラー

メンバー

GET /v1/members スコープ: org:admin

List members.

パラメーター
名前場所型説明
status クエリ string Comma-separated statuses (default active,invited,suspended)
teamId クエリ string (uuid) Primary team
role クエリ string owner, admin, team_admin, manager or employee
q クエリ string Part of the name or e-mail (Turkish case folding)
cursor クエリ string Opaque cursor of the next page
limit クエリ integer (int32) 1–200, default 50
レスポンス
200 MemberPage
エラー
  • 403 No right

GET /v1/members/{id} スコープ: org:admin

One member.

パラメーター
名前場所型説明
id必須 パス string (uuid) Membership id
レスポンス
200 MemberDto
エラー
  • 404 member_not_found

PATCH /v1/members/{id} スコープ: org:admin

Change a member's role, team, viewer teams, zone or tracking.

パラメーター
名前場所型説明
id必須 パス string (uuid) Membership id
If-Match必須 ヘッダー string ETag of the member ("v<n>")
リクエストボディ
PatchMember
レスポンス
200 MemberDto
エラー

POST /v1/members/{id}/reactivate スコープ: org:admin

Reactivate a suspended member.

パラメーター
名前場所型説明
id必須 パス string (uuid) Membership id
レスポンス
200 MemberDto

POST /v1/members/{id}/suspend スコープ: org:admin

Suspend a member: the membership is suspended and every session of it in this organization ends.

パラメーター
名前場所型説明
id必須 パス string (uuid) Membership id
レスポンス
200 MemberDto
エラー
  • 409 conflict (an invitation is revoked instead)

プロジェクト

GET /v1/projects スコープ: reports:read

The projects the caller sees (Owners and Admins: all; others: open ones, their teams and, read only, the projects of the people they manage).

パラメーター
名前場所型説明
status クエリ string active, on_hold or completed.
clientId クエリ string (uuid)
q クエリ string Name or code search (case-insensitive).
includeArchived クエリ boolean
mine クエリ boolean Only the projects the caller may track time on.
cursor クエリ string
limit クエリ integer (int32) 1–200 (default 50).
レスポンス
200 ProjectPage
エラー

POST /v1/projects スコープ: org:admin

Add a project (Owners and Admins).

パラメーター
名前場所型説明
Idempotency-Key ヘッダー string | null The same key and body return the first answer (a different body: 422 idempotency_key_reused)
リクエストボディ
ProjectRequest
レスポンス
201 ProjectDto
エラー

PUT /v1/projects/{id} スコープ: org:admin

Change a project (Owners and Admins; the whole body).

パラメーター
名前場所型説明
id必須 パス string (uuid) Project id
If-Match必須 ヘッダー string The ETag the caller read (412 version_conflict when it changed)
リクエストボディ
ProjectRequest
レスポンス
200 ProjectDto
エラー

レポート

GET /v1/reports/productivity スコープ: reports:read

Productivity by day, week, month or range for the company, a team or a user.

パラメーター
名前場所型説明
from クエリ string (date)
to クエリ string (date) day 93 days, week, month and range 366.
groupBy クエリ string day, week, month or range.
teamId クエリ string (uuid)
userId クエリ string (uuid)
レスポンス
200 PeriodReportDto
エラー

GET /v1/reports/projects スコープ: reports:read

Allocated time, billable time and the rate-layered amounts (Owners and Admins) of projects in a range, grouped by one or two of project, task, user, client and day, with the projects' budget use.

パラメーター
名前場所型説明
from クエリ string (date) Local date, included.
to クエリ string (date) Local date, included; at most 366 days after from.
groupBy クエリ string One or two of project (default), task, user, client, day, comma separated.
projectIds クエリ string Comma-separated project ids.
clientId クエリ string (uuid)
userIds クエリ string Comma-separated user ids (visible people only).
teamId クエリ string (uuid)
billable クエリ string all (default), billable or nonBillable.
includeProductive クエリ boolean Also compute the productive time within the allocations (costly; default false).
レスポンス
200 ProjectReportDto
エラー

GET /v1/reports/summary スコープ: reports:read

The summary of the visible users over a range.

パラメーター
名前場所型説明
from クエリ string (date)
to クエリ string (date) At most 93 days after from.
teamId クエリ string (uuid) Only the team's current members; the team must be visible (else 403).
レスポンス
200 SummaryDto
エラー

GET /v1/reports/targets スコープ: reports:read

The apps, domains or hosts of the visible users over a range (Apps & URLs).

パラメーター
名前場所型説明
from クエリ string (date)
to クエリ string (date)
type クエリ string app, domain or host.
teamId クエリ string (uuid)
userId クエリ string (uuid)
q クエリ string Search in the key and the name (.NET search).
level クエリ string productive, unproductive or neutral.
categoryKey クエリ string
unclassified クエリ boolean Only targets without a category.
cursor クエリ string
limit クエリ integer (int32) 1–200, default 50.
レスポンス
200 TargetListDto
エラー

GET /v1/reports/users/{userId}/daily スコープ: reports:read

A user's days of a range (computed days and the workdays without activity).

パラメーター
名前場所型説明
userId必須 パス string (uuid) User
from クエリ string (date)
to クエリ string (date) At most 93 days after from.
レスポンス
200 UserDailyDto
エラー

シフト

GET /v1/shifts スコープ: reports:read

List the shifts starting in a range.

パラメーター
名前場所型説明
from クエリ string (date)
to クエリ string (date)
teamId クエリ string (uuid)
userId クエリ string (uuid)
includeOpen クエリ boolean Also open shifts (default true).
レスポンス
200 ShiftListDto
エラー

POST /v1/shifts スコープ: time:write

Create a shift (assigned or open).

パラメーター
名前場所型説明
Idempotency-Key必須 ヘッダー string Required: the same key and body return the first answer
リクエストボディ
ShiftBody
レスポンス
201 ShiftDto
エラー

タスク

GET /v1/projects/{id}/tasks スコープ: reports:read

A visible project's tasks, by sort order.

パラメーター
名前場所型説明
id必須 パス string (uuid) Project id
status クエリ string open, in_progress or done.
assigneeUserId クエリ string (uuid)
includeArchived クエリ boolean
cursor クエリ string
limit クエリ integer (int32) 1–500 (default 200).
レスポンス
200 TaskPage
エラー

POST /v1/projects/{id}/tasks スコープ: time:write

Add a task (an Admin or the project's manager).

パラメーター
名前場所型説明
id必須 パス string (uuid) Project id
Idempotency-Key ヘッダー string | null The same key and body return the first answer (a different body: 422 idempotency_key_reused)
リクエストボディ
TaskRequest
レスポンス
201 TaskDto
エラー

PUT /v1/tasks/{id} スコープ: time:write

Change a task (the whole body).

パラメーター
名前場所型説明
id必須 パス string (uuid) Task id
If-Match必須 ヘッダー string The ETag the caller read (412 version_conflict when it changed)
リクエストボディ
TaskRequest
レスポンス
200 TaskDto
エラー

チーム

GET /v1/teams スコープ: reports:read

List teams.

パラメーター
名前場所型説明
includeArchived クエリ boolean Also archived teams (default false)
cursor クエリ string Opaque cursor of the next page
limit クエリ integer (int32) 1–200, default 50
レスポンス
200 TeamPage

POST /v1/teams スコープ: org:admin

Create a team (the G1 endpoint).

リクエストボディ
CreateTeam
レスポンス
201 TeamDto
エラー
  • 403 forbidden (action teams.create)
  • 409 team_name_taken

PATCH /v1/teams/{id} スコープ: org:admin

Rename a team or change its description.

パラメーター
名前場所型説明
id必須 パス string (uuid) Team id
If-Match必須 ヘッダー string ETag of the team
リクエストボディ
PatchTeam
レスポンス
200 TeamDto
エラー
  • 409 team_name_taken

時間エントリー

GET /v1/time-entries スコープ: reports:read

List a user's time entries of a range (by start).

パラメーター
名前場所型説明
userId クエリ string (uuid) Default: the caller.
from クエリ string (date) The entry's local day, required.
to クエリ string (date) At most 93 days after from.
kind クエリ string offline or deletion.
status クエリ string pending, approved or rejected.
cursor クエリ string
limit クエリ integer (int32) 1–500.
レスポンス
200 TimeEntryPage
エラー

POST /v1/time-entries スコープ: time:write

Add offline time or a deletion (for oneself, or for a user one manages: TimeEntryPolicy in the handler).

パラメーター
名前場所型説明
Idempotency-Key必須 ヘッダー string Required: the same key and body return the first answer
リクエストボディ
CreateTimeEntryRequest
レスポンス
201 TimeEntryDto
エラー

GET /v1/time-entries/{id} スコープ: reports:read

One time entry (invisible, missing and other tenants' entries are all 404).

パラメーター
名前場所型説明
id必須 パス string (uuid) Entry id
レスポンス
200 TimeEntryDto
エラー

PUT /v1/time-entries/{id} スコープ: time:write

Replace an entry's editable fields.

パラメーター
名前場所型説明
id必須 パス string (uuid) Entry id
If-Match必須 ヘッダー string ETag of the resource ("v<n>"); missing: 428, stale: 412
リクエストボディ
UpdateTimeEntryRequest
レスポンス
200 TimeEntryDto
エラー

DELETE /v1/time-entries/{id} スコープ: time:write

Delete an entry (deleting a deletion restores the tracked time).

パラメーター
名前場所型説明
id必須 パス string (uuid) Entry id
If-Match必須 ヘッダー string ETag of the resource ("v<n>"); missing: 428, stale: 412
レスポンス
204 (ボディなし)
エラー

POST /v1/time-entries/{id}/decision スコープ: time:write

Approve or reject a pending offline entry (the G1 endpoint of the time module).

パラメーター
名前場所型説明
id必須 パス string (uuid) Entry id
If-Match必須 ヘッダー string ETag of the resource ("v<n>"); missing: 428, stale: 412
リクエストボディ
TimeEntryDecisionRequest
レスポンス
200 TimeEntryDto
エラー

タイマー

GET /v1/me/timer スコープ: me

The caller's timer (a segment due after 24 hours is stopped first).

パラメーター
名前場所型説明
If-None-Match ヘッダー string | null The ETag the caller holds (304 when unchanged)
レスポンス
200 TimerDto · 304 (ボディなし)
エラー

POST /v1/me/timer/start スコープ: me

Start the timer, or switch the running one to another project or task, at at (the client's clock).

パラメーター
名前場所型説明
Idempotency-Key ヘッダー string | null The client's command id; a retry returns the first answer
リクエストボディ
TimerStartRequest
レスポンス
200 TimerCommandResultDto
エラー

Webhook

POST /v1/webhook-endpoints スコープ: webhooks:manage

Add a webhook endpoint (its signing secret is in this answer only; no Idempotency-Key: the answer holds a secret).

リクエストボディ
CreateWebhookEndpointRequest
レスポンス
201 CreatedWebhookEndpointDto
エラー

PATCH /v1/webhook-endpoints/{id} スコープ: webhooks:manage

Change an endpoint: URL, description, events, pause or resume (active also opens a disabled endpoint), take it over.

パラメーター
名前場所型説明
id必須 パス string (uuid) The endpoint
If-Match必須 ヘッダー string The endpoint's ETag ("v<n>")
リクエストボディ
UpdateWebhookEndpointRequest
レスポンス
200 WebhookEndpointDto
エラー

DELETE /v1/webhook-endpoints/{id} スコープ: webhooks:manage

Delete an endpoint and its deliveries.

パラメーター
名前場所型説明
id必須 パス string (uuid) The endpoint
レスポンス
204 (ボディなし)
エラー

GET /v1/webhook-endpoints/{id}/deliveries スコープ: webhooks:manage

The deliveries of an endpoint, newest first.

パラメーター
名前場所型説明
id必須 パス string (uuid) The endpoint
status クエリ string pending, succeeded, failed, dead.
eventType クエリ string
cursor クエリ string Opaque cursor of the next page.
limit クエリ integer (int32) 1–200, default 50.
レスポンス
200 WebhookDeliveryPage
エラー

POST /v1/webhook-endpoints/{id}/deliveries/{deliveryId}/retry スコープ: webhooks:manage

Queue a failed or dead delivery again (attempts start over).

パラメーター
名前場所型説明
id必須 パス string (uuid) The endpoint
deliveryId必須 パス string The delivery (a 64-bit integer)
レスポンス
202 AcceptedDto
エラー

スキーマ

オペレーションで使われるリクエストとレスポンスのボディ。必須フィールドには印が付いています。

AbsenceDto

An absence.

フィールド型説明
createdAt必須 string (date-time)
createdBy必須 CalendarUserRefDto
days必須 number (double) Σ deductionByYear; for types that do not deduct, the planned workdays (information only).
decidedAt string (date-time) | null
decidedBy CalendarUserRefDto | null
decisionNote string | null
deductionByYear必須 object The balance deduction per year, e.g. {"2026": 3.5}; empty for types that do not deduct.
end必須 string (date-time)
endDate必須 string (date)
endTime string | null
half string | null
id必須 string (uuid)
note string | null
permissions必須 AbsencePermissionsDto
start必須 string (date-time) UTC coverage start.
startDate必須 string (date)
startTime string | null
status必須 string
timeZone必須 string
type必須 AbsenceTypeRefDto
unit必須 string
updatedAt必須 string (date-time)
user必須 CalendarPersonDto
userId必須 string (uuid)

AbsencePage

GET /v1/absences.

フィールド型説明
items必須 AbsenceDto[]
nextCursor string | null

AbsencePermissionsDto

フィールド型説明
canApprove必須 boolean
canCancel必須 boolean
canEdit必須 boolean

AbsenceRequest

POST /v1/absences, PUT /v1/absences/{id} (the user never changes).

フィールド型説明
endDate string (date) | null
endTime string | null
half string | null am or pm for a half day.
note string | null
startDate string (date) | null
startTime string | null Local HH:mm for hours.
typeId string (uuid) | null
unit string | null days, half_day or hours.
userId string (uuid) | null null = the caller.

AbsenceTypeRefDto

The absence's type as the absence shows it; name translated for a built-in type that was not renamed.

フィールド型説明
color必須 string
countsAsWorked必須 boolean
deductsFromBalance必須 boolean
id必須 string (uuid)
key string | null
name必須 string
paid必須 boolean
timeEffect必須 string

AcceptedDto

202 Accepted of a queued job.

フィールド型説明
accepted必須 boolean Always true.

AccessDto

What the person may see and manage (FAZ1 AccessDto; focus_contracts::access::policy).

フィールド型説明
assignableRoles必須 string[]
canManageCompanySettings必須 boolean
canManageTeams必須 boolean
canManageUsers必須 boolean
manageTeamIds必須 string[]
scope必須 string company, teams or self.
unassignedFallback必須 boolean
viewTeamIds必須 string[]

ActivityDayDto

One user's local day. A day without activity is a 200 with zero totals, null arrival/leave and empty lists.

フィールド型説明
absenceCreditMs必須 integer (int64) A worked absence tops the worked time up to the expected work.
activeMs必須 integer (int64) Window time ∩ not AFK (computer time only).
afkCoverage必須 boolean False when no device reported AFK data (idle unknown).
apps必須 AppUsageDto[] Daily totals, largest first.
arrivalAt string (date-time) | null
atWorkMs必須 integer (int64)
attendance DayAttendanceDto | null
categories必須 CategoryUsageDto[] Active time per category (null key = uncategorized); offline time is in no category.
classified必須 boolean False for a day written before the Phase 2 classification (all neutral).
date必須 string (date)
dayEnd必須 string (date-time)
dayStart必須 string (date-time) The day's window: local midnight, or the end of the previous day's night shift window.
deletedMs必須 integer (int64) Tracked time removed by approved deletions (part of idle).
domains必須 DomainUsageDto[]
hosts必須 HostUsageDto[] Hosts with a URL, at most 50, largest first.
idleMs必須 integer (int64)
leftAt string (date-time) | null
meetingMs必須 integer (int64) Active time the meeting apps exception turned from idle into active.
offlineMs必須 integer (int64) Approved offline time outside the tracked active time.
pendingOfflineMs必須 integer (int64) Pending offline entries of the day (information only).
plan DayPlanDto | null
privateIntervals必須 TimeIntervalDto[] Private intervals of the day, merged and clipped, without detail.
privateMs必須 integer (int64) Private time outside active and offline time.
productivity必須 DayProductivityDto
recomputing必須 boolean The day waits in the recompute queue (the UI refetches every 15 s).
slots必須 ActivitySlotDto[] One entry per 5-minute UTC slot with activity, by time.
teamId string (uuid) | null The user's current primary team (its rules classify the day).
timeEntries必須 TimeEntryDto[] Offline and deletion entries of every status overlapping the day's window, by start; the caller's permissions.
timeZone必須 string The zone the day was computed in; the UI draws slots at their wall-clock time in it.
userId必須 string (uuid)
workedMs必須 integer (int64) activeMs + offlineMs: the denominator of productivity.productivityPct.

ActivitySlotDto

Time in one 5-minute slot; activeMs includes approved offline time (offlineMs).

フィールド型説明
activeMs必須 integer (int64)
apps必須 AppUsageDto[]
neutralMs必須 integer (int64)
offlineMs必須 integer (int64)
productiveMs必須 integer (int64)
slotStart必須 string (date-time)
unproductiveMs必須 integer (int64)

AffectedAllocationDto

An allocation replace changed.

フィールド型説明
change必須 string trimmed, split or deleted.
id必須 string (uuid)

AllocationCreateRequest

POST /v1/allocations (Idempotency-Key).

フィールド型説明
endedAt string (date-time) | null At most 24 hours after startedAt, at most 5 minutes in the future.
isBillable boolean | null
note string | null
projectId string (uuid) | null
replace boolean | null Trim, split or delete the person's (unbilled) allocations it overlaps; otherwise an overlap is 409 allocation_overlaps.
source string | null manual or assignment (timer only through the timer).
startedAt string (date-time) | null
taskId string (uuid) | null
userId string (uuid) | null null = the caller; another person needs allocations.write and to be managed by the caller.

AllocationCreatedDto

POST /v1/allocations → 201.

フィールド型説明
affected必須 AffectedAllocationDto[]
allocation必須 AllocationDto

AllocationDto

Time on a project.

フィールド型説明
createdAt必須 string (date-time)
createdBy必須 NamedRefDto
durationMs必須 integer (int64)
effectiveBillable必須 boolean
endedAt必須 string (date-time)
id必須 string (uuid)
invoiceId string (uuid) | null Set once the time is on an invoice.
isBillable boolean | null null takes the task's, then the project's value.
localDate必須 string (date) The start's day in the person's zone (rates, reports).
note string | null
permissions必須 AllocationPermissionsDto
project必須 ProjectRefDto
source必須 string timer, manual or assignment.
startedAt必須 string (date-time)
task NamedRefDto | null
timeZone必須 string
updatedAt必須 string (date-time)
userId必須 string (uuid)
version必須 integer (int64) The row version: If-Match: "v<version>" of a change (the same value as the resource's ETag).

AllocationPage

GET /v1/allocations.

フィールド型説明
items必須 AllocationDto[]
nextCursor string | null

AllocationPermissionsDto

What the caller may do with an allocation (a billed one is locked).

フィールド型説明
delete必須 boolean
edit必須 boolean

AppTotalDto

フィールド型説明
activeMs必須 integer (int64)
appKey必須 string
categoryKey string | null
level string | null Level in the response's levelContext.
name必須 string
percentage必須 number (double) Share of the range's worked time (0–100, one decimal).

AppUsageDto

An app's time; offline rows use the reserved keys _offline_<level> with name: "Offline time" and levelSource: "offline".

フィールド型説明
activeMs必須 integer (int64)
appKey必須 string
categoryKey string | null
level string | null The app's own rule (productive, unproductive, neutral).
levelSource string | null team, company, default or offline.
name必須 string

BudgetDto

A project's budget: hours (minutes) or an amount in the project's currency (amountMinor).

フィールド型説明
amountMinor integer (int64) | null
kind string | null hours or amount.
minutes integer (int64) | null

BudgetRequest

The budget of a project request (kind hours with minutes, or amount with amountMinor).

フィールド型説明
amountMinor integer (int64) | null
kind string | null
minutes integer (int64) | null

CalendarDecisionRequest

{decision, note?} of the decision endpoints (approve or reject; the note at most 500 characters).

フィールド型説明
decision string | null
note string | null

CalendarPersonDto

A user with the current team.

フィールド型説明
fullName string | null
id必須 string (uuid)
teamId string (uuid) | null
teamName string | null

CalendarUserRefDto

A user reference (names from the directory; null when unknown).

フィールド型説明
fullName string | null
id必須 string (uuid)

CapabilitiesDto

Subscription capabilities.

フィールド型説明
features必須 string[]
readOnly必須 boolean

CategoryUsageDto

フィールド型説明
activeMs必須 integer (int64)
categoryKey string | null null = uncategorized.

CreateExportRequest

POST /v1/exports: definition is the full definition the dialog shows; without it the saved template (templateId) or the built-in one (templateKey) gives it.

フィールド型説明
definition ExportDefinitionDto | null
from string (date) | null
locale string | null tr or en.
templateId string (uuid) | null
templateKey string | null
to string (date) | null

CreateInvitation

POST /v1/invitations.

フィールド型説明
email必須 string
fullName必須 string
locale string | null Language of the e-mail and the acceptance page (tr, en); the organization's default otherwise.
role必須 string admin, team_admin, manager or employee.
teamId string (uuid) | null
timeZone string | null
viewerTeamIds string (uuid)[]

CreateTeam

POST /v1/teams.

フィールド型説明
description string | null At most 500 characters.
name必須 string 1–100 characters, unique among active teams (Turkish case folding).

CreateTimeEntryRequest

POST /v1/time-entries (the .NET CreateTimeEntryRequest).

フィールド型説明
description string | null Offline: 1–500 characters; deletion: optional reason (at most 500).
end string (date-time) | null
kind string | null offline or deletion.
level string | null Offline only (default productive).
projectId string (uuid) | null Must be null (400 project_not_supported).
start string (date-time) | null
userId string (uuid) | null null = the caller; a manager may add time for a user it manages.

CreateWebhookEndpointRequest

POST /v1/webhook-endpoints.

フィールド型説明
description string | null ≤ 200 characters.
eventTypes必須 string[] 1–50 catalog event types of the tenant's plan.
url必須 string https://… (≤ 2048; no user info, no fragment; every resolved address public).

CreatedWebhookEndpointDto

CreatedWebhookEndpointDto: the endpoint and its signing secret, shown once.

フィールド型説明
endpoint必須 WebhookEndpointDto
secret必須 string whsec_<base64>: shown once, never again.

DailyHolidayDto

A holiday of a daily report day.

フィールド型説明
half string | null
key必須 string
name必須 string English name; nameTr is the Turkish one.
nameTr必須 string

DayAbsenceDto

The dominant absence of a day (/v1/reports/users/{userId}/daily days[].absence).

フィールド型説明
color必須 string
fraction必須 number (double) The day's approved absence coverage (0–1).
half string | null
typeKey string | null
typeName string | null
unit必須 string

DayAttendanceDto

Attendance of the day on the day plan.

フィールド型説明
expectedEnd string (date-time) | null
expectedStart string (date-time) | null
flexible必須 boolean
lateByMs必須 integer (int64)
lateToleranceMinutes必須 integer (int32)
leftEarly必須 boolean
leftEarlyByMs必須 integer (int64)
status必須 string onTime, late, absent, notStarted, dayOff, onLeave, holiday.
targetMs必須 integer (int64) The plan's target (the Effectiveness % denominator).
workday必須 boolean

DayPlanDto

The day plan of one user's day.

フィールド型説明
absences必須 PlanAbsenceDto[] Approved and pending absences covering the day (only approved ones change the numbers).
expectedEnd string (date-time) | null
expectedStart string (date-time) | null
expectedWorkMs必須 integer (int64) Overtime target (base × (1 − fLeave)).
holiday HolidayRefDto | null
kind必須 string schedule, shift, dayOff or holiday.
leaveFraction必須 number (double) The approved absence coverage f (0–1).
shifts必須 PlanShiftDto[] Shifts starting on the day, by start.
targetMs必須 integer (int64) Effectiveness % denominator (base × (1 − f)).
workday必須 boolean

DayProductivityDto

A day's time by productivity level (productive + unproductive + neutral = workedMs).

フィールド型説明
effectivenessPct number (double) | null productive ÷ target × 100 (not capped); null without a target.
neutralMs必須 integer (int64)
productiveMs必須 integer (int64)
productivityPct number (double) | null productive ÷ worked × 100, one decimal; null without worked time.
targetMs必須 integer (int64)
unproductiveMs必須 integer (int64)

DayTotalDto

One local day of a summary.

フィールド型説明
activeMs必須 integer (int64)
activeUserCount必須 integer (int32)
atWorkMs必須 integer (int64)
date必須 string (date)
idleMs必須 integer (int64)
neutralMs必須 integer (int64)
offlineMs必須 integer (int64)
privateMs必須 integer (int64)
productiveMs必須 integer (int64)
productivityPct number (double) | null
unproductiveMs必須 integer (int64)

DomainTotalDto

フィールド型説明
activeMs必須 integer (int64)
categoryKey string | null
domain必須 string
level string | null
percentage必須 number (double)

DomainUsageDto

フィールド型説明
activeMs必須 integer (int64)
categoryKey string | null
domain必須 string
level string | null
levelSource string | null

EmailVerificationDto

Where the person stands with the e-mail verification (owner decision 3 Oct 2026, focus_auth::email_gate).

フィールド型説明
dueAt string (date-time) | null The deadline of an unverified account (Identity__EmailVerificationGraceHours after its creation).
state必須 string verified, not_required (an account that never has to verify: invited, imported, SCIM, IdP-verified), pending (unverified, before dueAt) or overdue (after dueAt: every request but a few answers 403 email_verification_required).

ExportDefinitionDto

What an export contains (FAZ4 §6.1; focus_contracts::reports::export::ExportDefinition on the wire); a saved template stores it without the date range. Every field is optional so that the validator reports what is wrong (422 validation_failed with errors[{field, code}]).

フィールド型説明
columns string[] | null Column keys of the dataset in file order (1–40; a PDF at most 12).
csvDialect string | null standard (default) or excel-tr (csv only).
dataset string | null
durationFormat string | null hms (default), hours or minutes.
filters ExportFiltersDto | null
format string | null xlsx, csv or pdf.
groupBy string | null day, week, month, range or none (the dataset decides).
options ExportOptionsDto | null

ExportFiltersDto

Who is exported: a team, some users, or (neither) everyone the requester can see.

フィールド型説明
includeInactiveUsers boolean
teamId string | null
userIds string | null[] | null

ExportJobDto

An export job as the panel lists and polls it.

フィールド型説明
createdAt必須 string (date-time)
dataset必須 string
errorCode string | null too_many_rows, too_many_rows_for_pdf, access_lost, feature_not_in_plan, canceled, internal_error.
expiresAt string (date-time) | null
fileName string | null
fileSize integer (int64) | null
finishedAt string (date-time) | null
format必須 string
from必須 string (date)
groupBy string | null
id必須 string (uuid)
locale必須 string
progress必須 integer (int32) 0–100.
rowCount integer (int32) | null
startedAt string (date-time) | null
status必須 string queued, running, succeeded, failed, canceled, expired.
templateId string (uuid) | null
templateKey string | null
templateName string | null The saved template's name, while it still exists.
to必須 string (date)

ExportOptionsDto

Dataset options; each applies to one dataset and is ignored by the others.

フィールド型説明
include string | null titles: titles, urls or both (default).
includeCosts boolean | null projects (Faz 6): fill the rate, amount and currency columns (needs projects.costs.read, else 403).
includeOpen boolean | null shifts: also open shifts.
splitByUser boolean | null applications: one row per user and target.
statuses string | null[] | null offline_time / absence: status filter (default approved).
targetType string | null applications: app (default), domain or host.

FieldError

One field error of a 400/422 body.

フィールド型説明
code必須 string Stable snake_case code (required, too_long, invalid, ...).
field必須 string JSON path of the field in camelCase (name, items[2].start), or the parameter/header name.
message string | null

HolidayRefDto

A holiday of a day (both names; name is the English one).

フィールド型説明
half string | null
key必須 string Built-in key (republic_day, …) or custom.
name必須 string
nameEn必須 string
nameTr必須 string
source string | null builtin or tenant.

HostUsageDto

フィールド型説明
activeMs必須 integer (int64)
domain string | null
host必須 string
level必須 string
levelSource必須 string
matchedKey string | null Key of the matching domain rule; null for the default.

InvitationEmail

What happened to the invitation e-mail.

フィールド型説明
acceptUrl string | null The acceptance link, only when no e-mail is sent (not_configured, suppressed_reserved) and only in the fresh answer (share it by hand).
status必須 string queued; not_configured when no e-mail provider is set up; suppressed_reserved when the address is an RFC 2606 / RFC 6761 reserved name (example.com, *.test, …) that is never e-mailed. Clients treat suppressed_reserved like not_configured: nothing arrives, share acceptUrl by hand.

InvitationRef

{"id","expiresAt"} of a created or re-sent invitation.

フィールド型説明
expiresAt必須 string
id必須 string (uuid)

InvitationResult

The answer of POST /v1/invitations and POST /v1/invitations/{id}/resend.

フィールド型説明
email必須 InvitationEmail
invitation必須 InvitationRef
member必須 MemberDto

LevelContextDto

Which rules the single level of an aggregate list follows (FAZ2 §5 "Listelerde hangi kural").

フィールド型説明
kind必須 string user (a userId filter: that user's current team), team (a teamId filter) or company.
teamId string (uuid) | null

MeDto

GET /v1/me.

フィールド型説明
access必須 AccessDto
capabilities必須 CapabilitiesDto
effectiveTimeZone必須 string
membership必須 MeMembership
organization必須 MeOrganization
organizations必須 OrganizationChoice[]
session MeSession | null
user必須 MeUser

MeMembership

The membership in the current organization.

フィールド型説明
id必須 string (uuid)
isTracked必須 boolean
joinedAt string | null
role必須 string
status必須 string
teamId string (uuid) | null
teamName string | null
timeZone string | null
viewerTeamIds必須 string (uuid)[]

MeOrganization

The current organization.

フィールド型説明
defaultLocale必須 string
id必須 string (uuid)
name必須 string
slug必須 string
status必須 string
timeZone必須 string

MeSession

The current session.

フィールド型説明
absoluteExpiresAt必須 string
amr必須 string[]
authTime必須 string
clientId必須 string
id必須 string (uuid)
idleExpiresAt必須 string

MeUser

The person (GET /v1/me → user).

フィールド型説明
email必須 string
emailVerification必須 EmailVerificationDto The e-mail verification gate (owner decision 3 Oct 2026).
emailVerified必須 boolean
fullName string | null
id必須 string (uuid)
locale必須 string

MemberDto

A membership with its person (MemberDto).

フィールド型説明
createdAt必須 string
email必須 string
emailVerified必須 boolean
fullName string | null
id必須 string (uuid)
invitation MemberInvitationDto | null
isTracked必須 boolean
joinedAt string | null
locale必須 string
role必須 string owner, admin, team_admin, manager, employee.
status必須 string invited, active, suspended, left.
teamId string (uuid) | null
teamName string | null
timeZone string | null
unassignedManager必須 boolean A Manager with neither a team nor viewer teams (sees the whole company until assigned).
userId必須 string (uuid)
viewerTeamIds必須 string (uuid)[]

MemberInvitationDto

The invitation of an invited member.

フィールド型説明
emailStatus string | null queued, sending, sent, failed, suppressed, not_configured, suppressed_reserved (an RFC 2606 / RFC 6761 reserved domain, never e-mailed), or null before the first e-mail.
expiresAt必須 string
id必須 string (uuid)
lastSentAt必須 string
sentCount必須 integer (int32)

MemberPage

A page of members (OpenAPI).

フィールド型説明
items必須 MemberDto[]
nextCursor string | null

MemberRefDto

A member as a reference (current row): the connecting Admin of a connection, the owner of a webhook endpoint.

フィールド型説明
active必須 boolean The membership is active and (for an endpoint or a tenant connection) still an Owner or Admin.
name string | null
userId必須 string (uuid)

NamedRefDto

A reference by id and display name (a client, a person, a task).

フィールド型説明
id必須 string (uuid)
name必須 string

OrganizationChoice

One organization of the person (sec.user_memberships).

フィールド型説明
current必須 boolean
id必須 string (uuid)
name必須 string
role必須 string
selectable必須 boolean Can this session's sign-in method open it (design §4.5.3)?

PatchMember

PATCH /v1/members/{id}.

フィールド型説明
isTracked boolean | null
role string | null admin, team_admin, manager or employee (the Owner is only transferred).
teamId string (uuid) | null Primary team; null removes it.
timeZone string | null IANA zone of the membership; null follows the organization.
viewerTeamIds string (uuid)[] | null Extra read-only teams (Manager and TeamAdmin only).

PatchTeam

PATCH /v1/teams/{id}.

フィールド型説明
description string | null
name string | null

PeriodReportDto

GET /v1/reports/productivity.

フィールド型説明
from必須 string (date)
groupBy必須 string
levelContext必須 LevelContextDto
periods必須 ReportPeriodDto[]
subject必須 ReportSubjectDto
teams必須 TeamPeriodsDto[] Only for the company subject: every visible team over its current members.
to必須 string (date)
totals必須 ReportFiguresDto

PlanAbsenceDto

フィールド型説明
color必須 string
countsAsWorked必須 boolean timeEffect == worked.
endTime string | null
half string | null
id必須 string (uuid)
startTime string | null Local start and end of an hours absence.
status必須 string approved or pending.
timeEffect必須 string leave, worked or none.
typeKey string | null
typeName string | null null for a built-in type that was not renamed (the UI translates typeKey).
unit必須 string days, half_day or hours.

PlanShiftDto

フィールド型説明
color string | null
end必須 string (date-time)
endTime必須 string Local end; before the start for a night shift.
id必須 string (uuid)
location必須 string
minMinutes必須 integer (int32)
start必須 string (date-time)
startTime必須 string Local start (HH:mm, the shift's zone).

Problem

RFC 9457 problem details (application/problem+json).

フィールド型説明
action string | null Permission key of a 403 (teams.create).
code必須 string Stable snake_case error code (catalog error-codes.json).
detail string | null
errors FieldError[] | null
requiredPlan string | null Lowest plan that includes the feature (402 feature_not_in_plan).
retryAfterSeconds integer (int32) | null Seconds to wait (429, 503; also the Retry-After header).
status必須 integer (int32)
title必須 string English title of the code (clients translate code).
traceId string | null W3C trace id of the request.
type必須 string Help page of the error code: https://workify360.com/help/errors/<code>/.

ProjectAmountDto

The amounts of one currency (rates are applied per allocation day and layer).

フィールド型説明
billableMinor必須 integer (int64) The billable hours at their rate.
costMinor必須 integer (int64) Every allocated hour at its rate.
currency必須 string

ProjectBudgetUsageDto

The use of a project's budget, all time.

フィールド型説明
budgetMinor integer (int64) | null null unless costsIncluded.
budgetMinutes integer (int64) | null
kind必須 string hours or amount.
projectId必須 string (uuid)
usedMinor integer (int64) | null The cost in the project's currency; null unless costsIncluded.
usedMs必須 integer (int64)
usedRatio string | null Used / budget, 4 decimals (null for an amount budget without costsIncluded).

ProjectDto

A project.

フィールド型説明
access必須 string everyone or members.
archived必須 boolean
budget BudgetDto | null
client NamedRefDto | null
code string | null
color string | null
createdAt必須 string (date-time)
currency必須 string The currency of the project's rates and amount budget.
description string | null
endDate string (date) | null
id必須 string (uuid)
isBillable必須 boolean
memberCount必須 integer (int64)
myRole string | null The caller's role in the project team (member, manager), null outside it.
name必須 string
permissions必須 ProjectPermissionsDto
spentMs必須 integer (int64) Every allocation of the project, all time.
startDate string (date) | null
status必須 string active, on_hold or completed.
taskCount必須 integer (int64)
updatedAt必須 string (date-time)

ProjectPage

GET /v1/projects.

フィールド型説明
items必須 ProjectDto[]
nextCursor string | null

ProjectPermissionsDto

What the caller may do with a project (decided from the current rows, §5.3).

フィールド型説明
archive必須 boolean
delete必須 boolean Only a project without time.
edit必須 boolean The project's fields (Owners and Admins).
manageMembers必須 boolean The team (an Admin or the project's manager; only an Admin changes managers).
manageTasks必須 boolean Tasks (an Admin or the project's manager).
track必須 boolean The caller may track time on it now.

ProjectRefDto

A project reference of an allocation.

フィールド型説明
color string | null #RRGGBB.
id必須 string (uuid)
name必須 string

ProjectReportDto

GET /v1/reports/projects.

フィールド型説明
budgets必須 ProjectBudgetUsageDto[]
costsIncluded必須 boolean The caller sees rates and amounts (projects.costs.read).
from必須 string (date)
groupBy必須 string[]
rows必須 ProjectReportRowDto[]
to必須 string (date)
totals必須 ProjectReportTotalsDto

ProjectReportKeysDto

The dimensions of a row (the ones not grouped by are null).

フィールド型説明
clientId string (uuid) | null
clientName string | null
date string (date) | null The allocation's local day (groupBy day).
projectId string (uuid) | null
projectName string | null
taskId string (uuid) | null
taskName string | null
userId string (uuid) | null
userName string | null

ProjectReportRowDto

One row of the project report.

フィールド型説明
allocatedMs必須 integer (int64)
amounts ProjectAmountDto[] | null null unless costsIncluded.
billableMs必須 integer (int64)
keys必須 ProjectReportKeysDto
nonBillableMs必須 integer (int64)
productiveMs integer (int64) | null With includeProductive only.
unratedMs必須 integer (int64) Time without any rate (it is left out of the amounts).

ProjectReportTotalsDto

The totals of the report.

フィールド型説明
allocatedMs必須 integer (int64)
amounts ProjectAmountDto[] | null
billableMs必須 integer (int64)
nonBillableMs必須 integer (int64)
productiveMs integer (int64) | null
unratedMs必須 integer (int64)

ProjectRequest

POST /v1/projects; PUT /v1/projects/{id} sends the whole body.

フィールド型説明
access string | null everyone (default) or members.
budget BudgetRequest | null
clientId string (uuid) | null
code string | null [A-Za-z0-9._-]{1,32}, unique among active projects.
color string | null #RRGGBB.
currency string | null TRY, USD or EUR; locked once the project has rates or invoice lines (409 project_currency_locked).
description string | null
endDate string (date) | null
isBillable boolean | null Default true.
name string | null
startDate string (date) | null
status string | null active (default), on_hold or completed.

ReportFiguresDto

Figures of a group of users over a period (sums raw, percentages the users' average, counters user-days).

フィールド型説明
absenceCreditMs必須 integer (int64)
absentDays必須 integer (int32)
activeMs必須 integer (int64)
activeUserCount必須 integer (int32)
effectivenessPct number (double) | null
idleMs必須 integer (int64)
lateDays必須 integer (int32)
leaveDays必須 number (double)
leftEarlyDays必須 integer (int32)
neutralMs必須 integer (int64)
offlineMs必須 integer (int64)
overtimeDays必須 integer (int32)
overtimeMs必須 integer (int64)
productiveMs必須 integer (int64)
productivityPct number (double) | null
targetMs必須 integer (int64)
unproductiveMs必須 integer (int64)
userCount必須 integer (int32)
workedMs必須 integer (int64)

ReportPeriodDto

One period of a grouped report: its key and bounds, then the figures.

ReportScopeDto

What the caller can see (FAZ1 AccessPolicy.ScopeOf).

フィールド型説明
kind必須 string company, teams or self.
teamIds必須 string (uuid)[] The visible teams of a teams scope, sorted; empty otherwise (company = all).
unassignedFallback必須 boolean A Manager without teams who sees the whole company until assigned.

ReportSubjectDto

Whom a report is about.

フィールド型説明
id string (uuid) | null
kind必須 string company, team or user.
name string | null

RotatedWebhookSecretDto

RotatedWebhookSecretDto: the new signing secret, shown once.

フィールド型説明
previousSecretExpiresAt必須 string Until then deliveries carry both signatures.
secret必須 string whsec_<base64>: shown once, never again.

ShiftBody

ShiftBody of POST /v1/shifts, the bulk items and PUT /v1/shifts/{id} (the whole body). Fields left null are filled from templateId.

フィールド型説明
breakMinutes integer (int32) | null
color string | null
date string (date) | null
endTime string | null
location string | null
minMinutes integer (int32) | null null = the template's, else duration − break.
note string | null
startTime string | null
teamId string (uuid) | null Required for an open shift; ignored for an assigned one (the user's current team is written).
templateId string (uuid) | null
userId string (uuid) | null null = an open shift.

ShiftDto

A shift: local fields, UTC instants, the caller's permissions.

フィールド型説明
breakMinutes必須 integer (int32)
color string | null
createdAt必須 string (date-time)
createdBy必須 CalendarUserRefDto
crossesMidnight必須 boolean
date必須 string (date)
durationMinutes必須 integer (int32)
end必須 string (date-time)
endTime必須 string
id必須 string (uuid)
location必須 string
minMinutes必須 integer (int32)
note string | null
open必須 boolean No user assigned.
permissions必須 ShiftPermissionsDto
source必須 string manual, template, copy or request.
start必須 string (date-time)
startTime必須 string
teamId string (uuid) | null Open shift: its team; assigned: the user's team when it was written.
teamName string | null
templateId string (uuid) | null
templateName string | null
timeZone必須 string
updatedAt必須 string (date-time)
user CalendarUserRefDto | null
userId string (uuid) | null null for an open shift.

ShiftListDto

GET /v1/shifts (the shifts **starting** in the range).

フィールド型説明
items必須 ShiftDto[]

ShiftPermissionsDto

フィールド型説明
canDelete必須 boolean
canEdit必須 boolean
canPickUp必須 boolean
canRequestSwap必須 boolean

SummaryDto

The summary of the visible users over a range.

フィールド型説明
absenceCreditMs必須 integer (int64)
absentDays必須 integer (int32)
activeMs必須 integer (int64)
activeUserCount必須 integer (int32)
atWorkMs必須 integer (int64)
days必須 DayTotalDto[]
deletedMs必須 integer (int64)
domains必須 DomainTotalDto[] Top 10.
effectivenessPct number (double) | null Average of the users' range Effectiveness % (inactive tracked users included).
from必須 string (date)
holidayDays必須 number (double)
idleMs必須 integer (int64)
inactiveUsers必須 UserTotalDto[] Tracked users without activity in the range (zero totals, attendance fields), by user id.
lateDays必須 integer (int32)
leaveDays必須 number (double)
leftEarlyDays必須 integer (int32)
levelContext必須 LevelContextDto
meetingMs必須 integer (int64)
neutralMs必須 integer (int64)
offlineMs必須 integer (int64)
overtimeMs必須 integer (int64)
privateMs必須 integer (int64)
productiveMs必須 integer (int64)
productivityPct number (double) | null Average of the users' range Productivity %.
scope必須 ReportScopeDto
shiftDays必須 integer (int32)
teams必須 TeamTotalDto[] By current team: named teams by name, the teamId: null row last.
to必須 string (date)
topApps必須 AppTotalDto[] Top 10; name is "Offline time" for the reserved offline keys.
unproductiveMs必須 integer (int64)
users必須 UserTotalDto[] One row per user with a computed day in the range, by activeMs.
workedMs必須 integer (int64)

TargetItemDto

フィールド型説明
activeMs必須 integer (int64)
categoryKey string | null
categorySource必須 string tenant, builtin or none.
domain string | null
level必須 string
levelSource必須 string team, company or default.
matchedKey string | null
name必須 string
percentage必須 number (double)
targetKey必須 string
targetType必須 string app for apps, domain for domains and hosts.
userCount必須 integer (int32)

TargetListDto

The "Apps & URLs" list.

フィールド型説明
from必須 string (date)
items必須 TargetItemDto[] By active time descending, then key.
levelContext必須 LevelContextDto
nextCursor string | null
to必須 string (date)
total必須 integer (int32) Targets matching the filters (before paging).
totalActiveMs必須 integer (int64) Active time over every target of the type before the filters (the percentage base).
type必須 string app, domain or host.

TaskDto

A task.

フィールド型説明
archived必須 boolean
assignee NamedRefDto | null
createdAt必須 string (date-time)
description string | null
dueDate string (date) | null
effectiveBillable必須 boolean
estimateMinutes integer (int64) | null
id必須 string (uuid)
isBillable boolean | null null takes the project's value.
name必須 string
permissions必須 TaskPermissionsDto
projectId必須 string (uuid)
sortOrder必須 integer (int64)
spentMs必須 integer (int64)
status必須 string open, in_progress or done.
updatedAt必須 string (date-time)

TaskPage

GET /v1/projects/{id}/tasks.

フィールド型説明
items必須 TaskDto[]
nextCursor string | null

TaskPermissionsDto

What the caller may do with a task.

フィールド型説明
delete必須 boolean Only a task without time.
edit必須 boolean

TaskRequest

POST /v1/projects/{id}/tasks; PUT /v1/tasks/{id} sends the whole body.

フィールド型説明
assigneeUserId string (uuid) | null Must be able to track time on the project (422 project_not_trackable).
description string | null
dueDate string (date) | null
estimateMinutes integer (int64) | null 1–1 000 000.
isBillable boolean | null null takes the project's value.
name string | null
sortOrder integer (int64) | null
status string | null open (default), in_progress or done.

TeamDto

A team with its size and leads (TeamDto).

フィールド型説明
archivedAt string | null
createdAt必須 string
description string | null
id必須 string (uuid)
leads必須 object[] TeamAdmins and Managers of the team: [{membershipId, userId, fullName, role}].
memberCount必須 integer (int64) Members whose primary team this is (left members excluded).
name必須 string
updatedAt必須 string

TeamPage

A page of teams (OpenAPI).

フィールド型説明
items必須 TeamDto[]
nextCursor string | null

TeamPeriodsDto

フィールド型説明
periods必須 ReportPeriodDto[]
teamId必須 string (uuid)
teamName string | null
totals必須 ReportFiguresDto

TeamTotalDto

One team row of a summary (current teams; percentages the members' average).

フィールド型説明
absenceCreditMs必須 integer (int64)
absentDays必須 integer (int32)
activeMs必須 integer (int64)
activeUserCount必須 integer (int32)
effectivenessPct number (double) | null
holidayDays必須 number (double)
idleMs必須 integer (int64)
lateDays必須 integer (int32)
leaveDays必須 number (double)
leftEarlyDays必須 integer (int32)
memberCount必須 integer (int32)
neutralMs必須 integer (int64)
offlineMs必須 integer (int64)
overtimeMs必須 integer (int64)
productiveMs必須 integer (int64)
productivityPct number (double) | null
shiftDays必須 integer (int32)
teamId string (uuid) | null null for the users without a team.
teamName string | null
unproductiveMs必須 integer (int64)
workedMs必須 integer (int64)

TimeEntryDecisionRequest

POST /v1/time-entries/{id}/decision.

フィールド型説明
decision string | null approve or reject.
note string | null At most 500 characters.

TimeEntryDto

An offline entry or a deletion (design §8.2).

フィールド型説明
createdAt必須 string (date-time)
createdBy必須 TimeEntryUserRefDto
date必須 string (date) The user's local day of the entry, in the zone effective when it was written.
decidedAt string (date-time) | null
decidedBy TimeEntryUserRefDto | null
decisionNote string | null
description string | null
durationMs必須 integer (int64)
end必須 string (date-time)
id必須 string (uuid)
kind必須 string offline or deletion.
level string | null Offline: productive, neutral or unproductive; deletion: null.
permissions必須 TimeEntryPermissionsDto
projectId string (uuid) | null Always null until projects (Phase 6).
source必須 string manual (Phase 8 adds calendar).
start必須 string (date-time)
status必須 string pending, approved or rejected.
timeZone必須 string
updatedAt必須 string (date-time)
userId必須 string (uuid)

TimeEntryPage

GET /v1/time-entries: by start.

フィールド型説明
items必須 TimeEntryDto[]
nextCursor string | null

TimeEntryPermissionsDto

What the caller may do with the entry (TimeEntryPolicy.PermissionsFor), the same on every endpoint.

フィールド型説明
canApprove必須 boolean
canDelete必須 boolean
canEdit必須 boolean

TimeEntryUserRefDto

A user reference of an entry (fullName from the directory; null when unknown).

フィールド型説明
fullName string | null
id必須 string (uuid)

TimeIntervalDto

A UTC interval without any detail (e.g. a private interval).

フィールド型説明
end必須 string (date-time)
start必須 string (date-time)

TimerAtRequest

POST /v1/me/timer/stop and /discard.

フィールド型説明
at string (date-time) | null

TimerCommandResultDto

The result of a command (200 also when it did not apply).

フィールド型説明
applied必須 boolean
closed必須 AllocationDto[] The allocations written from the segment this command closed (may be empty).
reason string | null stale, not_running or unchanged; null when applied.
timer必須 TimerDto

TimerDto

GET /v1/me/timer (ETag: "v<rowVersion>", "v0" before the first command).

フィールド型説明
autoStopAt string (date-time) | null startedAt + 24 hours.
effectiveBillable boolean | null
isBillable boolean | null
last TimerLastDto | null
note string | null
project TimerProjectDto | null
segmentId string (uuid) | null
serverTime必須 string (date-time) The server's clock (clients compute the elapsed time against it).
source string | null web, desktop or api.
startedAt string (date-time) | null
state必須 string running or stopped.
task NamedRefDto | null

TimerLastDto

The segment that ended last.

フィールド型説明
endReason必須 string stop, switch, autostop or discard.
endedAt必須 string (date-time)
segmentId必須 string (uuid)
startedAt必須 string (date-time)

TimerProjectDto

The project of the running segment.

フィールド型説明
clientName string | null
color string | null
id必須 string (uuid)
name必須 string

TimerStartRequest

POST /v1/me/timer/start (Idempotency-Key: the client's command id): start, or switch while running.

フィールド型説明
at string (date-time) | null The client's clock when the command was given (default: the server's now; at most 5 minutes ahead, at most 7 days back).
isBillable boolean | null
note string | null
projectId string (uuid) | null
source string | null web (default), desktop or api.
taskId string (uuid) | null

UpdateTimeEntryRequest

PUT /v1/time-entries/{id}: the whole editable body (kind and user never change; If-Match instead of version).

フィールド型説明
description string | null
end string (date-time) | null
level string | null
projectId string (uuid) | null
start string (date-time) | null

UpdateWebhookEndpointRequest

PATCH /v1/webhook-endpoints/{id} (If-Match).

フィールド型説明
description string | null null clears it.
eventTypes string[] | null
status string | null active (also opens a disabled endpoint and resets its failure counters) or paused.
takeOver boolean | null true: the caller becomes the endpoint's owner (lifts an owner_inactive pause).
url string | null

UserDailyDto

A user's days: computed days plus the workdays without activity up to the user's today.

フィールド型説明
days必須 UserDayDto[]
from必須 string (date)
teamId string (uuid) | null The user's current primary team (its rules classify every day).
timeZone必須 string
to必須 string (date)
userId必須 string (uuid)

UserDayDto

フィールド型説明
absence DayAbsenceDto | null
absenceCreditMs必須 integer (int64)
activeMs必須 integer (int64)
afkCoverage必須 boolean
arrivalAt string (date-time) | null
atWorkMs必須 integer (int64)
attendanceStatus string | null onTime, late, absent, notStarted, dayOff, onLeave, holiday; null outside the directory.
classified必須 boolean
date必須 string (date)
dayOffWorkedMs必須 integer (int64)
deletedMs必須 integer (int64)
effectivenessPct number (double) | null
eventCount必須 integer (int64)
expectedWorkMs必須 integer (int64)
holiday DailyHolidayDto | null
idleMs必須 integer (int64)
lateByMs必須 integer (int64)
leftAt string (date-time) | null
leftEarly必須 boolean
leftEarlyByMs必須 integer (int64)
meetingMs必須 integer (int64)
neutralMs必須 integer (int64)
offlineMs必須 integer (int64)
overtimeMs必須 integer (int64)
planKind string | null schedule, shift, dayOff or holiday.
privateMs必須 integer (int64)
productiveMs必須 integer (int64)
productivityPct number (double) | null
shiftCount必須 integer (int32)
targetMs必須 integer (int64)
topApp string | null Display name of the app with the most active time.
unproductiveMs必須 integer (int64)
workday boolean | null
workedMs必須 integer (int64)

UserTotalDto

One user of a summary.

フィールド型説明
absenceCreditMs必須 integer (int64)
absentDays integer (int32) | null Only for tracked users.
activeDays必須 integer (int32) Local days with active time.
activeMs必須 integer (int64)
arrivalAt string (date-time) | null Earliest arrival and latest leave in the range.
atWorkMs必須 integer (int64)
classifiedDays必須 integer (int32)
dayOffWorkedMs必須 integer (int64)
deletedMs必須 integer (int64)
effectivenessPct number (double) | null null without a target and for users missing from the directory.
email string | null
eventCount必須 integer (int64)
fullName string | null
holidayDays必須 number (double)
idleMs必須 integer (int64)
lateDays integer (int32) | null
leaveDays必須 number (double)
leftAt string (date-time) | null
leftEarlyDays integer (int32) | null
meetingMs必須 integer (int64)
neutralMs必須 integer (int64)
offlineMs必須 integer (int64)
overtimeDays必須 integer (int32)
overtimeMs必須 integer (int64)
privateMs必須 integer (int64)
productiveMs必須 integer (int64)
productivityPct number (double) | null
shiftDays必須 integer (int32)
targetMs integer (int64) | null
teamId string (uuid) | null
teamName string | null
timeZone必須 string
unproductiveMs必須 integer (int64)
userId必須 string (uuid)
workdays integer (int32) | null
workedMs必須 integer (int64)

WebhookDeliveryDetailDto

GET /v1/webhook-endpoints/{id}/deliveries/{deliveryId}: the delivery and the body that was (or is) sent.

WebhookDeliveryDto

WebhookDeliveryDto.

フィールド型説明
attempts必須 integer (int32)
createdAt必須 string
deliveredAt string | null
eventId必須 string (uuid) The webhook-id header.
eventType必須 string
id必須 string A 64-bit integer as a string.
lastDurationMs integer (int32) | null
lastError string | null timeout, connect, tls, not_allowed, http_<code>, not_in_plan, owner_inactive.
lastStatusCode integer (int32) | null
nextAttemptAt string | null
status必須 string pending, succeeded, failed, dead.

WebhookDeliveryPage

GET /v1/webhook-endpoints/{id}/deliveries (newest first).

フィールド型説明
items必須 WebhookDeliveryDto[]
nextCursor string | null

WebhookEndpointDto

WebhookEndpointDto.

フィールド型説明
createdAt必須 string
description string | null
eventTypes必須 string[]
id必須 string (uuid)
owner必須 MemberRefDto The member who owns the endpoint (G1: a delivery needs an active Owner or Admin owner).
previousSecretExpiresAt string | null After a rotation the previous secret still signs until then (24 hours).
secretPrefix必須 string The first 8 characters of the signing secret (whsec_Kx); never the secret.
stats必須 WebhookEndpointStatsDto
status必須 string active, paused, disabled.
statusReason string | null manual, owner_inactive, failing, gone; null while active.
updatedAt必須 string
url必須 string
version必須 integer (int64) row_version (ETag: "v<n>", If-Match of PATCH).

WebhookEndpointPage

GET /v1/webhook-endpoints.

フィールド型説明
items必須 WebhookEndpointDto[]
nextCursor string | null

WebhookEndpointStatsDto

The delivery statistics of an endpoint.

フィールド型説明
consecutiveFailures必須 integer (int32)
lastFailureAt string | null
lastSuccessAt string | null

WebhookEventDto

One event type of GET /v1/webhook-events.

フィールド型説明
available必須 boolean The tenant's plan has the feature: an endpoint may subscribe.
description必須 string One English sentence (the panel translates by type).
feature string | null The plan feature the event needs (null: every plan with api_access).
object必須 string The data.object of the delivery body.
type必須 string <object>.<verb>, e.g. time_entry.approved.

WebhookEventsDto

GET /v1/webhook-events.

フィールド型説明
items必須 WebhookEventDto[]

WebhookTestDto

202 of POST /v1/webhook-endpoints/{id}/test.

フィールド型説明
deliveryId必須 string The delivery of the test event (a string: the deliveries' id is a 64-bit integer).