Skip to content

Get Time Punches

Operation
wsdlGetTimePunches
SOAP Action
uri:FlexForce/GetTimePunches
Service
FlexForce
Port
FlexForcePort
Style
rpc

Export time punches from Quinyx WFM.

This web service method is used to export time punches from Quinyx WFM, according to selection specified in the request.

You need to set at least one parameter even though they are optional. We strongly suggest fromDate and toDate to maximum 30 days.

Datetime handling

All datetime fields in the response carry the backend server's timezone offset (Europe/Stockholm) — +01:00 in winter, +02:00 during EU summer time — regardless of the unit's actual timezone.

For the punch fields (punchIn, punchOut, orgPunchIn, orgPunchOut) the datetime part is the punch time in the unit's local timezone: Ignore the offset and use the datetime part as-is.

Do not let a datetime library apply the offset (e.g. by normalising to UTC). That shifts every punch time. The ts field is the exception: its datetime part is the server clock, not unit-local.


Request

Message: wsdlGetTimePunchesRequest

apiKeystring

API key of the unit.

getTimePunchesRequestgetTimePunchesRequest

Filter set

employeeIdint

Optional selection on employee, using the internal identification of the employee.

badgeNostring

Optional selection on employee, using the employee badge number.

sectionIdint

Optional selection on section, using internal identification of the section.

fromDatedate

Include punches starting on or after this date, evaluated against the punch start in the unit's local timezone.

FormatYYYY-MM-DD
toDatedate

Include punches starting on or before this date, evaluated against the punch start in the unit's local timezone.

FormatYYYY-MM-DD
transferredToPayrollboolean

Include time punches that has been transferred to payroll and locked.

Defaulttrue
notTransferredToPayrollboolean

Include time punches that hasn’t been transferred to payroll.

Defaulttrue
approvedboolean

Include approved time punches.

Defaulttrue
unapprovedboolean

Include unapproved time punches.

Defaulttrue
deletedboolean

Include deleted time punches.

Defaultfalse
activeboolean

Include active punches (not deleted)

Defaulttrue
allUnitsboolean

Include punches from ALL units instead of the unit specified by API key only

Defaultfalse
modifiedAfterstring

Only return punches modified after this moment. Compared against the record's ts value.

FormatYYYY-MM-DD HH:MM:SS
Example2021-01-01 00:00:00
employeeUnitModeint

Controls which punches to fetch based on the unit of the API key. Either fetch all punches from employees who has that unit as home unit, alternatively to fetch all punches punched at that unit (no matter the home unit of the employee punching in)

Values
0From home unit
1From unit worked at
Default0
shiftTaskInfoboolean

If you want to include the shift type connected to the punch

curl -X POST 'https://api.quinyx.com/FlexForceWebServices.php' \
  -H 'Content-Type: text/xml; charset=utf-8' \
  -H 'SOAPAction: "uri:FlexForce/GetTimePunches"' \
  --data @- <<'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://api.quinyx.com/soap/FlexForce">
  <soap:Body>
    <tns:wsdlGetTimePunches>
    <apiKey xsi:type="xsd:string">string</apiKey>
    <getTimePunchesRequest xsi:type="tns:getTimePunchesRequest">
      <employeeId xsi:type="xsd:int">0</employeeId>
      <badgeNo xsi:type="xsd:string">string</badgeNo>
      <sectionId xsi:type="xsd:int">0</sectionId>
      <fromDate xsi:type="xsd:date">2024-01-01</fromDate>
      <toDate xsi:type="xsd:date">2024-01-01</toDate>
      <transferredToPayroll xsi:type="xsd:boolean">true</transferredToPayroll>
      <notTransferredToPayroll xsi:type="xsd:boolean">true</notTransferredToPayroll>
      <approved xsi:type="xsd:boolean">true</approved>
      <unapproved xsi:type="xsd:boolean">true</unapproved>
      <deleted xsi:type="xsd:boolean">true</deleted>
      <active xsi:type="xsd:boolean">true</active>
      <allUnits xsi:type="xsd:boolean">true</allUnits>
      <modifiedAfter xsi:type="xsd:string">2021-01-01 00:00:00</modifiedAfter>
      <employeeUnitMode xsi:type="xsd:int">0</employeeUnitMode>
      <shiftTaskInfo xsi:type="xsd:boolean">true</shiftTaskInfo>
    </getTimePunchesRequest>
    </tns:wsdlGetTimePunches>
  </soap:Body>
</soap:Envelope>
EOF

Response

Message: wsdlGetTimePunchesResponse

returnGetTimePunchesResponse

A GetTimePunchesResponse wrapping the matched time punches and any validationErrors.

timepunchesArray<TimePunch>required

Array of TimePunch records matching the request.

itemTimePunch

A time punch (clock-in / clock-out) record.

validationErrorsArray<xsd:string>required

Array of validation errors. Empty on success.

itemstring
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://api.quinyx.com/soap/FlexForce">
  <soap:Body>
    <tns:wsdlGetTimePunchesResponse>
    <return xsi:type="tns:GetTimePunchesResponse">
      <timepunches xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:TimePunch[1]">
        <item xsi:type="tns:TimePunch">
          <id xsi:type="xsd:int">67891</id>
          <employeeName xsi:type="xsd:string">string</employeeName>
          <restId xsi:type="xsd:int">0</restId>
          <badgeNo xsi:type="xsd:string">string</badgeNo>
          <socsecNo xsi:type="xsd:string">string</socsecNo>
          <cardNo xsi:type="xsd:string">string</cardNo>
          <punchIn xsi:type="xsd:dateTime">2015-12-31T08:00:00+01:00</punchIn>
          <punchOut xsi:type="xsd:dateTime">2015-12-31T17:00:00+01:00</punchOut>
          <orgPunchIn xsi:type="xsd:dateTime">2015-12-31T08:00:00+02:00</orgPunchIn>
          <orgPunchOut xsi:type="xsd:dateTime">2015-12-31T17:00:00+02:00</orgPunchOut>
          <hours xsi:type="xsd:decimal">0</hours>
          <approvedByEmployee xsi:type="xsd:boolean">true</approvedByEmployee>
          <approvedByManager xsi:type="xsd:boolean">true</approvedByManager>
          <approvedByCustomer xsi:type="xsd:boolean">true</approvedByCustomer>
          <costCentre xsi:type="xsd:string">string</costCentre>
          <projectNo xsi:type="xsd:string">string</projectNo>
          <accountNo xsi:type="xsd:string">string</accountNo>
          <agrmntAdditionalField1 xsi:type="xsd:string">string</agrmntAdditionalField1>
          <agrmntAdditionalField2 xsi:type="xsd:string">string</agrmntAdditionalField2>
          <agrmntAdditionalField3 xsi:type="xsd:string">string</agrmntAdditionalField3>
          <agrmntAdditionalField4 xsi:type="xsd:string">string</agrmntAdditionalField4>
          <agrmntAdditionalField5 xsi:type="xsd:string">string</agrmntAdditionalField5>
          <externalInfo1 xsi:type="xsd:string">string</externalInfo1>
          <externalInfo2 xsi:type="xsd:string">string</externalInfo2>
          <externalInfo3 xsi:type="xsd:string">string</externalInfo3>
          <decisionNo xsi:type="xsd:string">string</decisionNo>
          <customerNo xsi:type="xsd:string">string</customerNo>
          <scheduleId xsi:type="xsd:int">0</scheduleId>
          <transferredToPayroll xsi:type="xsd:boolean">true</transferredToPayroll>
          <deleted xsi:type="xsd:boolean">true</deleted>
          <productiveTime xsi:type="xsd:boolean">true</productiveTime>
          <isOpen xsi:type="xsd:boolean">true</isOpen>
          <comment xsi:type="xsd:string">string</comment>
          <managerComment xsi:type="xsd:string">string</managerComment>
          <employeeId xsi:type="xsd:int">0</employeeId>
          <shiftCategoryId xsi:type="xsd:int">0</shiftCategoryId>
          <extShiftCategoryId xsi:type="xsd:string">string</extShiftCategoryId>
          <shiftCategoryName xsi:type="xsd:string">string</shiftCategoryName>
          <subShiftReference xsi:type="xsd:int">0</subShiftReference>
          <ts xsi:type="xsd:dateTime">2015-12-31T08:00:00+02:00</ts>
        </item>
      </timepunches>
      <validationErrors xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[1]">
        <item xsi:type="xsd:string">string</item>
      </validationErrors>
    </return>
    </tns:wsdlGetTimePunchesResponse>
  </soap:Body>
</soap:Envelope>

Change log

Date Description
2019-02-13 Added shiftCategoryId, extShiftCategoryId, shiftCategoryName to the response and shiftTaskInfo to the request
2020-03-20 subShiftReference
2020-05-20 orgPunchOut, orgPunchIn