পাবলিক 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টি পরিবর্তন) পাঠালে মিনিটে 600-এর নিচে থাকলেও 429 পাবেন।

হেডারঅর্থ
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 প্রবলেম ডকুমেন্ট (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-এ দেওয়া সেকেন্ড অপেক্ষা করুন

যেসব কোডের হেল্প আর্টিকেল আছে, অপারেশনের তালিকায় সেগুলো লিংক হিসেবে দেখানো হয়।

ওয়েবহুক

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
এরর

সদস্য

POST /v1/invitations স্কোপ: org:admin

Invite a person.

প্যারামিটার
নামঅবস্থানটাইপবিবরণ
Idempotency-Keyআবশ্যক হেডার string Required: 1–255 printable ASCII characters
রিকোয়েস্ট বডি
CreateInvitation
রেসপন্স
201 InvitationResult
এরর

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
এরর

GET /v1/projects/{id} স্কোপ: reports:read

One project (invisible projects are 404).

প্যারামিটার
নামঅবস্থানটাইপবিবরণ
idআবশ্যক পাথ string (uuid) Project id
রেসপন্স
200 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
এরর

GET /v1/tasks/{id} স্কোপ: reports:read

One task of a visible project.

প্যারামিটার
নামঅবস্থানটাইপবিবরণ
idআবশ্যক পাথ string (uuid) Task id
রেসপন্স
200 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/me/timer/stop স্কোপ: me

Stop the running timer at at; its segment becomes allocations.

প্যারামিটার
নামঅবস্থানটাইপবিবরণ
Idempotency-Key হেডার string | null The client's command id; a retry returns the first answer
রিকোয়েস্ট বডি
TimerAtRequest
রেসপন্স
200 TimerCommandResultDto
এরর

ওয়েবহুক

GET /v1/webhook-endpoints স্কোপ: webhooks:manage

The tenant's webhook endpoints.

প্যারামিটার
নামঅবস্থানটাইপবিবরণ
cursor কোয়েরি string
limit কোয়েরি integer (int32) 1–200, default 50.
রেসপন্স
200 WebhookEndpointPage
এরর

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
এরর

GET /v1/webhook-endpoints/{id} স্কোপ: webhooks:manage

One webhook endpoint.

প্যারামিটার
নামঅবস্থানটাইপবিবরণ
idআবশ্যক পাথ string (uuid) The endpoint
রেসপন্স
200 WebhookEndpointDto
এরর

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
এরর

GET /v1/webhook-endpoints/{id}/deliveries/{deliveryId} স্কোপ: webhooks:manage

One delivery with the body that was sent.

প্যারামিটার
নামঅবস্থানটাইপবিবরণ
idআবশ্যক পাথ string (uuid) The endpoint
deliveryIdআবশ্যক পাথ string The delivery (a 64-bit integer)
রেসপন্স
200 WebhookDeliveryDetailDto
এরর

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
এরর

POST /v1/webhook-endpoints/{id}/test স্কোপ: webhooks:manage

Send the webhook.test event (also to a paused endpoint).

প্যারামিটার
নামঅবস্থানটাইপবিবরণ
idআবশ্যক পাথ string (uuid) The endpoint
রেসপন্স
202 WebhookTestDto
এরর

স্কিমা

অপারেশনগুলো যে রিকোয়েস্ট ও রেসপন্স বডি ব্যবহার করে। আবশ্যক ফিল্ডগুলো চিহ্নিত করা আছে।

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