> For the complete documentation index, see [llms.txt](https://docs.greenstand.org/mobile-app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.greenstand.org/mobile-app/upload-pack-format.md).

# Upload Pack Format

```
{
   "pack_format_version": 2,
   "wallet_registrations":[
      {
         "id" : <uuid>,
         "device_configuration_id" : <uuid of device configuration>,
         "wallet" : "3132687369"
         "user_photo_url":"https://treetracker-production-images.s3.eu-central-1.amazonaws.com/2020.07.21.18.38.41_37.8449304_-122.25714411_348e08db-8fc5-4b67-bb24-eecf294c0dc7_IMG_20200721_183825_8005989450661286921.jpg",
         "name" : "matt oaks",
         "phone" : "12312312",
         "email" : "kolz@obk.com",
         "lat":37.84492259,
         "lon":-122.2571481,
         "registered_at":<ISO 8601>
      }
   ],
   "device_configurations":[
      {
         "id" : <uuid>
         "brand":"google",
         "model":"Pixel",
         "device":"sailfish",
         "serial":"unknown",
         "hardware":"sailfish",
         "app_build":111,
         "instance_id":"dndz8wECMK8",
         "app_version":"1.2.8",
         "manufacturer":"Google",
         "os_version":"9",
         "sdk_version":28,
         "device_identifier":"4f4d6a8b6433e4ca",
         "logged_at" : <ISO 8601>
      }
   ],
   "sessions" : [
      {
         "id" : <uuid>,
         "device_configuration_id" : <uuid>,
         "originating_wallet_registration_id" : <uuid>,
         "check_in_photo_url" : "https://...", // if we capture it
         "target_wallet" : "somewallet",
         "organization" : <string>,
         "track_url" : <string>
      }
   ],
   "captures":[
      {
         "id" : <uuid>,
         "session_id" : <uuid>,
         "lat":37.84492259,
         "lon":-122.2571481,
         "gps_accuracy":12,
         "note":"",
         "image_url":"https://treetracker-production-images.s3.eu-central-1.amazonaws.com/2020.07.21.18.38.46_37.84492259_-122.2571481_42bc5f59-74e2-4c09-b182-ef67bc93d3d1_IMG_20200721_183835_8235710469335931789.jpg",
         "created_at":<ISO 8601>,
         "abs_step_count" : <int>,
         "delta_step_count" : <int>,
         "rotation_matrix": [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],
         "extra_attributes":[
            {
               "key":"height",
               "value":<double>
            },
            {
               "key":"dbh",
               "value":<double>
            }
         ],
      }
   ], 
   "messages" : [
      {
         "message_uuid" : <uuid>,
         "author_handle" : <ground_user_wallet>,
         "recipient_handle" : <admin organization>,
         "subject" : <string>,
         "body" : <string>,
         "composed_at": <ISO 8601>,
         "survey_id" : <uuid>,
         "survey_response" : <array of strings>,
      }
   ]
}
```

All packs must contain all data referenced by captures in that pack, with the exception of the track data.

Duplicated data between packs to achieve this is acceptable and will be handled transparently by the ingestion pipeline.
