{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Use cases","description":"REST API for the Dyflexis workforce management platform: employees, scheduling, time clock, payroll, absence, and workload, demand forecasting, staff capacity.","keywords":["Dyflexis","workforce management API","staff scheduling API","time clock API","payroll API","staff capacity API","absence management API","OpenAPI 3.1"],"siteUrl":"https://beta-developer.dyflexis.com","lang":"en-US","llmstxt":{"sections":[{"title":"API reference","description":"OpenAPI 3.1 reference for every Dyflexis endpoint.","includeFiles":["openapi.yaml","paths/**","components/**"],"excludeFiles":[]},{"title":"Guides","description":"Onboarding, quickstart, integration patterns, webhook receiver contract, and the partner process.","includeFiles":["index.md","guides/**"],"excludeFiles":[]}],"hide":false,"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"use-cases","__idx":0},"children":["Use cases"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Dyflexis API is designed to slot into the systems already"," ","running your business. Below are three common integration"," ","shapes, pick the one that matches the role your software plays"," ","in the customer's stack."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"business-intelligence-bi","__idx":1},"children":["Business intelligence (BI)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pull scheduled hours, registered hours, and payroll-period data"," ","into a BI tool such as ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Power BI"]}," so leadership can monitor"," ","workforce cost, productivity, and absence trends alongside"," ","revenue."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Typical endpoints"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/business/v3/scheduled"]},", planned shifts for a period"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/business/v3/registered-hours"]},", worked hours after"," ","clocking, ready for variance analysis against the schedule"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/business/v3/employees"]},", employee dimension table"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/department-management/v3/tree"]},", office and"," ","department dimension hierarchy"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/absence/v3/sick-leave"]},", absence facts for"," ","availability dashboards"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authentication."]}," Issue a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["business"]}," scope token per BI"," ","service account. Most BI tools attach it on every refresh as an"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization: Token <key>"]}," header."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Refresh cadence."]}," Polling once per hour during business"," ","hours is plenty for most dashboards. For near-real-time"," ","operational views, subscribe to the"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/webhooks"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Payroll period ready"]}," webhook"]}," ","and pull the period only when notified."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"point-of-sale-pos","__idx":2},"children":["Point of sale (POS)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use information streams to push ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["historically realised"," ","workload"]}," from the POS into Dyflexis (covers served,"," ","transactions completed, visitors counted) so the forecaster"," ","learns from what actually happened on the floor. The same"," ","integration can record clock-in and clock-out events from the"," ","POS terminal."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Typical endpoints"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /information-streams/v3/streams"]},", register a stream"," ","for the workload metric you want to record (for example"," ","\"revenue per hour\" for a restaurant, or \"transactions per"," ","hour\" for a retail store)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /information-streams/v3/datapoint/{key}"]},", push"," ","historically realised data points as transactions are"," ","finalised at the end of a shift or trading day"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/clock/v3/clock-in"]},", record a clock-in event"," ","against the POS terminal acting as the clocking device"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/clock/v3/clock-out"]},", record the matching"," ","clock-out event"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authentication."]}," Two scopes are typically used together:"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["forecasting"]}," for stream writes and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clock"]}," for clock events."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Granularity."]}," Pick a granularity at stream creation time"," ","that matches your POS reporting cadence, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hour"]}," works well"," ","for restaurants and bars, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["day"]}," is enough for retail."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"operational-software","__idx":3},"children":["Operational software"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Synchronise the workforce of record from an enterprise"," ","resource planning system, a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["WMS"]}," (warehouse management"," ","system) for logistics, a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["PMS"]}," (property management system)"," ","for hospitality, or a generic ERP for everything in between,"," ","into Dyflexis, and push payroll-ready hours back for"," ","downstream salary processing."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Typical endpoints"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api2/external-employees/{employeeReference}"]},","," ","upsert employees from the ERP master"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api2/external-employees/{employeeReference}/contracts"]},","," ","push employment contracts"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/payroll/v3/employees"]},", pull employees with the"," ","payroll-relevant subset of fields"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/payroll/v3/hours-per-day/..."]},", pull hours per"," ","day for a payroll period"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api2/payroll/queue/from/{lastQueueId}"]},", poll the"," ","queue of finalised periods waiting to be picked up"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api2/payroll/queue/{queueId}/status"]},", acknowledge"," ","once the ERP has consumed the period"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authentication."]}," Three scopes are usually combined:"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["external_employees"]}," for the employee/contract upsert,"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payroll"]}," for pulling period data, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payroll_hours"]}," for"," ","consuming the queue."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Idempotency."]}," Both ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["external-employees"]}," and the contracts"," ","endpoint are upserts keyed by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["employeeReference"]}," and"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contractReference"]}," respectively, replaying the same payload"," ","is safe and is the recommended way to recover from transient"," ","failures."]}]},"headings":[{"value":"Use cases","id":"use-cases","depth":1},{"value":"Business intelligence (BI)","id":"business-intelligence-bi","depth":2},{"value":"Point of sale (POS)","id":"point-of-sale-pos","depth":2},{"value":"Operational software","id":"operational-software","depth":2}],"frontmatter":{"seo":{"title":"Use cases"}},"lastModified":"2026-06-12T16:29:02.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/use-cases","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}