Skip to content

Working with Check-ins

In Navixy, check-ins are a feature used to record and report the location and status of employees in the field. They allow employees to send real-time updates about their location, accompanied by additional data such as forms, photos, and comments. These check-ins can be used for various purposes, including verifying task completion, providing updates on job progress, and collecting field data. Check-ins are typically created using the X-GPS Tracker mobile app and can be integrated into workflows to ensure accurate and timely information from field employees.

Check-ins are normally created using X-GPS Tracker mobile app. The description below is necessary only for non-standard use, such as creating your own Mobile Tracker app that works with the Navixy platform.

To create check-ins in the Navixy platform, follow these steps:

Step 1: Create a Form from a Template

Use the checkin/form/create API call to create a form based on a template. In the X-GPS Tracker, the form is created when the template is selected by a user.

Step 2: Create Files for Photos

Use the checkin/image/create API call to create files for check-in photos and upload the photo data. In the X-GPS Tracker, check-in photos are created as each photo is added.

Step 3: Create Form Files

Use the checkin/form/file/create API call to create form files and upload their data. In the X-GPS Tracker, form files are created when they are added while filling out the form.

Step 4: Create the Check-in

Use the checkin/create API call to create the check-in, attaching all the necessary data. If the form includes optional fields that should be left empty for your check-in, simply refrain from adding these fields to the form submission object.

File Upload Process

Here's how to upload files to the platform. If you have multiple files to upload, add a brief delay between each upload to ensure a smooth process.

Using the API calls checkin/image/create and checkin/form/file, the app requests permission to upload a file. The platform responds with the location and token for the file upload.

Internal Storage Example

The platform provides the location and token for the file upload:

{
  "success": true,
  "value": {
    "file_id": 111,
    "url": "http://example.org/upload",
    "expires": "2020-02-03 03:04:00",
    "file_field_name": "example.png",
    "fields": {
      "token": "a43f43ed4340b86c808ac"
    }
  }
}

Upload the file using the provided URL and token:

POST /upload HTTP/1.1
Host: example.org
Content-Length: 1325
Origin: http://example.org
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryePkpFF7tjBAqx29L

------WebKitFormBoundaryePkpFF7tjBAqx29L
Content-Disposition: form-data; name="token"

a43f43ed4340b86c808ac
------WebKitFormBoundaryePkpFF7tjBAqx29L
Content-Disposition: form-data; name="example.png"; filename="example.png"
Content-Type: image/png

... contents of file go here ...
------WebKitFormBoundaryePkpFF7tjBAqx29L--

Amazon S3 Example

For the Cloud version of the platform using Amazon S3:

{
  "success": true,
  "value": {
    "file_id": 111,
    "url": "https://example.s3.amazonaws.com/",
    "expires": "2020-02-03 03:04:00",
    "file_field_name": "file",
    "fields": {
      "policy": "<Base64-encoded policy string>",
      "key": "user/user1/${filename}",
      "success_action_status": "200",
      "x-amz-algorithm": "AWS4-HMAC-SHA256",
      "x-amz-credential": "AKIAIOSFODNN7EXAMPLE/20151229/us-east-1/s3/aws4_request",
      "x-amz-date": "20151229T000000Z",
      "x-amz-signature": "<signature-value>",
      "x-amz-server-side-encryption": "AES256",
      "content-type": "image/png"
    }
  }
}

Upload the file using the provided URL and fields:

POST / HTTP/1.1
Host: example.s3.amazonaws.com
Content-Length: 1972
Origin: https://example.s3.amazonaws.com/
Content-Type: multipart/form-data; boundary=WebAppBoundary

--WebAppBoundary
Content-Disposition: form-data; name="policy"
Content-Type: text/plain

<Base64-encoded policy string>
--WebAppBoundary
Content-Disposition: form-data; name="key"
Content-Type: text/plain

user/user1/actual_file_name.png
--WebAppBoundary
Content-Disposition: form-data; name="success_action_status"
Content-Type: text/plain

200
--WebAppBoundary
Content-Disposition: form-data; name="x-amz-algorithm"
Content-Type: text/plain

AWS4-HMAC-SHA256
--WebAppBoundary
Content-Disposition: form-data; name="x-amz-credential"
Content-Type: text/plain

AKIAIOSFODNN7EXAMPLE/20151229/us-east-1/s3/aws4_request
--WebAppBoundary
Content-Disposition: form-data; name="x-amz-date"
Content-Type: text/plain

20151229T000000Z
--WebAppBoundary
Content-Disposition: form-data; name="x-amz-signature"
Content-Type: text/plain

<signature-value>
--WebAppBoundary
Content-Disposition: form-data; name="x-amz-server-side-encryption"
Content-Type: text/plain

AES256
--WebAppBoundary
Content-Disposition: form-data; name="file"; filename="actual_file_name.png"
Content-Type: image/png

... contents of file go here ...
--WebAppBoundary--

Last update: August 4, 2024