Projects represent Mobile Data Studio project files that have been uploaded to Mobile Data Anywhere. They define the schema for data collected on the device, defining the user interface on the device, including validation and so on.

Projects when fetched via the API return a data record with the follow keys:

  • id - a unique identifier for the project in the Mobile Data Anywhere system.
  • name - The name of the project
  • filename - The filename when the project was uploaded. This must not ever change, as it is used on the mobile devices to identify the project there.
  • uid - a unique identifier that is an attribute of the .ppc file. This must also remain the same, as it is used by the mobile devices to identify the project.

Example JSON object:

{
    "id": 123
    "name": "Courier",
    "uid": 14253646,
    "filename": "Courier.ppc",
}

GET /api/v1/projects
Return a list of all projects in the user's account

This method supports filtering of the following fields:

  • name

Params

Param name Description
filename
optional

Filter the list of projects to ones that have a filename that match the given Filename

Validations:

  • Must be a String

device_id
optional

Filter the list of projects to ones that are linked to a device with the given Unit Id

Validations:

  • Must be a String


GET /api/v1/projects/:id
Get the details for a specific project.


GET /api/v1/projects/name/:name
Get the details for a specific project using the project's name.


GET /api/v1/projects/count
Return the number of projects in a user's account


POST /api/v1/projects
Create a new project by uploading a .ppc or .ppcx file


PUT /api/v1/projects
Update an existing project by uploading a .ppc or .ppcx file


POST /api/v1/projects/:id/deliver
Send the project a device

This sends the project to a device, identified by its “Unit ID”. If the device is connected, it will be delivered immediately. Otherwise the project will be queued and sent to the device the next time it connects.

Future updates to a project are only sent to the device if the device is “linked” to the project. See the /api/v1/projects/:id/link API method.

Note: Sending a project to a device does not load the project on the device. The user may still require completing whatever session is in progress and returning to the project list. Only when the project is shown in the list highlighted will it be reloaded on the device the next time the user opens it.

Params

Param name Description
unit_id
required

The unit ID of the device

Validations:

  • Must be a String


GET /api/v1/projects/:id/devices
Return a list of devices linked to this project

Return a list of devices linked to this project


POST /api/v1/projects/:project_id/devices/link
Link a project to one or more devices


POST /api/v1/projects/:project_id/devices/link_all
Link a project to all devices


POST /api/v1/projects/:project_id/devices/redeploy_all
Re-deploy a project to all devices

Re-deploy a project to all devices.

Examples

{
  "status": "success",
  "message": "success",
  "result": [
      DEVICE_ID_1,
      DEVICE_ID_2
  ]
}

Params

Param name Description
project_id
required

The Project ID of the project.

Validations:

  • Must be a Integer


DELETE /api/v1/projects/:id/devices/unlink
Unlink one or more devices from a project.


DELETE /api/v1/projects/:id/devices/unlink_all_devices
Unlink all devices from a project.


GET /api/v1/projects/:id/session_list_columns


GET /api/v1/clients/:client_id/projects/:project_id/test_designer_integration


GET /api/v1/projects/:id/download_ppc

GET /api/v1/clients/:client_id/projects/:project_id/download_ppc


GET /api/v1/projects/:id/xml_schema
Get the XML Schema for the specified project.

This method will return the XML Schema in a similar format to:

Example XML for a basic project:
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="ProjectDataSet">
    <xs:element name="ProjectDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="Project">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="UUID" type="xs:string"/>
                            <xs:element name="Date" type="xs:date"/>
                            <xs:element name="Created" type="xs:dateTime"/>
                            <xs:element name="Saved" type="xs:dateTime"/>
                            <xs:element name="UnitID" type="xs:string"/>
                            <xs:element name="JobNumber" type="xs:string"/>
                            <xs:element name="JobAssigned" type="xs:string"/>
                            <xs:element name="TransportandRate" type="xs:string"/>
                            <xs:element name="Material" type="xs:string"/>
                            <xs:element name="Courier" type="xs:string"/>
                            <xs:element name="Client" type="xs:string"/>
                            <xs:element name="PickUpAddress" type="xs:string"/>
                            <xs:element name="PickUpContactName" type="xs:string"/>
                            <xs:element name="PickUpPhone" type="xs:string"/>
                            <xs:element name="PickUpTime" type="xs:string"/>
                            <xs:element name="DeliveryAddress" type="xs:string"/>
                            <xs:element name="DeliveryContactName" type="xs:string"/>
                            <xs:element name="DeliveryPhone" type="xs:string"/>
                            <xs:element name="DeliveryTime" type="xs:string"/>
                            <xs:element name="DeliverySignature" type="xs:string"/>
                            <xs:element name="CostDollars" type="xs:string"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>

POST /api/v1/projects/:project_id/archive
Moves a project from Active to Archived.

This changes the status of a project from Active to Archived to temporarily hide the project. An archived project can be changed back to active at any time using the unarchive endpoint: /api/v1/projects/:project_id/unarchive

Params

Param name Description
project_id
required

The Project ID

Validations:

  • Must be a Integer


POST /api/v1/projects/:project_id/unarchive
Moves a project from Archived to Active.

This changes the status of a project from Archived to Active.

Params

Param name Description
project_id
required

The Project ID

Validations:

  • Must be a Integer


POST /api/v1/projects/:project_id/update_sequence
Attempts to set the next sequential id for the project. This will fail if the new sequential id is less than the existing sequential id.

Params

Param name Description
project_id
required

The Project ID

Validations:

  • Must be a Integer

next_sequential_id
required

The next sequential id

Validations:

  • Must be a Integer


POST /api/v1/projects/:project_id/reset_sequence
Resets the sequence for the project and updates all sessions to match the new sequence.

Params

Param name Description
project_id
required

The Project ID

Validations:

  • Must be a Integer

initial_sequential_id
required

The new sequential id that will start the sequence

Validations:

  • Must be a Integer


POST /api/v1/projects/:project_id/reformat_sequence
Queues a background job to reformat all existing sessions with the latest project sequence formatting settings.

Params

Param name Description
project_id
required

The Project ID

Validations:

  • Must be a Integer


POST /api/v1/projects/:project_id/promote
Promotes a project from developer account to production account.

Params

Param name Description
project_id
required

The Project ID

Validations:

  • Must be a Integer


POST /api/v1/projects/:project_id/clone_down
Clones a project from production account to developer account.

Params

Param name Description
project_id
required

The Project ID

Validations:

  • Must be a Integer

new_project_name
required

New Project Name

Validations:

  • Must be a String


POST /api/v1/projects/:project_id/clone
Clones a project into the same account, with a new name.

Params

Param name Description
project_id
required

The Project ID

Validations:

  • Must be a Integer

new_project_name
required

New Project Name

Validations:

  • Must be a String