پبلک API ریفرنس

Workify360 Focus پبلک API آپ کے اپنے اسکرپٹس اور ٹولز کو رپورٹس اور وقت کا ڈیٹا پڑھنے اور ڈیش بورڈ والے اصولوں کے مطابق تبدیلیاں کرنے دیتا ہے۔ پبلک API، API کلیدیں اور ویب ہُکس 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

اسکوپس

ہر آپریشن کو ایک اسکوپ درکار ہوتا ہے، جو اس کے ساتھ دکھایا گیا ہے۔ کوئی کلید کسی آپریشن تک تب پہنچتی ہے جب اس کے پاس وہ اسکوپ ہو اور اس کے مالک کا موجودہ رول، ٹیمیں اور پلان ریکوئسٹ کی اجازت دیں، بالکل ڈیش بورڈ کی طرح۔

اسکوپیہ کس چیز کی اجازت دیتا ہے
meآپ کی اپنی پروفائل اور آپ کا ٹائمر
reports:readرپورٹس، وقت کے اندراجات، غیر حاضریاں، شفٹیں، ٹیمیں، پروجیکٹس، ٹاسکس اور ایکسپورٹس پڑھنا
time:writeوقت کے اندراجات، غیر حاضریاں، شفٹیں، ٹاسکس اور ٹاسکس کو تفویض کردہ وقت شامل اور تبدیل کرنا، اور درخواستوں پر فیصلہ کرنا
org:adminارکان، ٹیموں، دعوت ناموں اور پروجیکٹس کا انتظام
webhooks:manageویب ہُک اینڈ پوائنٹس کا انتظام

ریٹ لمٹس

ہر کلید فی منٹ 600 یونٹس اور ایک ادارہ اپنی تمام کلیدوں کے لیے مجموعی طور پر 1,800 یونٹس بھیج سکتا ہے۔ کچھ تبدیل کرنے والی ریکوئسٹ (GET اور HEAD کے علاوہ کوئی بھی) دو یونٹس شمار ہوتی ہے، باقی ہر ریکوئسٹ ایک۔ ایک کلید یکدم زیادہ سے زیادہ 60 یونٹس بھیج سکتی ہے، جو 10 فی سیکنڈ کی رفتار سے دوبارہ بھرتے ہیں: یکدم 60 سے زیادہ ریڈز (یا 30 تبدیلیوں) پر 429 ملتا ہے، چاہے فی منٹ 600 سے کم ہوں۔

ہیڈرمطلب
RateLimit: "key";r=598;t=2ہر شمار شدہ جواب پر: کلید کے باقی یونٹس اور ان کے دوبارہ پورا ہونے تک کے سیکنڈز
RateLimit-Policy: "key";q=600;w=60, "tenant";q=1800;w=60ہر شمار شدہ جواب پر: کلید اور ادارے کی فی منٹ حدیں
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"
}

کچھ problems میں مزید فیلڈز ہوتی ہیں: 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 میں دیے گئے سیکنڈز انتظار کریں

جن کوڈز کا ہیلپ آرٹیکل ہے وہ آپریشنز کی فہرست میں لنک ہیں۔

ویب ہُکس

API سے بار بار پوچھنے کے بجائے، کچھ تبدیل ہونے پر آپ کا کوئی اینڈ پوائنٹ ایک دستخط شدہ HTTPS ریکوئسٹ وصول کر سکتا ہے۔ ایونٹس، ریکوئسٹ کا فارمیٹ، Node.js اور Python میں دستخط کی تصدیق کا طریقہ، دوبارہ کوششیں اور سیکرٹ کی تبدیلی ہیلپ آرٹیکل میں بیان کی گئی ہیں: ویب ہُکس

آپریشنز

شعبے کے لحاظ سے گروپ شدہ۔ خلاصے اور فیلڈز کی وضاحتیں 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
ایررز

ویب ہُکس

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
ایررز

POST /v1/webhook-endpoints/{id}/rotate-secret اسکوپ: webhooks:manage

A new signing secret (the previous one still signs for 24 hours).

پیرامیٹرز
ناممقامقسموضاحت
idلازمی پاتھ string (uuid) The endpoint
جوابات
200 RotatedWebhookSecretDto
ایررز

اسکیماز

ریکوئسٹ اور جواب کی وہ باڈیز جو آپریشنز استعمال کرتے ہیں۔ لازمی فیلڈز نشان زد ہیں۔

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).