LogoLogo
What's NewDeveloper CommunitySupportStatus
  • 🚀Get Started
    • What is JourneyApps Platform?
    • Tutorial: Build your First App
      • 1. Introduction
      • 2. Create a new App
      • 3. OXIDE IDE Overview
      • 4. Hello World app
      • 5. The Data Model
      • 6. View Components
      • 7. Queries and Data Sync
      • 8. Simple Navigation
      • 9. View Stack
      • 10. Input Validation
      • 11. View Parameters
      • 12. Data Manipulation
      • 13. Responsive Apps
      • 14. Styling
      • 15. Lists
      • 16. GPS Capturing
      • 17. Relationships
      • 18. Multiple User Roles
      • 19. Deployment and Users
      • 20. Version Control
      • 21. CSV and APIs
      • 22. Conclusion
    • JourneyApps Platform Fundamentals
      • Creating a New App
        • Git-enabled Apps
      • What are Views?
      • What is the Data Model?
      • JourneyApps Syntax Basics
      • Access the Database (DB)
        • Manipulate DB Objects
        • Query DB Objects
      • View Navigation
        • Deep Linking
      • CloudCode Overview
      • OXIDE (Online IDE)
  • 💻Build your App
    • JourneyApps Syntax
      • Syntax Basics
      • Access the DB
      • View Navigation
      • Async & Await
      • TypeScript Apps (Beta)
        • runtime-build package
        • TypeScript App Troubleshooting
      • What's New in V4
        • Updating to the V4 API
    • Configure your Data Model
      • What is the data model?
      • Reference: model
        • field
        • belongs-to
        • has-many
        • index
      • Data Rules
        • Data Buckets
        • Sync Rules - Limit data synced to devices
        • Data ACLs - Limit access to data
        • Real-world example for Data Rules
        • ❔FAQs
        • Migrate to Data Rules
      • App Indexes
      • Webhooks
    • UI Components
      • All UI Components
        • actionSheet
        • Attachments
        • button
        • button-group
        • capture-coordinates
          • marker
          • marker-query
        • capture-file
        • capture-photo
        • capture-signature
        • card
          • accent
          • action
        • columns
          • column
        • component
        • context-menu
          • divider
          • item
        • CSV
        • date-input
        • datetime-input
        • dialog
          • body
        • display-3d-model
          • 📖display-3d-model Guides
            • Guide 1: Initialize and layout a 3D model in a view
            • Guide 2: Control playback position
            • Guide 3: Troubleshooting controls
        • display-coordinates
        • display-file
        • display-image
        • display-photo
        • display-signature
        • heading
        • html
          • HTML Advanced Topics
          • ❔HTML FAQs
          • 📖Guide: HTML & JourneyApps iFrame Client
        • icons
        • info
        • info-table
          • row
        • journey.photos (capture multiple photos)
        • JourneyPrinter (print PDFs)
        • grid
          • cell
          • 📖grid Examples
        • list
          • list-item
            • accent
            • asset
            • pills
              • pill
            • action
        • multiple-choice-checklist
        • navigation (Navigation drawer)
          • general-section
            • item
          • section
            • item
              • item
          • ❔navigation FAQs
        • notification
        • object-dropdown
        • object-list
          • action
        • object-repeat
        • object-table
          • action
          • column
            • action
            • edit-boolean
            • edit-date
            • edit-datetime
            • edit-integer
            • edit-number
            • edit-select
            • edit-text
            • edit-time
            • edit-typeahead
              • action
            • header-action
          • column-group
          • empty-action
          • 📖object-table Guides
            • Actions
            • Cell callouts
            • Column groups
            • Columns
            • Controlled object-table
            • Controls
            • Copy & paste data
            • Edit cells
            • Filters
            • Frozen columns
            • Fullscreen object-table
            • Mode
            • State
            • Styles
        • optionList
        • PhotonSync (transfer data offline)
        • power-bi
          • 📖Guide: PowerBI Embedding
        • scan-barcode
        • shortcut
        • sidebar
        • single-choice-dropdown
        • single-choice-radio
        • template
        • text-input
        • time-input
        • toggle
        • view
      • JS/TS Events
      • Show / Hide UI Components
      • View Templates
      • XML Fields (Attributes)
        • align-content
        • align-controls
        • align-label
        • bind
        • clear-button-visibility
        • control-order
        • disabled
        • error-message
        • icon-position
        • id
        • hide-if
        • modifier-text
        • label
        • label-case
        • label-color
        • on-change
        • on-press
        • placeholder
        • required
        • show-if
    • JS / TS APIs
      • Attachment
      • Bluetooth (Beta)
      • Broadcast
      • component
      • CSV
      • DB
      • HardwareBarcode
      • journey
        • journey.config
        • journey.container
        • journey.device
        • journey.diagnostics
        • journey.dialog
        • journey.files
        • journey.hardware
        • journey.photos
        • journey.runtime
        • journey.sensors
        • journey.viewStack
      • JourneyPrinter
      • KeyboardBarcode
      • LocalDB
      • NFC
      • OnlineDB
      • PhotonSync
      • SerialPort
      • ShortcutManager
      • TCPSocket
      • user
    • Extend your App with Custom Code
      • App packages
        • App packages overview
        • PDF report package
        • TypeScript library & unit tests
        • Manage External Dependencies
      • Custom HTML
    • Style & Customize your App
      • Style & configure UI components
        • Overview
        • Understand extendable themes
        • Use themes on a view
        • Theme specific components on a view
        • Examples
        • Debugging
        • ❔FAQs
      • Change your App Font
      • Custom Branding
        • Custom Container Features
        • Special Requirements for iOS Containers
    • Integrate your App
      • Backend integrations with CloudCode
      • Barcode Scanning
        • Barcode Scanning using Keyboard Emulation
        • Hardware Barcode Scanning
        • scan-barcode
      • Bluetooth Low Energy (BLE)
      • Broadcast API
      • HTTP requests (Fetch API)
      • JourneyApps Print (Android)
      • Maps and navigation
      • NFC
      • Opening external links/apps
      • Serial Port
      • TCP Sockets
    • Design Intuitive Apps
      • UX Guidelines
      • Write Effective Copy
  • 📱App Features
    • RealWear® Voice Control
      • Automatic Voice Commands
        • Automatic Voice Commands - Advanced
      • Manual Voice Commands
    • App, Runtime and Container Updates
    • Batch Operations (App)
    • Call JS/TS Functions from XML
    • Capture GPS Locations
    • Push Notifications
    • Translations
    • XML Format Strings
    • Webhooks (External)
  • 🌐CloudCode
    • CloudCode Overview
    • Trigger a CloudCode Task
      • Trigger CC with a Schedule
      • Trigger CC via a Webhook
      • Trigger CC from an App
      • Trigger CC from Another Task
      • Trigger CC via HTTP
    • Attachments in CloudCode
    • Timezones
    • Advanced CloudCode Topics
      • Access Multiple DBs in CloudCode Tasks
      • Batch API (CloudCode)
      • CloudCode Dependencies
      • Configure HTTPS in CloudCode
      • Deployment environment variables
      • Local CloudCode Development
      • PDF Reports using CloudCode
      • Shared CloudCode Tasks
      • Translations in CloudCode
  • 📥Backend API
    • Introduction
    • API Reference
      • Retrieve All Objects
      • Query Objects
      • Sort Results
      • Limit and Skip
      • Count Objects
      • Create a New Object
      • Retrieve a Single Object
      • Update a Single Object
      • Delete a Single Object
      • Batch Operations (v4 API)
      • Oplog API
      • Retrieve the App Data Model
      • Manage App Users and Sessions
      • Field Representation
      • Error Responses
    • API Limits
    • Update to the V4 API
  • ⚙️Technical
    • Data Synchronization Priority
    • Device Diagnostics
    • JSON1 Query Engine
    • Improve App Performance
    • Security Measures
    • Supported Platforms
      • Web Container
      • Windows Installer
    • Domain Whitelist
  • 🖥️OXIDE
    • Get started with OXIDE
      • OXIDE Overview
      • Components of OXIDE
    • Configure Testing Deployments
    • Edit and Manage Files
      • How to Navigate to a Function
      • Manage External Dependencies
    • Create and Manage App Containers
    • Debugging & Troubleshooting
      • Common Troubleshooting Pointers
      • App Diagnostics Reports
      • Build Logs
    • OXIDE Workspaces
      • OXIDE Trees
  • ❕Deprecated Features
    • Deprecated Features and Components
Powered by GitBook
On this page
  • Enabling the API
  • Authentication
  • HTTP Endpoints
  • Request Parameter Formats
  • Response Data Formats
  • Error Handling
  • API Stability
  1. Backend API

Introduction

PreviousTranslations in CloudCodeNextAPI Reference

Last updated 2 years ago

The JourneyApps API allows you to integrate or "sync" your own databases or systems with your JourneyApps application. In other words, it allows you to connect one of your own systems to your app in a way that the two can "talk" to each other behind the scenes.

On a technical level, the API takes the form of an HTTP API, and uses standard HTTP authentication.

Enabling the API

The API is configured on an App Deployment level, which means that each deployment of your app (you can see each deployment listed in the Deployments workspace or panel in OXIDE) has its own API credentials.

To obtain the API credentials for a specific App Deployment:

  1. Open the deployment in the Data Browser

  2. Open the dropdown in the top right corner, and click on Manage API. If this option is not immediately visible, you may need to elevate your permissions.

On the Manage API page, you'll be able to see the deployment's HTTP Basic Username and Password or create Named Tokens. Please keep this information private and record it in a secure place.

Authentication

API authentication uses either a Named Token specified in the HTTP Authorization header, or using .

The syntax for the Named Token header is Authorization: Bearer O:mytokenhere.

All API requests must occur over HTTPS and each request must include authentication credentials.

HTTP Endpoints

An endpoint is the base URL that you connect to when using the API.

These base URLs are dynamic for each of your app's deployments, and can be reviewed on the Manage API data browser page for your deployment (see steps to access this page in the section above).

Base URLs have the following structure:

For deployments created after 31 January 2023, the following structure applies:

https://{app-deployment-id}.backend.{region-code}.journeyapps.com/api/v4/{backend-deployment-id}

Deployment IDs

Note that deployments are identified by different IDs in the app (OXIDE), backend and CloudCode. The Backend API typically uses the backend deployment ID.

Example:

https://62d541f4156bc4dd685318da.backend.us.journeyapps.com/api/v4/62d541ff9f54b7000706c585

For deployments created before 31 January 2023, the legacy structure applies:

https://run{deployment-environment-and-region-code}.journeyapps.com/api/v4/{backend-deployment-id}

Examples:

Testing environment:

https://run-testing-us.journeyapps.com/api/v4/615ae1ee8c5ef500078a4908

Production environment:

https://run-us.journeyapps.com/api/v4/615ae1ee8c5ef500078a4908

In this legacy structure, the {deployment-environment-and-region-code} placeholder of the base URL is constructed per deployment region and environment as follows:

Region
Environment
Base URL snippet

United States

Testing

https://run-testing-us.journeyapps.com

Staging

https://run-staging-us.journeyapps.com

Production

https://run-us.journeyapps.com

Europe

Testing

https://run-testing-eu.journeyapps.com

Staging

https://run-staging-eu.journeyapps.com

Production

https://run-eu.journeyapps.com

Australia

Testing

https://run-testing-au.journeyapps.com

Staging

https://run-staging-au.journeyapps.com

Production

https://run-au.journeyapps.com

South Africa (Deprecated)

Testing

https://run-testing.journeyapps.com

Staging

https://run-staging.journeyapps.com

Production

https://run.journeyapps.com

Base URL and Relative URL

In order to create an object. In other words, let's say your deployment's backend ID is 54c89f71923a3be4fe00000f and you want to create a new 'car' object in in this deployment (which is in the United States region), you'll send an HTTP request to:

https://62d541f4156bc4dd685318da.backend.us.journeyapps.com/api/v4/54c89f71923a3be4fe00000f/objects/car.json

Request Parameter Formats

Parameters supplied to API functions may be in any of the following formats. It may be necessary to set the Content-Type HTTP header as shown.

Format
Content-Type Header
Example

application/json

{"client":{"address":"123 South"}}

application/x-www-form-urlencoded

This is the default for POST requests and usually does not have to be specified explicitly.

client[address]=123%20South

How do I format fields?

Response Data Formats

All v4 API responses are in currently in JSON. It is however still recommended that you indicate the acceptance of JSON by either:

  • Setting the Accept HTTP header to application/json

In what format will my fields be returned?

Error Handling

Response Codes

The API uses standard HTTP status codes to indicate the outcome of an API request.

  • A status code in the 2xx range indicates that the operation has completed successfully.

  • A status code in the 3xx range indicates a redirect. This is only used for specific calls, for example for fetching attachments.

  • Any other status code indicates that the operation has failed:

  • A status code in the 4xx range indicates that invalid input from your side is responsible for the error.

  • A status code in the 5xx range indicates that an internal server error on the JourneyApps side is responsible for the error.

API Stability

No breaking changes will be made to an existing stable API version. If we do need to make a breaking change, we will do one of:

  1. Publish it as part of a new API version, e.g. API v5.

  2. Place it behind a feature flag, that is enabled on request for specific apps.

  3. Give sufficient notice in the rare case that a change to an existing API cannot be avoided.

Note that we will periodically add new API calls to an existing API version, as well as new fields or HTTP headers to API responses. This is not considered a breaking change, and API clients must ignore any unrecognized fields.

Removing, renaming or changing the type or behavior of an existing API call or field is considered a breaking change, and the above breaking change policy will apply.

Beta APIs

Certain APIs, such as the api.journeyapps.com, may be classified as "Beta". In this case, we may make breaking changes or even completely remove or replace the API, but will strive to give sufficient notice in such cases.

Throughout the rest of the documentation, we will indicate the URL that you need to use relative to the base URL to perform a particular function (e.g. , , , etc).

For example, in the section, we indicate that you need to send an HTTP POST request to the relative URL /api/v4/backend-deployment-id/objects/model.json

key-value pairs

For details on how to format the object fields that you send to the API, please see the section:

By appending .json to the end of the URL. For example: BASE-URL/api/v4/backend-deployment-id/objects/assets.json. Note: See the section about above to get the value for the BASE-URL placeholder.

For details on how your object fields received from the API will be formatted, please see the section.

Full details on error responses are described on the page:

📥
Retrieve all Objects
Create a New Object
Update a Single Object
Create a New Object
Field Representation
Field Representation
Field Representation
Field Representation
Error Responses
Error Responses
REST
HTTP Basic Authentication
Enabling the API
HTTP Endpoints
JSON
URL-encoded