Restaurant365 provides an OData connector that you can use to access your Restaurant365 data from within your OData reporting provider. The following providers can be used with the R365 OData Connector:
Before you can utilize the R365 OData Connector, various settings must be updated by the R365 Support Team. If this setup process has not been completed, you will receive an authentication error when you attempt to login. Please reach out to R365 Support in order to start, or troubleshoot the connection process.
This article reviews the following:
- Authorized Users - R365 Application
- R365 OData Connector Users - Provider Application
- Authentication
- Available Reports
- Service Metadata (EDMX) Document
- OData Endpoints
- Data Filtering & Querying
- Examples
Authorized Users - R365 Application
Any Active Restaurant365 User with the following Security Roles are permitted to use the R365 OData Connector:
- Accounting Clerk
- Accounting Manager
- Business Analytics Admin
- Business Analytics View Only
Click here for more information about R365 Security Roles.
R365 OData Connector Users - Provider Application
Depending on the size of your team, and the needs of your organization, you can take one of two approaches to which Users will access the R365 OData Connector:
- Have each User authenticate using their R365 User profile:
- Accessible Data will be limited to the User's R365 Location Access
- Users can be deactivated as needed
- Password changes must be made on both R365 and Provider platforms
- Create a Dedicated R365 OData Connector User:
- Accessible Data will include all Locations
- User could not be deactivated without removing access for all Users
- Password changes must be made on both R365 and Provider platformsWith each solution, your Users will have to update their password on each platform. Choose the solution that works best for your Organization.
Authentication
OData Connector Credentials must be entered using the following format: Domain\Username
For example, if your Restaurant365 URL is https://yourCompany.restaurant365.com and your username is r365user, then you would enter:
- Username: yourCompany\r365user
- Password: Your R365 password
Available Reports
The following reports are provided by the R365 OData Connector:
Company | List all Vendors |
Employee | List all Employees with basic information |
GL Account | List all GL Accounts with details |
Item | List all Menu Items with categorization |
Job Title | List all Job titles with details |
Labor Detail | Retrieve Employee punch times details (clock in/out) |
Location | List all Locations |
POS Employee | Retrieve data mapping between R365 Employee records and POS Employee records |
Transaction | Retrieve a list of financial transactions |
Transaction Detail | Retrieve a list of financial transaction details at item level |
Service Metadata (EDMX) Document
The metadata can be downloaded by requesting $metadata. This XML-based service document contains the schema of the entity models associated with each available endpoint within the service.
https://odata.restaurant365.net/api/v1/views/$metadata
OData Endpoints
Transactions
https://odata.restaurant365.net/api/v1/views/Transaction
Properties | Description |
transactionId | A unique guid identifier for a transaction record |
locationId | A unique guid identifier of the location where the associating transaction was created |
locationName | The name of the referencing Location |
date | The imported date and time when the transaction was created in ISO 8601 format |
transactionNumber | A custom reference associated with the transaction |
name | Name of the transaction |
type | Type of transaction, i.e. Journal Entry, AP Invoice |
companyId | A unique guid identifier for the associating company, if any |
createdBy | A unique guid identifier for the User who created the transaction |
createdOn | The date and time when the transaction was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the transaction last |
modifiedOn | The date and time when the transaction was last modified in ISO 8601 format |
https://odata.restaurant365.net/api/v1/views/TransactionDetail
Transaction Details can be joined to the Transaction report using the transactionId
Properties | Description |
transactionDetailAutoId | A item-level unique guid identifier for a transaction details record |
transactionDetailId | A unique guid identifier linked a collection of transaction detail records |
transactionId | A unique guid identifier linked to a transaction record |
locationId | A unique guid identifier of the Location where the associating transaction was created |
glAccountId | A unique guid identifier of the GL Account mapped to the line item |
item | A unique guid identifier of the item in this transaction |
credit | The credit amount in the transaction |
debit | The debit amount in the transaction |
amount | The total balance in the transaction |
quantity | The quantity of item in the transaction |
adjustment | The adjustment amount in the transaction |
unitOfMeasureName | Describe the unit of measure for the item |
comment | Description or comment of the item |
createdBy | A unique guid identifier for the User who created the transaction |
createdOn | The date and time when the transaction was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the transaction last |
modifiedOn | The date and time when the transaction was last modified in ISO 8601 format |
https://odata.restaurant365.net/api/v1/views/Company
Companies can be joined to the Transaction report using companyId
Properties | Description |
companyId | A unique guid identifier for a Vendor's company |
name | The name of the company |
companyNumber | The company number for optional identification purposes |
comment | Notes or comments in the company record |
createdBy | A unique guid identifier for the User who created the company |
createdOn | The date and time when the company was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the company last |
modifiedOn | The date and time when the company was last modified in ISO 8601 format |
https://odata.restaurant365.net/api/v1/views/Item
Items can be joined to the Transaction Detail report on the itemId column to view more information regarding the item on the transaction detail
Properties | Description |
itemId | A unique guid identifier for the item |
name | The name of the item |
itemNumber | The name or number of the business for optional identification purposes |
category1 | Item category name 1 |
category2 | Item category name 2 |
category3 | Item category name 3 |
createdBy | A unique guid identifier for the User who created the item |
createdOn | The date and time when the item was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the item last |
modifiedOn | The date and time when the item was last modified in ISO 8601 format |
https://odata.restaurant365.net/api/v1/views/Location
Locations can be joined to the Transaction or Transaction Detail report using locationId
Properties | Description |
locationId | A unique guid identifier for a Location |
name | The name of the Location |
locationNumber | The name or number of the Location as an optional identification reference |
legalEntityId | A unique guid identifier for the Legal Entity associated with this location |
legalEntityNumber | The number of the Legal Entity |
legalEntityName | The name of the Legal Entity |
createdBy | A unique guid identifier for the User who created the Location |
createdOn | The date and time when the Location was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the Location last |
modifiedOn | The date and time when the Location was last modified in ISO 8601 format |
https://odata.restaurant365.net/api/v1/views/GlAccount
GL Account data can be joined with the Transaction Detail report on glAccountAutoId to see the GL Account associated with a transaction detail record
Properties | Description |
glAccountAutoId | A unique numeric identifier for a GL Account |
glAccountId | A unique guid identifier for a GL Account |
locationId | A reference identifier to a Location associated with the GL Account |
locationNumber | The Location number associated with the GL Account |
locationName | The Location name associated with the GL Account |
legalEntityId | A guid identifier of the Legal Entity associated with this GL Account |
legalEntityNumber | The number of the Legal Entity |
legalEntityName | The name of the Legal Entity |
name | The name of the GL Account |
glAccountNumber | The GL Account number |
glTypeClass | A number class type for this GL Account |
glType | The GL Account type |
operationalCategory | The Operational category for this GL Account |
createdBy | A unique guid identifier for the User who created the GL Account |
createdOn | The date and time when the GL Account was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the GL Account last |
modifiedOn | The date and time when the GL Account was last modified in ISO 8601 format |
https://odata.restaurant365.net/api/v1/views/Employee
Using the employeeId field, Employees can be joined to Labor Detail through the employee_ID field
Using the employeeId field, Employees can be joined to POS Employee data through employee_ID field
Properties | Description |
employeeId | A unique guid identifier for an Employee |
fullName | Full name of the Employee |
address1 | The Employee's address line 1 |
address2 | The Employee's address line 2 |
allowTextMessaging | Indicates whether the Employee allows text messaging |
birthdayDay | The day of the Employee's birthday |
birthdayMonth | The month of the Employee's birthday |
city | The Employee's city of residence |
firstName | The Employee's first name |
hireDate | The Employee's hire date |
lastName | The Employee's last name |
middleName | The Employee's middle name |
mobilePhone | The Employee's mobile phone number |
multipleLocations | Indicates whether the employee works at multiple Locations |
payrollID | The Employee's payroll ID |
phoneNumber | The Employee's phone number |
posid | The Employee's POS ID |
state | The Employee's state of residence |
zipCode | The Employee's zip code |
primaryLocation_id | The Employee's primary work Location |
inactive | The Employee's status |
The Employee's email address | |
birthday | The Employee's birthday |
createdBy | A unique guid identifier for the User who created the Employee record |
createdOn | The date and time when the Employee record was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the Employee record last |
modifiedOn | The date and time when the Employee record was last modified in ISO 8601 format |
https://odata.restaurant365.net/api/v1/views/JobTitle
Using the JobTitleID field, Job Titles can be joined to Labor Detail through JobTitle_ID
Using the glAccount_ID field, Job Titles can be joined to GL Accounts through glAccountID
Properties | Description |
jobTitleId | A unique guid identifier for a Job title record |
name | The title of the Job |
description | The description of the Job |
jobCode | The Job code associated with the Job |
payRate | The pay rate associated with the Job |
payRate_Base | The base pay rate associated with the Job |
posid | The Job title's POS ID |
glAccount_Id | The GL Account associated with the Job |
location_Id | The Location associated with the Job |
excludeFromSchedule | Indicates whether to exclude Job from scheduling |
excludeFromPOSImport | Indicates whether to exclude Job from POS import |
createdBy | A unique guid identifier for the User who created the Job title |
createdOn | The date and time when the Job was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the Job title last |
modifiedOn | The date and time when the Job title was last modified in ISO 8601 format |
Labor Detail
https://odata.restaurant365.net/api/v1/views/LaborDetail
Using the employee_ID field, Labor Detail can be joined to Employee through the employeeID field
Using the JobTitle_ID field, Labor Detail can be joined to Job Title through the JobTitleID field
Using the location_Id field, Labor Detail can be joined to Location through locationID field
Properties | Description |
laborId | A unique guid identifier for a labor detail record |
labor | The name of the labor detail record |
dateWorked | The date and time of the work day |
endTime | The date and time when the shift ends |
hours | The total hours worked |
payRate | The Employee's pay rate |
payrollStatus | The Employee's payroll status |
startTime | The date and time when the shift starts |
total | The total amount earned based on pay rate and hours |
employee_ID | Identifier of the Employee associated with this labor detail |
employeeJobTitle_ID | Identifier of the mapping between Employee and Job title |
jobTitle_ID | Identifier of the Job title associated with this labor detail |
location_ID | Identifier of the Location associated with this labor detail |
cateringEvent | Indicates whether the labor is associated with a Catering event |
employee | The Employee's full name |
payrollID | The Payroll ID associated with this labor detail |
jobTitle | The Job title associated with this labor detail |
dateWorkedDateText | The date and time of the work day as string |
location | The Location associated with this labor detail |
createdBy | A unique guid identifier for the User who created the labor detail |
createdOn | The date and time when the labor detail was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the labor detail last |
modifiedOn | The date and time when the labor detail was last modified in ISO 8601 format |
POS Employee
https://odata.restaurant365.net/api/v1/views/POSEmployee
Using the employee_id field, POS Employees can be joined to Employee data through employeeId field
Properties | Description |
posEmployeeId | A unique guid identifier for this mapping record |
fullName | The Employee's full name |
posid | The Employee's POS ID |
location_id | Identifier of the Location associated with this record |
employee_id | Identifier of the Employee associated with this record |
createdBy | A unique guid identifier for the User who created the record |
createdOn | The date and time when the record was created in ISO 8601 format |
modifiedBy | A unique guid identifier for the User who modified the record last |
modifiedOn | The date and time when the record was last modified in ISO 8601 format |
Data Filtering & Querying
R365 uses standard OData calls to perform Data Filtering and Querying. The following OData query options are supported:
Option | Description |
$filter | Filters the results, based on the Boolean condition |
$orderby | Sorts the results, ascending by default, use desc for descending order |
$select | Selects which properties to include in the response |
$skip | Skips the first n results |
$top | Returns only the first n results |
Examples
Transaction
Retrieve transactions created on or after the specified date
https://odata.restaurant365.net/api/v1/views/Transaction?$filter=date ge 2019-09-01T00:00:00Z
Retrieve transactions created before the specified date
https://odata.restaurant365.net/api/v1/views/Transaction?$filter=date lt 2019-12-15T00:00:00Z
Retrieve transactions created on the specified date
https://odata.restaurant365.net/api/v1/views/Transaction?$filter=date eq 2019-08-28T00:00:00Z
Retrieve transactions between a date range
https://odata.restaurant365.net/api/v1/views/Transaction?$filter=date ge 2019-03-26T00:00:00Z and date lt 2019-04-01T00:00:00Z
Retrieve a Location and name of a transaction by transaction ID
https://odata.restaurant365.net/api/v1/views/Transaction?$select=locationId,locationName,name&$filter=transactionId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Retrieve transaction details by transaction ID
https://odata.restaurant365.net/api/v1/views/TransactionDetail?$filter=transactionId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Retrieve transaction details with zero balance
https://odata.restaurant365.net/api/v1/views/TransactionDetail?$filter=amount eq 0
Retrieve transaction details with adjustments and sort results by descending
https://odata.restaurant365.net/api/v1/views/TransactionDetail?$filter=adjustment ne 0&$orderby=adjustment desc
Retrieve transactions by Location ID, sort result by type and date
https://odata.restaurant365.net/api/v1/views/Transaction?$filter=locationId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&orderby=type, date
Retrieve the last 5 transactions on the specified date
https://odata.restaurant365.net/api/v1/views/Transaction?$filter=date eq 2019-03-26T00:00:00Z&orderby=createdOn desc&$top=5
Company
Retrieve a list of companies with the names that begin with 'C'
https://odata.restaurant365.net/api/v1/views/Company?$filter=startswith(name,'C')
Retrieve a list of companies with the names that end with 'Inc'
https://odata.restaurant365.net/api/v1/views/Company?$filter=endswith(name,'Inc')
Retrieve a list of companies with the names that contain the word 'Food'
https://odata.restaurant365.net/api/v1/views/Company?$filter=contains(name,'food')
Get the last company created in the system
https://odata.restaurant365.net/api/v1/views/Company?$orderby=createdOn desc&$top=1
Item
Retrieve a list of items in the 'Food & Beverage' category
https://odata.restaurant365.net/api/v1/views/Item?$filter=category1 eq 'Food %26 Beverage'
Retrieve item(s) by item number 'ABC123'
https://odata.restaurant365.net/api/v1/views/Item?$filter=itemNumber eq 'ABC123'
Retrieve an item by a specified item ID
https://odata.restaurant365.net/api/v1/views/Item?$filter=itemId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Location
Get a Location by a specified Location ID
https://odata.restaurant365.net/api/v1/views/Location?$filter=locationId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Get Location(s) by Location number
https://odata.restaurant365.net/api/v1/views/Location?$filter=locationNumber eq '1234'
Get a list of Locations by a specified Legal Entity number
https://odata.restaurant365.net/api/v1/views/Location?$filter=legalEntityNumber eq 'A999'
Get a list of Locations with the names that contain the word 'Food'
https://odata.restaurant365.net/api/v1/views/Location?$filter=contains(name, 'Food')
GL Account
Get GL Account(s) by GL Account number
https://odata.restaurant365.net/api/v1/views/GLAccount?$filter=glAccountNumber eq '1234'
Get GL Account(s) by Location ID
https://odata.restaurant365.net/api/v1/views/GLAccount?$filter=locationId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Get GL Account(s) by GL Type and Location
https://odata.restaurant365.net/api/v1/views/GLAccount?$filter=glType eq 'Current Asset' and locationName eq 'My Cafe'
Get Legal Entity names and numbers by a specified GL Account numeric ID
Employee
Get Employees by full name
https://odata.restaurant365.net/api/v1/views/Employee?$filter=fullName eq 'John Smith'
Get Employees who allow text messaging
https://odata.restaurant365.net/api/v1/views/Employee?$filter=allowTextMessaging eq true
Get Employees having a specified Location as their primary work Location
https://odata.restaurant365.net/api/v1/views/Employee?$filter=primaryLocation_id eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Get active Employees who live in Chicago
https://odata.restaurant365.net/api/v1/views/Employee?$filter=city eq 'Chicago' and inactive eq false
Labor
Get labor details for a specified Employee by ID on a specified work day
https://odata.restaurant365.net/api/v1/views/LaborDetail?$filter=dateWorked eq 2019-01-08T00:00:00Z and employee_Id eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
Get an Employee's total hours worked on a specified work day
https://odata.restaurant365.net/api/v1/views/LaborDetail?$filter=dateWorked eq 2019-01-08T00:00:00Z and employee_Id eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx&$select=hours
Get all punches within a specified time range on a specified work day
https://odata.restaurant365.net/api/v1/views/LaborDetail?$filter=dateWorked eq 2019-01-08T00:00:00Z and startTime ge 2019-01-08T06:00:00Z and startTime lt 2019-01-08T12:00:00Z
Get all labor details from a specified date where Employees made less than a specified amount
https://odata.restaurant365.net/api/v1/views/LaborDetail?$filter=total le 50.00 and dateWorked eq 2019-04-23T00:00:00Z