> For the complete documentation index, see [llms.txt](https://docs.fulfillmenttools.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fulfillmenttools.com/documentation/apps/technical-requirements.md).

# Technical requirements

The fulfillmenttools applications have several technical requirements and network dependencies.

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 (Store 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 17 (API Level 37).
* 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 Google Cloud Storage buckets or Google Cloud Artifact Registry 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. (Store 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.
* 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.

### Store 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.

#### Images and CORS configuration

When using the Store Operations web application, externally hosted images must be served with appropriate Cross-Origin Resource Sharing (CORS) headers.

Due to browser security restrictions and the WebAssembly (WASM) implementation, image resources loaded from third-party systems must allow cross-origin access.

**Requirements**:

* Image servers or CDNs must return appropriate `Access-Control-Allow-Origin` headers (`Access-Control-Allow-Origin: https://ops-<projectId>-prd.web.app` or `Access-Control-Allow-Origin: *`
* The image host must allow requests from the Store Operations web application origin.
* Images without proper CORS configuration may not display or process correctly in the application.

### 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).

### iOS apps (Store Operations and Returns)

* Apple iOS device with a camera.
* Minimum software: iOS Version 15.0.
* Devices must be able to access the Apple App Store for application downloads and updates.
* Required application permissions 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.
* Devices must be able to access the Apple App Store for application downloads and updates ([Store Operations app](https://apps.apple.com/us/app/store-operations/id6768547094) or [Returns app](https://apps.apple.com/us/app/fulfillmenttools-returns/id6477875850)).
* Required application permissions must be granted on the device ([Store Operations permissions](https://apps.apple.com/us/app/store-operations/id6768547094) or [Returns permissions](https://apps.apple.com/us/app/fulfillmenttools-returns/id6477875850)).

## 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-<projectId>-prd.web.app/`
* Backoffice:
  * `https://ocff-<projectId>-prd.web.app/`
* REST API:
  * `https://ocff-<projectId>-prd.api.fulfillmenttools.com/`
* GraphQL API:
  * `https://ocff-<projectId>-prd.graphql.fulfillmenttools.com/`
  * `wss://ocff-<projectId>-prd.graphql.fulfillmenttools.com/`
* Public configuration files:
  * `https://storage.googleapis.com/ocff-<projectId>-prd-config-public/`
* fulfillmenttools.com:
  * `https://www.fulfillmenttools.com/imprint`
  * `https://www.fulfillmenttools.com/privacy-policy-mobile-app`

## 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
