> Note: > This is a legacy API. Use the latest version of [`POS`](/docs/api/app-bridge-library/apis/pos) instead. Provides a mechanism for closing the app when it's running in Shopify POS, and for retrieving information about a Shopify POS device. ## Requirements - User and location data are available in all version of Point of Sale Android and iOS. - Device data is available in following app version: * **Point of Sale iOS version 5.36.0** or above * **Point of Sale Android version 3.29.0** or above - Close is available in the following app version: * **App Bridge version 1.18.0** or above is required * **Point of Sale iOS version 5.50.0** or above * **Point of Sale Android version 3.43.0** or above ## Setup Create an app and import the `Pos` module from `@shopify/app-bridge/actions`. Note that we'll be referring to this sample application throughout the examples below. > Note > In the following example, `config` is a valid App Bridge configuration object. Learn more about [configuring App Bridge](/docs/api/app-bridge/previous-versions/app-bridge-from-npm/app-setup#initialize-shopify-app-bridge-in-your-app). ```js import createApp from '@shopify/app-bridge'; import {Pos} from '@shopify/app-bridge/actions'; const app = createApp(config); ``` ## Close an app embedded in Shopify POS Create a Pos object that can be used to close the embedded app. You might close the embedded app after the user successfully completes an action to return them to the Shopify POS app. ```js const pos = Pos.create(app); ``` To close the embedded app, use the Pos object to dispatch the `CLOSE` action. ```js // App Bridge 1.x pos.dispatch(Pos.ActionType.CLOSE); // App Bridge 2.x pos.dispatch(Pos.Action.CLOSE); ``` ## Get POS data POS data is available in the state and accessible through [app.getState()](/docs/api/app-bridge/previous-versions/methods#app-getstate). There are several ways to get the data: **Option 1: get all state** ```js app.getState().then((data) => { const {pos} = data; }); ``` **Option 2: get only pos** ```js app.getState('pos').then((pos) => { }); ``` **Option 3: get only pos user** ```js app.getState('pos.user').then((user) => { }); ``` **Option 4: get only pos location** ```js app.getState('pos.location').then((location) => { }); ``` **Option 5: get only pos device** ```js app.getState('pos.device').then((device) => { }); ``` > Note > app.getState() just returns current state. To avoid getting state before it is ready, you may need to subscribe as below: > > ```js > const unsubscribe = app.subscribe(function() { > app.getState('pos').then(function(pos) { > if (!pos) { > return; > } > unsubscribe(); > }); > }); > ``` ## Payload ### POS Payload
Key | Type | Description |
---|---|---|
user |
User | User info. |
location |
Location | Location info. |
device |
Device | Device info. |
Key | Type | Description |
---|---|---|
id |
Number | The ID of login user. |
firstName |
String | The first name of login user. |
lastName |
String | The last name of login user. |
email |
String | The email name of login user. |
accountOwner |
Boolean | Indicate if login user is the shop owner. |
userType |
String | The type of login user. |
Key | Type | Description |
---|---|---|
id |
Number | The ID of current location. |
active |
Boolean | The status of current location. |
name |
String | The name of current location. |
locationType |
String? | The type of current location. |
address1 |
String? | The primary address of current location. |
address2 |
String? | Any extra information associated with the address (Apartment #, Suite #, Unit #, etc.). |
zip |
String? | The ZIP or postal code of the address. |
city |
String? | The name of the city. |
province |
String? | The province or state of the address. |
countryCode |
String? | The Country Code in ISO 3166-1 (alpha-2) format. |
countryName |
String? | The country of the address. |
phone |
String? | The phone number of the location. |
Key | Type | Description |
---|---|---|
name |
String | The name of the device |
serialNumber |
String | The unique ID associated device ID and app ID. |