Decision Logic Odata API Documentation

Overview

OData v3 compliant

The latest version of the Decision Logic (DL) API is OData v3 compliant and allows various DL endpoints to be queried. Examples of all current DL endpoint usage are included throughout this document, but this is not intended to be an exhaustive OData resource.

Note:

Quick Reference Endpoints

As of DL v6.17, collections marked by * have additional restrictions on their OData queries.

Resource/Collection

Endpoint (case-sensitive)

Assigned page requirement†

Endpoint Roster

api/odata/v3

None

Metadata

api/odata/v3/$metadata

None

Checks *

api/odata/v3/Checks

Daily Sales Report

Departments

api/odata/v3/Departments

Authorization only‡

Employee Custom Fields

api/odata/v3/EmployeeCustomFields

Employee Roster§

Employee Jobs

api/odata/v3/EmployeeJobs

Employee Roster§

Employee Stores

api/odata/v3/EmployeeStores

Employee Roster§

Employee Transactions

api/odata/v3/EmployeeTransactions

Employee Roster§

Employees

api/odata/v3/Employees

Employee Roster§

Hot Items IVA Summary *

api/odata/v3/HotItemsIVASummary

Daily Sales Report

Jobs

api/odata/v3/Jobs

Authorization only‡

Line Types

api/odata/v3/LineTypes

Authorization only‡

Menu Items

api/odata/v3/MenuItems

Authorization only‡

Reduction Types

api/odata/v3/ReductionTypes

Authorization only‡

Menu Item Categories

api/odata/v3/MenuItemCategories

Authorization only‡

Order Types

api/odata/v3/OrderTypes

Authorization only‡

Plate Cost and Sale Price *

api/odata/v3/ PlateCostAndSalePrice

Daily Sales Report

Product Mix *

api/odata/v3/ProductMix

Daily Sales Report

Sales *

api/odata/v3/Sales

Daily Sales Report

Sales By Half Hour *

api/odata/v3/SalesByHalfHour

Daily Sales Report

Sales Summary *

api/odata/v3/SalesSummary

Daily Sales Report

Stores

api/odata/v3/Stores

Authorization only‡

Theoretical vs Actual (TvA) *

api/odata/v3/TvA

Daily Sales Report

TimeClock *

api/odata/v3/TimeClock

Payroll Report

Wage Adjustments

api/odata/v3/WageAdjustments

Payroll Report

† - The endpoints are restricted based upon the scope assigned in Profile Maintenance. The profile must have at least View access to the required page. (See Figure 1.) The scope identifier is set on the Profiles tab. (See Figure 2.)
‡ - Items do not require an assigned page, though they require valid credentials in the request.
§ - The store restriction applies to the stores mapped to employees. If the ODATA user has access to store A but not store B, an employee at B will not appear until store A is mapped.

 

Figure 1. Profile Maintenance / Assigned pages

Figure 2. Profile Maintenance / Profiles

 

Resource/Collection

Unsupported OData query options

Checks

$orderby

Hot Items IVA Summary

$expand $orderby

Plate Cost and Sale Price

$expand $orderby

Product Mix

$expand $orderby

Sales

$orderby

Sales By Half Hour

$orderby

Sales Summary

$orderby

Theoretical vs Actual (TvA)

$expand $orderby

TimeClock

$orderby

 

Collections not available for querying

HotItemsIvA

Measures

Inventory

MenuSetMenuItemMap

InventoryDate

Products

 

Authentication

The Decision Logic API uses a Basic Authentication header that is implemented as follows:

  • A Username consists of an API key and the actual username separated by a colon:

    • Ie. 000000000000-0000-0000-000000000000:username

    • The password is a separate entry.

An example - a username of '1234567AA-R2D2-67B4-C3P0-789EB34MC516:helpdesk' and the current password for the helpdesk user. The username and password must belong to a valid user in Decision Logic.

 

Endpoint Roster

The Decision Logic API provides the user with a list of the available endpoints from which data can be queried.

Included in this list are collections which are only available as expand options and cannot be queried.

Retrieve a list of Decision Logic endpoints:

GET https://webapi.mydlweb.com/api/odata/v3

Example response:

<workspace> <atom:title type="text">Default</atom:title> <collection href="Checks"> <atom:title type="text">Checks</atom:title> </collection> . . . <collection href="OrderTypes"> <atom:title type="text">OrderTypes</atom:title> </collection> </workspace>

Expand Query Option

The Decision Logic API provides the user with a query option that allows clients to request related resources on specific endpoints. The expand options for an endpoint are included in its respective section.

Retrieve a list of available check details that includes related information about the store for each check:

GET https://webapi.mydlweb.com/api/odata/v3/Checks?$expand=Store

Example response:

<StoreId>140</StoreId> <CustomerStoreId>239</CustomerStoreId> <Address1>1234 N Rock Road</Address1> <City>Wichita</City> <State>KS</State> <ZipCode>67221</ZipCode> <PhoneNumber>321-555-1212</PhoneNumber> <TaxIncluded>false</TaxIncluded> <LiquorTax>0.0000</LiquorTax> <MinimumWage>0.00</MinimumWage> <StMinimumWage>0.00</StMinimumWage> <EODWorkflowId>1</EODWorkflowId> <StoreId>140</StoreId> <Date>2015-09-24T00:00:00</Date> <CheckNumber>264</CheckNumber> <ServerId>0</ServerId> <StartTime>19:48</StartTime> <CloseTime>19:50</CloseTime> <Amount>128.51</Amount> <Tip>0.00</Tip> <CustomerCount>8</CustomerCount> <CreditCardFlag>0</CreditCardFlag> <OrderTypeId>0</OrderTypeId>

 

Filter Query Option

The Decision Logic API provides the user with a query option that allows clients to filter an OData response based upon criteria relative to the endpoints being used.

For more OData syntax rules, please see http://www.odata.org/documentation/odata-version-3-0/

Retrieve a complete sales summary of all stores on 10/10/17:

GET http://webapi.mydlweb.com/api/odata/v3/SalesSummary?$filter=Date eq DateTime'2017-10-10'

Example Response:

<SaleSummary> <Id>c36b9cc8-29cb-4337-81aa3bf5c6748edf</Id> <RecordID>1</RecordID> <RecordName>Gross Sales</RecordName> <StoreID>0</StoreID> <CustomerStoreID>0</CustomerStoreID> <StoreName>9999 - Gibbon</StoreName> <Date>2017-10-10T00:00:00</Date> <DepartmentID>222</DepartmentID> <DepartmentName>Non-Alc Bevs</DepartmentName> <TypeID>0</TypeID> <TypeName/> <Amount>104.60</Amount> <Tip>0.00</Tip> <CashBack>0.00</CashBack> <Reason/> <AccountId/> </SaleSummary> . . . <SaleSummary> <Id>1e981a2d-8160-460e-95d7b8b75768bc58</Id> <RecordID>5</RecordID> <RecordName>Payments</RecordName> <StoreID>0</StoreID> <CustomerStoreID>0</CustomerStoreID> <StoreName>9999 - Gibbon</StoreName> <Date>2017-10-10T00:00:00</Date> <DepartmentID>300</DepartmentID> <DepartmentName/> <TypeID>301</TypeID> <TypeName>Visa</TypeName> <Amount>462.88</Amount> <Tip>0.00</Tip> <CashBack>0.00</CashBack> <Reason/> <AccountId/> </SaleSummary>

Metadata

The Decision Logic API provides the user with a list of the fields of data from each of the available endpoints.

Retrieve a list of fields contained within each of the available Decision Logic endpoints:

GET https://webapi.mydlweb.com/api/odata/v3/$metadata/

Example response:

<EntityType Name="Job"> <Key> <PropertyRef Name="ID"/> </Key> <Property Name="ID" Type="Edm.Int32" Nullable="false"/> <Property Name="Name" Type="Edm.String"/> <Property Name="IsBOH" Type="Edm.Int32" Nullable="false"/> <Property Name="Account" Type="Edm.String"/> <Property Name="Active" Type="Edm.Int32" Nullable="false"/> </EntityType> >

Multiple Query Options

The Decision Logic API provides the ability to combine multiple query options. This allows clients to expand, filter, and/or control the page size in an OData response based upon criteria relative to the endpoints being used.

For more OData syntax rules, please see http://www.odata.org/documentation/odata-version-3-0/

Retrieve a complete sales summary of all stores on 10/10/17 with a page size of 20 records:

GET http://webapi.mydlweb.com/api/odata/v3/SalesSummary?$filter=Date eq DateTime'2017-10-

10'&pagesize=20

Example response:

<SaleSummary> <Id>c36b9cc8-29cb-4337-81aa-3bf5c6748edf</Id> <RecordID>1</RecordID> <RecordName>Gross Sales</RecordName> <StoreID>0</StoreID> <CustomerStoreID>0</CustomerStoreID> <StoreName>9999 - Gibbon</StoreName> <Date>2017-10-10T00:00:00</Date> <DepartmentID>222</DepartmentID> <DepartmentName>Non-Alc Bevs</DepartmentName> <TypeID>0</TypeID> <TypeName/> <Amount>104.60</Amount> <Tip>0.00</Tip> <CashBack>0.00</CashBack> <Reason/> <AccountId/> </SaleSummary> . . . <SaleSummary> <Id>1e981a2d-8160-460e-95d7-b8b75768bc58</Id> <RecordID>5</RecordID> <RecordName>Payments</RecordName> <StoreID>0</StoreID> <CustomerStoreID>0</CustomerStoreID> <StoreName>9999 - Gibbon</StoreName> <Date>2017-10-10T00:00:00</Date> <DepartmentID>300</DepartmentID> <DepartmentName/> <TypeID>301</TypeID> <TypeName>Visa</TypeName> <Amount>462.88</Amount> <Tip>0.00</Tip> <CashBack>0.00</CashBack> <Reason/>&page <AccountId/> </SaleSummary>

Pagesize Query Option

The Decision Logic API is set to display a default page size of 1000 records for an OData query response. This default should prevent an out of memory exception on requests of large amounts of data.

The user can override the default page size of an OData query response by using the pagesize option:

Retrieve a list of Product Mix with a list size of 100 records (instead of the default 1000 records)

GET http://webapi.mydlweb.com/api/odata/v3/ProductMix?pagesize=100

The user can also override the default page size and return all the records of an OData query response.

This is NOT recommended since it increases the likelihood of an out of memory exception.

Retrieve a list of Product Mix with a list size of all records (instead of the default 1000 records)

GET http://webapi.mydlweb.com/api/odata/v3/ProductMix?pagesize=0

IMPORTANT! At the bottom of an OData query page, there is a known issue with the URL links (they contain improper XML syntax). We strongly recommend not clicking these links since they can return inconsistent data from the intended query.

 

Endpoints with Examples

Checks

The Checks endpoint allows a user to query check details. It also allows Store and Order Type as expand options.

Retrieve a list of check details

GET https://webapi.mydlweb.com/api/odata/v3/Checks (see Example A)

Retrieve a list of check details that includes related information about the store and/or order type for each check:

Example Responses:

<Checks> <StoreId>140</StoreId> <Date>2015-09-24T00:00:00</Date> <CheckNumber>264</CheckNumber> <ServerId>0</ServerId> <StartTime>19:48</StartTime> <CloseTime>19:50</CloseTime> <Amount>228.51</Amount> <Tip>0.00</Tip> <CustomerCount>8</CustomerCount> <CreditCardFlag>0</CreditCardFlag> <OrderTypeId>0</OrderTypeId> </Checks>
<Store> <StoreId>140</StoreId> <CustomerStoreId>239</CustomerStoreId> <Address1>3130 N Rock Road</Address1> <City>Wichita</City> <State>KS</State> <ZipCode>67221</ZipCode> <PhoneNumber>321-555-1212</PhoneNumber> <TaxIncluded>false</TaxIncluded> <LiquorTax>0.0000</LiquorTax> <MinimumWage>0.00</MinimumWage> <StMinimumWage>0.00</StMinimumWage> <EODWorkflowId>1</EODWorkflowId> </Store> <Checks> <StoreId>140</StoreId> <Date>2015-09-24T00:00:00</Date> <CheckNumber>264</CheckNumber> <ServerId>0</ServerId> <StartTime>19:48</StartTime> <CloseTime>19:50</CloseTime> <Amount>128.51</Amount> <Tip>0.00</Tip> <CustomerCount>8</CustomerCount> <CreditCardFlag>0</CreditCardFlag> <OrderTypeId>0</OrderTypeId> </Checks>

Departments

The Departments endpoint allows a user to query department information.

Retrieve a list of all departments

GET https://webapi.mydlweb.com/api/odata/v3/Departments?$filter=DepartmentId lt 4

Example response:

<Departments> <DepartmentId>1</DepartmentId> <Name>Food</Name> <SaleTypeId>1</SaleTypeId> <Active>1</Active> <IsIncluded>1</IsIncluded> <AccountNumber/> </Departments> <Departments> <DepartmentId>2</DepartmentId> <Name>Non-Alc Bevs</Name> <SaleTypeId>1</SaleTypeId> <Active>1</Active> <IsIncluded>1</IsIncluded> <AccountNumber/> </Departments> <Departments> <DepartmentId>3</DepartmentId> <Name>Beer</Name> <SaleTypeId>2</SaleTypeId> <Active>1</Active> <IsIncluded>1</IsIncluded> <AccountNumber/> </Departments>

Employee Custom Fields

The Employee Custom Fields endpoint allows a user to query employee custom fields and their respective entries.

Retrieve a list of all employee custom fields for all employees

GET https://webapi.mydlweb.com/api/odata/v3/EmployeeCustomFields

Retrieve a list of employee custom fields for Employee ID 967

GET https://webapi.mydlweb.com/api/odata/v3/EmployeeCustomFields?$filter=EmployeeID eq 967

Example response:

<EmployeeCustomField> <EmployeeID>967</EmployeeID> <FieldID>1</FieldID> <FieldName>Gender</FieldName> <Value>Female</Value> </EmployeeCustomField> <EmployeeCustomField> <EmployeeID>967</EmployeeID> <FieldID>2</FieldID> <FieldName>Filing Status</FieldName> <Value>Single</Value> </EmployeeCustomField> <EmployeeCustomField> <EmployeeID>967</EmployeeID> <FieldID>3</FieldID> <FieldName>Federal Exemptions</FieldName> <Value>1</Value> </EmployeeCustomField> <EmployeeCustomField> <EmployeeID>967</EmployeeID> <FieldID>4</FieldID> <FieldName>Additional State Withholding Needed</FieldName> <Value>No</Value> </EmployeeCustomField> <EmployeeCustomField> <EmployeeID>967</EmployeeID> <FieldID>8</FieldID> <FieldName>Payroll ID - ADP number</FieldName> <Value>001430</Value> </EmployeeCustomField>

Employee Jobs

The Employee Jobs API endpoint allows a user to query employees and their respective jobs.

Retrieve a list of employees and their respective jobs

GET https://webapi.mydlweb.com/api/odata/v3/EmployeeJobs

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Retrieve a list of employee jobs for Employee ID 967

GET https://webapi.mydlweb.com/api/odata/v3/EmployeeJobs?$filter=EmployeeID eq 967

Example response:

<EmployeeJob> <EmployeeID>967</EmployeeID> <JobID>15</JobID> <StoreID>8</StoreID> <CustomerStoreID>10</CustomerStoreID> <EmpNumber>321</EmpNumber> <JobCode>101</JobCode> <JobName>Clock in Emp</JobName> <POSNumber>304</POSNumber> <PayRate>15.00</PayRate> </EmployeeJob> <EmployeeJob> <EmployeeID>967</EmployeeID> <JobID>27</JobID> <StoreID>8</StoreID> <CustomerStoreID>10</CustomerStoreID> <EmpNumber>321</EmpNumber> <JobCode>217</JobCode> <JobName>Hourly Manager</JobName> <POSNumber>406</POSNumber> <PayRate>15.00</PayRate> </EmployeeJob>

Employee Transactions

The Employee Transactions endpoint allows a user to query employee transactions.

Retrieve a list of employee transactions

GET https://webapi.mydlweb.com/api/odata/v3/EmployeeTransactions

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Retrieve a list of employee transactions for EmployeeID 967

GET https://webapi.mydlweb.com/api/odata/v3/EmployeeTransactions?$filter=EmployeeID eq 967

Example response:

<EmployeeTransaction>

<EmployeeID>967</EmployeeID>

<EmpNumber>301342</EmpNumber>

<TranType>4</TranType>

<TranTypeName>Term</TranTypeName>

<StoreID>31</StoreID>

<CustomerStoreID>22</CustomerStoreID>

<TranDate>2016-12-16T00:00:00</TranDate>

<HireDate>2016-12-16T00:00:00</HireDate>

<TermComment>Submitted fake customer comments.</TermComment>

<TermReason>Unprofessional Behavior</TermReason>

<TermName>Insubordination</TermName>

<TimeStamp>2017-01-30T08:09:00</TimeStamp>

</EmployeeTransaction>

<EmployeeTransaction>

<EmployeeID>967</EmployeeID>

<EmpNumber>301342</EmpNumber>

<TranType>5</TranType>

<TranTypeName>Re-Hire</TranTypeName>

<StoreID>31</StoreID>

<CustomerStoreID>22</CustomerStoreID>

<TranDate>2017-05-16T00:00:00</TranDate>

<HireDate>2017-05-16T00:00:00</HireDate>

<TimeStamp>2017-05-16T12:10:00</TimeStamp>

</EmployeeTransaction>

 

Employee Stores

The Employee Stores endpoint allows a user to query store details for individual employees.

Retrieve a list of employees with their store details:

GET https://webapi.mydlweb.com/api/odata/v3/EmployeeStores

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Retrieve a list of employees with their store details for Employee IDs less than 100:

GET https://webapi.mydlweb.com/api/odata/v3/EmployeeStores?$filter=ID lt 100

 

Example response:

<EmployeeStores>

<EmployeeID>25<EmployeeID>

<ID>19<ID>

<CustomerStoreID>8<CustomerStoreID>

<Name>0028 - Park Drive<Name>

</EmployeeStores>

<EmployeeStores>

<EmployeeID>53<EmployeeID>

<ID>127<ID>

<CustomerStoreID>36<CustomerStoreID>

<Name>0063 - Bellevue<Name>

</EmployeeStores>

<EmployeeStores>

<EmployeeID>65<EmployeeID>

<ID>33<ID>

<CustomerStoreID>1<CustomerStoreID>

<Name>0011 - Orchard<Name>

</EmployeeStores>

 

Employees

The Employees endpoint allows a user to query employee details. It also allows the following as expand options:

  • Custom Fields

  • Stores

  • Jobs

  • Transactions

 

Retrieve a list of employees and their details:

GET https://webapi.mydlweb.com/api/odata/v3/Employees

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Retrieve a list of employee details for ID less than 100

<Employees>

<ID>99<ID>

<SSN>045642596<SSN>

<FirstName>Samantha<FirstName>

<MiddleName><MiddleName>

<LastName>Pedowitz<LastName>

<DOB>1979-04-29T00:00:00<DOB>

<Address>1117 TOWBRIDGE<Address>

<Address2><Address2>

<City>KELLER<City>

<State>TX<State>

<Zip>61249<Zip>

<Phone>7892469705<Phone>

<Phone2>7892469705<Phone2>

<EmergencyContact><EmergencyContact>

<EmergencyPhone>7892469705<EmergencyPhone>

<NextRev>2018-01-11T00:00:00<NextRev>

</Employees>

 

 

 

 

 

Retrieve a list of employee details that includes related information about the custom fields, jobs, stores and/or transactions for each employee:

 

<CustomFields>

<EmployeeID>25</EmployeeID>

<FieldID>1</FieldID>

<FieldName>Gender</FieldName>

<Value>Male</Value>

</CustomFields>

<CustomFields>

<EmployeeID>25</EmployeeID>

<FieldID>2</FieldID>

<FieldName>Gender</FieldName>

<Value>Male</Value>

</CustomFields>

.

.

.

<Employees>

<ID>25</ID>

<SSN>777022818</SSN>

<FirstName>Freddie</FirstName>

<MiddleName>F</MiddleName>

<LastName>Fieber</LastName>

.

.

.

<EmergContact>Sam Bamm</EmergContact>

<EmergPhone>4025558531</EmergPhone>

<NextRev>2017-10-15T00:00:00</NextRev>

<Employees>

 

 

Hot Items IvA Summary

The Hot Items IvA Summary endpoint allows a user to query summary of Hot Items IvA details.

Retrieve a summary of Hot Items IvA details

GET https://webapi.mydlweb.com/api/odata/v3/HotItemsIvASummary

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Retrieve a summary of Hot Items IvA details on Product ID = 999

GET https://webapi.mydlweb.com/api/odata/v3/HotItemsIvASummary?$filter=ProductID eq 999

Example response:

<HotItemsIvASummary >

<StoreId>99</StoreId>

<CustomerStoreId>1</CustomerStoreId>

<InventoryId>3999</InventoryId>

<ProductId>999</ProductId>

<ProductDescription>Pork Shredded</ProductDescription>

<BeginQuantity/>

<EndQuantity>0.000</EndQuantity>

<IdealQuantity>0.000</IdealQuantity>

<ActualQuantity/>

<VarianceQuantity/>

<Date>2017-08-03T00:00:00</Date>

<ReceivedQuantity>0.000</ReceivedQuantity>

<PricePerQuantity>0.290</PricePerQuantity>

<RecipeMeasure>OZ (W)</RecipeMeasure>

<InventoryMeasure>LB</InventoryMeasure> <RecipeMultiplier>16.000</RecipeMultiplier>

<InventoryMultiplier>20.000</InventoryMultiplier>

</HotItemsIvASummary >

 

Jobs

The Jobs endpoint allows a user to query job details.

Retrieve a list of jobs and their details

GET https://webapi.mydlweb.com/api/odata/v3/Jobs

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Retrieve a list of job details for ID less than 4

GET https://webapi.mydlweb.com/api/odata/v3/Jobs?$filter=ID lt 4

Example response:

<Jobs>

<ID>1</ID>

<Name>TP Girl</Name>

<IsBOH>0</IsBOH>

<Account>6020</Account>

<Active>1</Active>

</Jobs>

<Jobs>

<ID>2</ID>

<Name>TP Bar AM</Name>

<IsBOH>0</IsBOH>

<Account>6020</Account>

<Active>1</Active>

</Jobs>

<Jobs>

<ID>3</ID>

<Name>TP Bar PM</Name>

<IsBOH>0</IsBOH>

<Account>6020</Account>

<Active>1</Active>

</Jobs>

 

Line Types

The Line Types endpoint allows a user to query line types details.

Retrieve a list of line types

GET https://webapi.mydlweb.com/api/odata/v3/LineTypes

Example response:

<LineTypes>

<LineTypeId>1</LineTypeId>

<Name>Sale</Name>

<Count>1</Count>

<Dollars>1</Dollars>

</LineTypes>

<LineTypes>

<LineTypeId>2</LineTypeId>

<Name>Complaint</Name>

<Count>0</Count>

<Dollars>-1</Dollars>

</LineTypes>

<LineTypes>

<LineTypeId>3</LineTypeId>

<Name>Void</Name>

<Count>-1</Count>

<Dollars>-1</Dollars>

</LineTypes>

 

Menu Items

The Menu Items endpoint allows a user to query menu items info. It also allows Category as an expand option.

Retrieve a list of menu items

GET https://webapi.mydlweb.com/api/odata/v3/MenuItems

 

Retrieve a list of menu items that includes related information about the menu item category for each menu item

GET https://webapi.mydlweb.com/api/odata/v3/MenuItems?$filter= StoreID eq 16 (see Example A)

GET https://webapi.mydlweb.com/api/odata/v3/MenuItems?$expand=Category (see Example B)

Example A:

<MenuItems>

<ID>1</ID>

<StoreID>16</StoreID>

<StoreName>0016</ StoreName >

<MenuSetID>1</MenuSetID>

<MenuSetName>Default</MenuSetName>

<MenuNumber>160001</MenuNumber>

<MenuName>Bud-160001</MenuName>

<Price>3.50</Price>

<CoverCount>0.00</CoverCount>

<CategoryID>7</CategoryID>

<CategoryName>Red Wine</CategoryName>

<DepartmentID>203</DepartmentID>

<DepartmentName>Wine</DepartmentName >

</MenuItems>

.

.

.

<MenuItems>

<ID>1</ID>

<StoreID>16</StoreID>

<StoreName>0016</ StoreName >

<MenuSetID>1</MenuSetID>

<MenuSetName>Default</MenuSetName>

<MenuNumber>165006</MenuNumber>

<MenuName>Steak Burrito</MenuName>

<Price>8.50</Price>

<CoverCount>0.00</CoverCount>

<CategoryID>35</CategoryID>

<CategoryName>Burritos</CategoryName>

<DepartmentID>101</DepartmentID>

<DepartmentName>Food</DepartmentName > </MenuItems>

 

Example B:

<Category>

<ID>21</ID>

<Name>Bottled Beer</Name>

<Active>1</Active>

</Category>

<MenuItems>

<ID>1</ID>

<StoreID>1</StoreID>

<StoreName>0016</ StoreName >

<MenuSetID>1</MenuSetID>

<MenuSetName>Default</MenuSetName>

<MenuNumber>165006</MenuNumber>

<MenuName>Bud-165006</MenuName>

<Price>3.50</Price>

<CoverCount>0.00</CoverCount>

<CategoryID>21</CategoryID>

<CategoryName> Bottled Beer </CategoryName>

<DepartmentID>303</DepartmentID>

<DepartmentName>Beer</DepartmentName >

</MenuItems>

<Category>

<ID>21</ID>

<Name>Bottled Beer</Name>

<Active>1</Active>

</Category>

<MenuItems>

<ID>1</ID>

<StoreID>2</StoreID>

<StoreName>0017</StoreName >

 

 

Menu Item Categories

The Menu Item Categories endpoint allows a user to query menu item categories info. It also allows Menu Items as an expand option.

Retrieve a list of menu item categories

GET https://webapi.mydlweb.com/api/odata/v3/MenuItemCategories

Retrieve a list of menu item categories that includes related information about the menu item for each menu item category

GET https://webapi.mydlweb.com/api/odata/v3/MenuItemCategories?$filter= StoreID eq 16 (see Example A)

GET https://webapi.mydlweb.com/api/odata/v3/MenuItemCategories?$expand=MenuItems (see Example B)

Example A:

<MenuItemCategories>

<ID>34</ID>

<Name>Bottled Beer</Name>

<Active>1</Active>

</MenuItemCategories>

<MenuItemCategories>

<ID>35</ID>

<Name>Burritos</Name>

<Active>1</Active>

</MenuItemCategories>

<MenuItemCategories>

< ID>36</ID>

< Name>Enchiladas</Name>

< Active>1</Active>

</ MenuItemCategories>

Example B:

<MenuItems>

<ID>1</ID>

<StoreID>1</StoreID>

<StoreName>0016</ StoreName >

<MenuSetID>1</MenuSetID>

<MenuSetName>Default</MenuSetName>

<MenuNumber>165006</MenuNumber>

<MenuName>Bud-165006</MenuName>

<Price>3.50</Price>

<CoverCount>0.00</CoverCount>

<CategoryID>34</CategoryID>

<CategoryName> Bottled Beer </CategoryName>

<DepartmentID>303</DepartmentID>

<DepartmentName>Beer</DepartmentName >

</MenuItems>

<MenuItems>

<ID>1</ID>

<StoreID>1</StoreID>

<StoreName>0016</ StoreName >

<MenuSetID>1</MenuSetID>

<MenuSetName>Default</MenuSetName>

<MenuNumber>169996</MenuNumber>

<MenuName>Zima-169996</MenuName>

<Price>4.50</Price>

<CoverCount>0.00</CoverCount>

<CategoryID>34</CategoryID>

<CategoryName> Bottled Beer </CategoryName>

<DepartmentID>303</DepartmentID>

<DepartmentName>Beer</DepartmentName >

</MenuItems>

 

<MenuItemCategories>

<ID>34</ID>

<Name>Bottled Beer</Name>

<Active>1</Active>

</MenuItemCategories>

 

 

 

 

Order Types

The Order Types endpoint allows a user to query order type details.

Retrieve a list of order types

GET https://webapi.mydlweb.com/api/odata/v3/OrderTypes

Example response:

<OrderTypes>

<OrderTypeId>11</OrderTypeId>

<Name>Dine In</Name>

<Active>1</Active>

<AccountNumber/>

</OrderTypes>

<OrderTypes>

<OrderTypeId>22</OrderTypeId>

<Name>Take Out</Name>

<Active>1</Active>

<AccountNumber/>

</OrderTypes>

<OrderTypes>

<OrderTypeId>33</OrderTypeId>

<Name>Drive Thru</Name>

<Active>1</Active>

<AccountNumber/>

</OrderTypes>

<OrderTypes>

<OrderTypeId>44</OrderTypeId>

<Name>Phone Out</Name>

<Active>1</Active>

<AccountNumber/>

</OrderTypes>

 

 

 

Plate Cost And Sale Price

The Plate Cost And Sale Price endpoint allows a user to query plate cost and sale price details.

Retrieve a list of plate cost and prices by store

GET https://webapi.mydlweb.com/api/odata/v3/PlateCostAndSalePrice?CustomerStoreId=1

 

Note that the endpoint requires the CustomerStoreId parameter to be specified.

Example response:

<PlateCostAndSalePrice>

<CustomerStoreId>1</CustomerStoreId>

<MenuItem>249</MenuItem>

<MenuNumber>1605</MenuNumber>

<MenuDescription>Chili Veg</MenuDescription>

<PlateCost>0.233</PlateCost>

<SalePrice>7.00</SalePrice>

<UseMenuSetPrice>1</UseMenuSetPrice>

<FoodCostPercentage>0.033</FoodCostPercentage>

</PlateCostAndSalePrice>

<PlateCostAndSalePrice>

<CustomerStoreId>1</CustomerStoreId>

<MenuItem>354</MenuItem>

<MenuNumber>2810</MenuNumber>

<MenuDescription>Side Salad BYO</MenuDescription>

<PlateCost>0.260</PlateCost>

<SalePrice>5.00</SalePrice>

<UseMenuSetPrice>1</UseMenuSetPrice>

<FoodCostPercentage>0.052</FoodCostPercentage>

</PlateCostAndSalePrice>

.

.

.

<PlateCostAndSalePrice>

<CustomerStoreId>1</CustomerStoreId>

<MenuItem>422</MenuItem>

<MenuNumber>3800</MenuNumber>

<MenuDescription>Side Salad</MenuDescription>

<PlateCost>0.384</PlateCost>

<SalePrice>2.49</SalePrice>

<UseMenuSetPrice>1</UseMenuSetPrice>

<FoodCostPercentage>0.154</FoodCostPercentage>

</PlateCostAndSalePrice>

 

 

Product Mix

The Product Mix endpoint allows a user to query product info.

Retrieve a list of product mixes

GET https://webapi.mydlweb.com/api/odata/v3/ProductMix?$filter=TransactionDate+eq+datetime'2023-01-01'

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Note that a filter for TransactionDate eq datetime'<datevalue>' is required. Even using a single qualifier may take a long time. See the example below for a multiple-qualifier query.

Retrieve a list of product mixes for Store ID 1111114 on 6/1/2017

GET https://webapi.mydlweb.com/api/odata/v3/ProductMix?$filter=TransactionDate eq DateTime'2017-06-

01T00:00:00' and StoreId eq 1114001

Example response:

<m:properties>
<d:DLStoreId m:type="Edm.Int32">2</d:DLStoreId>
<d:StoreId m:type="Edm.Int32">1111114</d:StoreId>
<d:StoreName>Bucksnort Roadkill</d:StoreName>
<d:TransactionDate m:type="Edm.DateTime">2017-06-01T00:00:00</d:TransactionDate>
<d:ItemCount m:type="Edm.Int32">3</d:ItemCount>
<d:MenuItemCategory>Starters</d:MenuItemCategory>
<d:MenuItemCategoryId m:type="Edm.Int32">11</d:MenuItemCategoryId>
<d:MenuNumber m:type="Edm.Int32">9140</d:MenuNumber>
<d:POSId>3202</d:POSId>
<d:MenuDescription>mdcmc</d:MenuDescription>
<d:Net m:type="Edm.Decimal">32.07</d:Net>
</m:properties>

Reduction Types

The Reduction Types endpoint allows a user to query reduction type details.

Retrieve a list of reduction types

GET https://webapi.mydlweb.com/api/odata/v3/ReductionTypes

Retrieve a list of reduction types with a LineType ID = 3

GET https://webapi.mydlweb.com/api/odata/v3/ReductionTypes?$filter= LineTypeId eq 3

Example response:

<ReductionTypes>

<ReductionTypeId>111</ReductionTypeId>

<Name>TEST!!!!!!!!-111</Name>

<LineTypeId>3</LineTypeId>

<Active>1</Active>

<AccountNumber/>

</ReductionTypes>

<ReductionTypes>

<ReductionTypeId>202</ReductionTypeId>

<Name>Rang wrong Item-202</Name>

<LineTypeId>3</LineTypeId>

<Active>1</Active>

<AccountNumber/>

</ReductionTypes>

<ReductionTypes>

<ReductionTypeId>203</ReductionTypeId>

<Name>Rang too many-203</Name>

<LineTypeId>3</LineTypeId>

<Active>1</Active>

<AccountNumber/>

</ReductionTypes>

 

Sales

The Sales endpoint allows a user to query a sales summary. It also allows the following as expand options:

  • Store

  • Line Type

  • Reduction Type

  • Department

  • Order Type

  • Menu Item Category

  • Check

Retrieve a complete sales summary

GET https://webapi.mydlweb.com/api/odata/v3/Sales

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Note: even using a single qualifier may take a long time. See the example below for a multiple-qualifier query.

Retrieve a sales summary for Store 0 on 7/1/2017

GET https://webapi.mydlweb.com/api/odata/v3/Sales?$filter=StoreID eq 0 and Date eq DateTime'2017-

07-01T00:00:00' (see Example A below)

Retrieve a sales summary that includes related information from the various expand options:

GET https://webapi.mydlweb.com/api/odata/v3/Sales?$expand=Store (see Example B)

GET https://webapi.mydlweb.com/api/odata/v3/Sales?$expand=Department,Check

GET https://webapi.mydlweb.com/api/odata/v3/Sales?$expand=LineType,OrderType

GET https://webapi.mydlweb.com/api/odata/v3/Sales?$expand=ReductionType,MenuItemCategory

 

Example A:

<Sales>

<StoreId>0</StoreId>

<Date>2017-07-01T00:00:00</Date>

<CheckNumber>456789</CheckNumber>

<SequenceNumber>23</SequenceNumber>

<ManagerId>0</ManagerId>

<MenuNumber>123456</MenuNumber>

<LineTypeId>1</LineTypeId>

<ItemCount>0</ItemCount>

<Amount>0.00</Amount>

<Tax1>0.00</Tax1>

<Tax2>0.00</Tax2>

<ReductionTypeId>0</ReductionTypeId>

<MenuItemCategoryId>104</MenuItemCategoryId>

<DepartmentId>1</DepartmentId>

<OrderTypeId>2</OrderTypeId>

<Hour>11</Hour>

</Sales>

.

.

.

Example B:

<Store>

<StoreId>13</StoreId>

<StoreName>0013 - Gibbon</StoreName>

<Address1></Address1>

</Store>

<Sales>

<StoreId>13</StoreId>

<Date>2017-07-11T00:00:00</Date>

<CheckNumber>24777</CheckNumber>

<SequenceNumber>221</SequenceNumber>

<ManagerId>0</ManagerId>

<MenuNumber>108002</MenuNumber>

<LineTypeId>1</LineTypeId>

<ItemCount>5</ItemCount>

<Amount>40.75</Amount>

<Tax1>0.00</Tax1>

<Tax2>0.00</Tax2>

<ReductionTypeId>0</ReductionTypeId>

<MenuItemCategoryId>111</MenuItemCategoryId>

<DepartmentId>1</DepartmentId>

<OrderTypeId>0</OrderTypeId>

<Hour>0</Hour>

</Sales>

Sales By Half Hour

The Sales By Half Hour endpoint allows a user to query a sales summary in half hour increments.

Retrieve a complete sales summary in half hour increments

GET https://webapi.mydlweb.com/api/odata/v3/SalesByHalfHour

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Note: even using a single qualifier may take a long time. See the example below for a multiple-qualifier query.

Retrieve a sales summary for Store 0 on 7/1/2017 in half hour increments

GET https://webapi.mydlweb.com/api/odata/v3/SalesByHalfHour?$filter=StoreID eq 0 and Date eq

DateTime'2017-07-01T00:00:00’

Example response:

<SalesByHalfHourDto>

<StoreID>0</StoreID>

<Date>2017-07-01T00:00:00</Date>

<HalfHourID>22</HalfHourID>

<NetAmount>216.00</NetAmount>

<NetNetAmount>191.00</NetNetAmount>

</SalesByHalfHourDto>

<SalesByHalfHourDto>

<StoreID>0</StoreID>

<Date>2017-07-01T00:00:00</Date>

<HalfHourID>23</HalfHourID>

<NetAmount>43.40</NetAmount>

<NetNetAmount>43.40</NetNetAmount>

</SalesByHalfHourDto>

<SalesByHalfHourDto>

<StoreID>0</StoreID>

<Date>2017-07-01T00:00:00</Date>

<HalfHourID>24</HalfHourID>

<NetAmount>208.25</NetAmount>

<NetNetAmount>200.45</NetNetAmount>

</SalesByHalfHourDto>

.

.

.

<SalesByHalfHourDto>

<StoreID>0</StoreID>

<Date>2017-07-01T00:00:00</Date>

<HalfHourID>45</HalfHourID>

<NetAmount>151.85</NetAmount>

<NetNetAmount>151.85</NetNetAmount>

</SalesByHalfHourDto>

 

 

 

 

Sales Summary

The Sales Summary endpoint allows a user to query sales summary details.

Retrieve a complete sales summary of all stores

GET https://webapi.mydlweb.com/api/odata/v3/SalesSummary

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Note: even using a single qualifier may take a long time. See the example below for a multiple-qualifier query.

Retrieve a sales summary for Store 0 on 7/1/2017

GET https://webapi.mydlweb.com/api/odata/v3/SalesSummary?$filter=StoreID eq 0 and Date eq DateTime'2017-06-01T00:00:00'

 

<SaleSummary>

<Id>c36b9cc8-29cb-4337-81aa3bf5c6748edf</Id>

<RecordID>1</RecordID>

<RecordName>Gross Sales</RecordName>

<StoreID>0</StoreID>

<CustomerStoreID>0</CustomerStoreID>

<StoreName>9999 - Gibbon</StoreName>

<Date>2017-06-01T00:00:00</Date>

<DepartmentID>222</DepartmentID>

<DepartmentName>Non-Alc Bevs</DepartmentName>

<TypeID>0</TypeID>

<TypeName/>

<Amount>104.60</Amount>

<Tip>0.00</Tip>

<CashBack>0.00</CashBack>

<Reason/>

<AccountId/> </SaleSummary>

..

<SaleSummary>

<Id>1e981a2d-8160-460e-95d7b8b75768bc58</Id>

<RecordID>5</RecordID>

<RecordName>Payments</RecordName>

<StoreID>0</StoreID>

<CustomerStoreID>0</CustomerStoreID>

<StoreName>9999 - Gibbon</StoreName>

<Date>2017-06-01T00:00:00</Date>

<DepartmentID>300</DepartmentID>

<DepartmentName/>

<TypeID>301</TypeID>

<TypeName>Visa</TypeName>

<Amount>462.88</Amount>

<Tip>0.00</Tip>

<CashBack>0.00</CashBack>

<Reason/>

<AccountId/>

</SaleSummary>

Example response:

Stores

The Stores endpoint allows a user to query store locations.

Retrieve a complete list of stores

GET https://webapi.mydlweb.com/api/odata/v3/Stores

Retrieve a list of only stores located in Nebraska

GET https://webapi.mydlweb.com/api/odata/v3/Stores?$filter=State eq ‘NE’

Example response:

<Store>

<ID>0</ID>

<CustomerStoreID>10</CustomerStoreID>

<Name>0010 - Gibbon South</Name>

<Address1>515 West Avenue</Address1>

<Address2></Address2>

<City>Gibbon</City>

<State>NE</State>

<Zip>68840</Zip>

<Phone>308-468-5963</Phone>

<Latitude>39.9999667</Latitude>

<Longitude>-97.8888839</Longitude>

</Store>

.

.

.

<Store>

<ID>37</ID>

<CustomerStoreID>45</CustomerStoreID>

<Name>0045 - Bellevue</Name>

<Address1>9001 Delilah Way</Address1>

<Address2></Address2>

<City>Bellevue</City>

<State>NE</State>

<Zip>68123</Zip>

<Phone>402-555-5555</Phone>

<Latitude>42.0583690697</Latitude>

<Longitude>-96.955403900000016</Longitude>

</Store>

 

 

Theoretical vs Actual (TvA)

The Theoretical vs Actual (TvA) endpoint allows a user to query TvA metrics.

Retrieve a list of Theoretical vs Actual metrics for all stores

GET https://webapi.mydlweb.com/api/odata/v3/TvA

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Note: even using a single qualifier may take a long time. See the example below for a multiple-qualifier query.

Retrieve a list of Theoretical vs Actual metrics for Store 0 since Inventory Date on/after 7/1/17 GET https://webapi.mydlweb.com/api/odata/v3/TvA?$filter=StoreId eq 0 and InventoryDate ge

DateTime'2017-07-01T00:00:00'

Example response:

<TvaDataDto>

<DLStoreId>0</DLStoreId>

<StoreId>0</StoreId>

<InventoryDate>2017-07-01T00:00:00</InventoryDate>

<ProductId>19</ProductId>

<ProductName>Cookies, ILoveCookies</ProductName>

<ProductMeasure>EA</ProductMeasure>

<BeginningAmountDollars>31.44</BeginningAmountDollars>

<PurchasedAmountDollars>47.16</PurchasedAmountDollars>

<EndingAmountDollars>39.30</EndingAmountDollars>

<UsedAmountDollars>39.30</UsedAmountDollars>

<TheoryAmountDollars>53.44</TheoryAmountDollars>

<VarianceAmountDollars>-14.14</VarianceAmountDollars>

</TvaDataDto>

.

.

.

<TvaDataDto>

<DLStoreId>0</DLStoreId>

<StoreId>0</StoreId>

<InventoryDate>2017-07-01T00:00:00</InventoryDate>

<ProductId>999</ProductId>

<ProductName>20 oz Btl Crisco Vegetable Oil</ProductName> <ProductMeasure>BTL</ProductMeasure>

<BeginningAmountDollars>8.40</BeginningAmountDollars>

<PurchasedAmountDollars>0.00</PurchasedAmountDollars>

<EndingAmountDollars>6.83</EndingAmountDollars>

<UsedAmountDollars>1.57</UsedAmountDollars>

<TheoryAmountDollars>0.52</TheoryAmountDollars>

<VarianceAmountDollars>1.05</VarianceAmountDollars> </TvaDataDto>

 

TimeClock

The TimeClock endpoint allows a user to query time clock entries.

 

Retrieve a complete list of time clock entries

GET https://webapi.mydlweb.com/api/odata/v3/TimeClock

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Retrieve a list of time clock entries for Store 0 since midnight on 7/1/17

GET https://webapi.mydlweb.com/api/odata/v3/TimeClock?$filter=StoreID eq 0 and ClockIn ge

DateTime'2017-07-01T00:00:00'

Example response:

<TimeClockDto>

<StoreID>0</StoreID>

<EmployeeID>9995</EmployeeID>

<POSID>981</POSID>

<FirstName>Maureen</FirstName>

<LastName>Jones</LastName>

<JobCode>111</JobCode>

<LaborID>4</LaborID>

<ClockIn>2017-07-01T10:51:00</ClockIn>

<ClockOut>2017-07-01T14:52:00</ClockOut>

<Tips>0.00</Tips>

<Sales>0.00</Sales>

<CreditTips>0.00</CreditTips>

<CreditSales>0.00</CreditSales>

<TipShare>0.00</TipShare>

<PayRate>10.75</PayRate>

<ShiftDate>2017-07-01T00:00:00</ShiftDate>

</TimeClockDto>

<TimeClockDto>

<StoreID>0</StoreID>

<EmployeeID>6288</EmployeeID>

<POSID>402</POSID>

<FirstName>Michael</FirstName>

<LastName>Pedowitz</LastName>

<JobCode>121</JobCode>

<LaborID>5</LaborID>

<ClockIn>2017-07-03T10:58:00</ClockIn>

<ClockOut>2017-07-03T16:32:00</ClockOut>

<Tips>0.00</Tips>

<Sales>0.00</Sales>

<CreditTips>0.00</CreditTips>

<CreditSales>0.00</CreditSales>

<TipShare>0.00</TipShare>

<PayRate>9.75</PayRate>

<ShiftDate>2017-07-03T00:00:00</ShiftDate>

</TimeClockDto>

 

WageAdjustments

The WageAdjustments endpoint allows a user to query employee details for pay adjustments. These pay additions or deductions are entered through Store Payroll and Payroll Process. Examples include bonuses, advances, supplemental training wages, or fees.

Retrieve a complete list of wage adjustments

GET https://webapi.mydlweb.com/api/odata/v3/WageAdjustments

 

WARNING: running such a query without the page size default will take a long time and may result in out of memory exceptions or other technical difficulties.

Retrieve a list of all wage adjustments for shifts on 05/17/2021

GET https://webapi.mydlweb.com/api/odata/v3/WageAdjustments?$filter=Date ge DateTime%272021-05-

17%2y

 

Example response:

<ArrayOfWageAdjustment xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<WageAdjustment>

<Date>2021-05-17T00:00:00</Date>

<StoreId>123</StoreId>

<StoreName>345 – Example Store</StoreName>

<EmployeeId>54321</EmployeeId>

<EmployeeName>John Doe</EmployeeName>

<AdjustmentId>1</AdjustmentId>

<AdjustmentName>Bonus</AdjustmentName>

<Amount>6.25</Amount>

</WageAdjustment>

.

.

.

<WageAdjustment>

<Date>2021-05-17T00:00:00</Date>

<StoreId>234</StoreId>

<StoreName>456 – Example Store2</StoreName>

<EmployeeId>98765</EmployeeId>

<EmployeeName>Jane Doe</EmployeeName> <AdjustmentId>3</AdjustmentId>

<AdjustmentName>Fee</AdjustmentName>

<Amount>125.00</Amount>

</WageAdjustment>

</ArrayOfWageAdjustment>

1

I

 

© 2023 Knowledge Management Systems, LLC. Decision Logic. All Rights Reserved.

Table of Contents

For additional questions or assistance, please submit a support ticket by visiting the Decision Logic Service Center.

 

 

 



If you'd like to receive news on software releases and product updates, please sign up for our email list.