# Technical requirements

The fulfillmenttools applications have several technical requirements.

Additional configurations are necessary when using [Zebra](/documentation/apps/technical-requirements/zebra-hardware-scanner-configuration.md) or [Honeywell](/documentation/apps/technical-requirements/honeywell-hardware-scanner-configuration.md) hardware scanners or a [Zebra printer](/documentation/apps/technical-requirements/zebra-printer.md).

{% hint style="info" %}
For questions about network setup, permissions, or requirements, contact us using [our support portal](https://ocfulfillment.atlassian.net/servicedesk/customer/portal/1/group/13/create/47).
{% endhint %}

## Application-specific requirements

### Android apps (Operations, Inventory, and Returns)

* Android smartphone or Mobile Data Entry (MDE) scanning device.
* Minimum software version: Android version 8 (API Level 26).
* Maximum software version: Android version 14 (API Level 34), which requires application version 1.22.0 or higher.
* The application is developed and tested on Google Pixel devices (4a or newer).
* A range of MDE devices, such as Honeywell (for example, EDA-52) and Zebra (for example, TC 21 and TC 26), is supported. A list of recommended devices or approval for specific devices is available upon request.
* MDE devices may require additional software to be installed and activated so the hardware scanner is accessible by the application.
* Devices not managed by a Mobile Device Management (MDM) tool must be able to access [Google Play](https://play.google.com/store/apps) for application downloads and updates.
* Alternatively, APK download is possible via the REST API when using a custom MDM solution. In this case, the application is downloaded through a channel provided by fulfillmenttools instead of from Google Play.
* Required application [permissions](https://play.google.com/store/apps/details?id=com.ocfulfillment.fulfillmentapp) must be granted on the device.
* Ports and URLs for Google Firebase Cloud Messaging (FCM) must be accessible to support push notifications. Refer to [FCM ports and your firewall](https://firebase.google.com/docs/cloud-messaging/concept-options#messaging-ports-and-your-firewall) for details. (Operations app only)
* The current version of [Google Play Services](https://developers.google.com/android/guides/overview) must be installed. This is usually present when a Google account is configured on the device.
* Ports and URLs for Google Play Services must be accessible. See the [appendix](#appendix).
* A stable internet connection or sufficient WiFi signal is required in the entire area where the application is used (for example, 50 Mb/s or Long-Term Evolution (LTE)). The required bandwidth depends on the number of active devices.

### Operations app (web)

* The latest version of a modern web browser, such as Google Chrome.
* Stable internet connection (50 Mb/s).
* Honeywell devices may need a separate license for the hardware scanner to be usable.

### Backoffice

* It's recommended to use one of the two most recent versions of a modern web browser, such as Google Chrome.
* Recommended minimum screen resolution: 1024x768.
* Stable internet connection (50 Mb/s).

### Returns App (iOS)

* Apple iOS device with a camera.
* Minimum software: iOS Version 14.1, which requires application version 1.2.1 or higher.
* The application is developed and tested on iPhone SE (iOS version 14.1 or newer).
* Devices must be able to access the [Apple App Store](https://apps.apple.com/us/app/fulfillmenttools-returns/id6477875850) for application downloads and updates.
* Required application [permissions](https://apps.apple.com/us/app/fulfillmenttools-returns/id6477875850) must be granted on the device.
* A stable internet connection or sufficient WiFi signal is required in the entire area where the application is used (for example, 50 Mb/s or Long-Term Evolution (LTE)). The required bandwidth depends on the number of active devices.

## Android-specific requirements

The Android mobile application utilizes Google Play Services and so requires access to the following services:

* Firebase Analytics requires access to:
  * `app-measurement.com/a`
* Firebase App Distribution requires access to:
  * `firebaseappdistribution.googleapis.com`
  * `appdistribution-uploads.crashlytics.com`
* Firebase Authentication requires access to:
  * `www.googleapis.com`
  * `firebaseauth.googleapis.com`
  * `identitytoolkit.googleapis.com`
  * `securetoken.googleapis.com`
* Firebase Crashlytics requires access to:
  * `*.crashlytics.com`
  * `*.fabric.io`
  * `crashlyticsreports-pa.googleapis.com`
  * `firebasecrashlyticssymbols.googleapis.com`
* Firebase Performance requires access to:
  * `play.googleapis.com`
  * `www.googleapis.com`
* Play Services and Firebase Installations require access to:
  * `device-provisioning.googleapis.com`
  * `firebaseinstallations.googleapis.com`

## Hosts and ports

To use the applications, the following hosts and protocols must be accessible from the network. Dedicated URLs are used for each tenant.

* [Google Identity Toolkit](https://cloud.google.com/identity-platform/docs/use-rest-api?hl=en) service:
  * `https://identitytoolkit.googleapis.com/`
  * `https://securetoken.googleapis.com/`
* [Sentry.IO](https://sentry.io/) service:
  * `https://*.ingest.sentry.io/api/`
* Operations app (web):
  * `https://pick-<tenant>-prd.web.app/`
* Backoffice:
  * `https://ocff-<tenant>-prd.web.app/`
* REST API:
  * `https://ocff-<tenant>-prd.api.fulfillmenttools.com/`
* GraphQL API:
  * `https://ocff-<tenant>-prd.graphql.fulfillmenttools.com/`
  * `wss://ocff-<tenant>-prd.graphql.fulfillmenttools.com/`
* Download API:
  * `https://ocff-<tenant>-prd.download.fulfillmenttools.com/`
* Public configuration files:
  * `https://storage.googleapis.com/ocff-<tenant>-prd-config-public/`

## Supported barcodes for camera scanning

The following barcodes are supported when scanning using the camera on an Android device:

* `EAN-8 Composite Symbologie`
* `EAN-13 Composite Symbologie`
* `QR Code`
* `Data Matrix`
* `Code-128`
* `UPC-A`
* `UPC-E`
* `Interleaved 2 of 5`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fulfillmenttools.com/documentation/apps/technical-requirements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
