# Best Practices for Third Party Systems

### GET Items

- `id`
– This is the uniqueidentifier for the item. Since this is unique it is best that you save this in your system as the item reference instead of `sku` .
- `sku` & `upc` – In Yellow Dog, both of these can be used as scannable barcodes. If your system supports multiple barcodes, it is best to get sku and the UPC array. There is no limit on how many UPCs can be attached to an item in Yellow Dog.
- `lastUpdated` – When a change is made to an item (such as a `price` , `description` , `upc` , etc.) the `lastUpdated` field will reflect the last time the item was updated. It is recommended to pull items with the `lastUpdated` filter. For example, `filter=lastUpdated=01/01/2019` .
- `description` – This is the long description of the item and usually has the most information. If your description field can hold up to 256 characters, it is best to use this. If you have character limitations, use `posDescription1`
- `active` – denotes whether an item is flagged as Active or Inactive in Yellow Dog. This is not the same as removed or deleted. Inactive items remain fully intact in the database and are typically used to move seasonal products out of their active inventory.
- `stores` – Expand stores to get store specific information
  - `publish` – The publish flag determines whether or not the item should be published to the POS
    - `Generic Interfaces` – store specific interface settings can be found here. If your system uses classes or groupings to determine tax rate, taxable (yes/no), reporting by groups (family groups, major groups), displaying item on touchscreen (yes/no or specific screen), etc. It is best to take advantage of these generic interfaces. There are 10 useable generic interfaces that can be manually created in Yellow Dog with a alpha/numeric code and a description. Using these eliminates the need for the end user to setup an item in Yellow Dog and your system.


hr
### Supporting an Inventory Integration for Point-of-Sale Systems. 

#### Flow 1:  Item Creation and Updates (For 2-Way Integrations)

##### Preferred Method:  POST via an endpoint in your API, Yellow Dog builds Sync Application

##### Alternate Method 1:  POS Vendors consume our endpoints for Items.

- API: [https://yellowdogsoftware.com/ydapi](https://yellowdogsoftware.com/ydapi)
- Item Endpoint: [developer.yellowdogsoftware.com/fetch/api/items/get-items](https://developer.yellowdogsoftware.com/fetch/api/items/get-items)


##### Alternate Method 2:  POS Consumes csv file.

- Generic Sync (see [help.yellowdogsoftware.com/generic-sync](https://help.yellowdogsoftware.com/generic-sync/))


#### *Notes:*

*Retail Items are NOT as complex as traditional menu items.  They typically don’t go on any screens, don’t have different retail prices based on time, and don’t have modifiers.  They are flat, static items that should be scanned to be added to a check.  Some general search in POS would be helpful.*

*Yellow Dog Inventory can also automatically assign various POS Codes (Department, Category, Class etc.) to each item so that we can present a new item in a manner that handles the assignment/abilities/placement in your system automatically and does NOT require some additional mapping.*

#### Flow 2:  Sales Back to Yellow Dog (2-Way Integrations)

p
Yellow Dog Inventory will need to get sales data to decrement inventory and capture transactional data.
p
We prefer to get ALL transactions.  We have an ability to decrement items to any item sold at POS and not just the retail items we introduce.  We also prefer to get as much detail on the transaction as possible to ensure our reporting is as detailed as possible.
##### Preferred Method:  Webhook for sales data OR GET via an endpoint in your API

##### Alternate Method 1:  POS Vendors consumes our endpoints for posting sales.

- API: [yellowdogsoftware.com/ydapi](https://yellowdogsoftware.com/ydapi)
- Sales Endpoint: [developer.yellowdogsoftware.com/fetch/api/transactions/post-transactions](https://developer.yellowdogsoftware.com/fetch/api/transactions/post-transactions)


##### Alternate Method 2:  POS provides csv file.

- Generic Sync (see [help.yellowdogsoftware.com/generic-sync](https://help.yellowdogsoftware.com/generic-sync/))


##### Alternate Method 3:  POS provides csv file.

- Sales Sync (see [help.yellowdogsoftware.com/1waysales](https://help.yellowdogsoftware.com/1waysales))


### Below is the potential universe for a complete 2-way POS integration.

p
Required *
1. Item Add/Update: You need an API endpoint to receive new/changed items or you consume ours.  The API should NOT have a call limit as new installs can be 10K+ of items (or we need it suspended during the implementation).


ol
li
*New Item/Update/
li
Item Status (Active/Inactive/Removed)
li
Item Long Description
li
Item Short Description
li
*Item POS1 Description (could be button name or printer name)
li
Item POS2 Description (could be button name or printer name)
li
*Item SKU
li
*Item UPC Codes (at least one, prefer unlimited)
li
*Item Price 1
li
Item Price 2-10 (used for member pricing/happy hour pricing)
li
Item Cost (only needed for discounts that are cost +)
li
Item Dimension 1 (Size)
li
Item Dimension 2 (Color)
li
Item Dimension 3 (Other)
li
Item Pictures (optional)
li
On Hand (optional)
li
All POS Partner Codes/Info (see #2)
li
Matrix/Style – Ties into l and m.  We have Matrix profiles that can tie all skus for a single style together (Mens shirt Style 1234 – Red/White/Blue – Small/Med/Large = 1 style, 9 skus.

2.  
b
System Codes (Ideal):
 Each item created in Yellow Dog Inventory can automatically be assigned to your specific POS codes (Department, Class, Group, etc.).  Whether you are pulling items or we are pushing them, we can make sure the items are associated with your POS codes.  The endpoint for this is located here:

br
[https://fetch.yellowdogsoftware.com/index.html#/ThirdPartyCodes](https://fetch.yellowdogsoftware.com/index.html#/ThirdPartyCodes)

ol
li
This is usually things like revenue center info, class info, and anything else needed to fully form a menu item in your system.  Pulling it means we can’t introduce anything that does not exist first in the POS.
li
These “codes” can be manually entered into Yellow Dog Inventory
1. POS Abilities:


ol
li
*Bar Code Scanning of Items (support all bar code fonts)
li
Ideal - Ability to have unlimited UPC Codes for an Item in addition to its one SKU number
li
Ideal - Sell and return item in same transaction (exchange)
li
Ideal - Return code added to your API sales transaction endpoint (to know if item goes back to inventory or not)
li
Ideal - Clearly defined voids vs returns (one does not affect inventory, one does)
li
Clearly defined discount presentation in transaction to each item 
li
Good lookup/search ability (no bar code)

ol
li
Search allows you to select and add to transaction
li
Search (optionally) calls our API and gets real-time on-hand counts across all stores in property
li
SLU (Ability to have an item automatically appear on designated touchscreens (fast, favorites, small hard to scan, etc)
1. Sales:  POS Partner API endpoint to retrieve detailed sales info


ol
li
Report (with export) to show all items with all settings
li
Report (with export) Item change report to show all changes to item data by date/time range
h3
 Preferred Method – Consume Your API
![Preferred Method](/assets/preferredmethod_consumeyourapi.4d13b324802e7ffe72d14e966a69c0f8f37d4fcad2996d14f1602e44ec6e422b.eb330b5d.png)

br
h3
Alternate Method 2 – You Consume Yellow Dog’s API
![Preferred Method](/assets/preferredmethod2_consumeyourapi.fc44ce7769f798afbb6420d55476396a8b3e0ef6330c2b5a1d26f9b28003a50b.eb330b5d.png)