To create a Transaction with media (i.e. photos, videos, signatures, etc.):

  1. Call the User Uploads endpoint, passing a unique file_id chosen by the client.
  2. The response will include an upload_url. Upload the media file to that URL using a standard HTTP PUT request.
  3. Reference the uploaded file by ID in the request payload, as described below.

Ejemplos

$ curl -i \
  -H "Accept: application/json; version=1" \
  -H "Authorization: Token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjQyLCJpYXQiOjE0NjM2OTQ4MjN9.k48v-R-un93KdIXqp9Zi12JOGJCu8uibtrWjscFCTqc" \
  -X POST \
  -H 'Content-type: application/json' \
  -d '{"transaction": { "asset_id": "43", "location_id": "44", work_order_id": "33", "department_id": "55", "group_id": "99", notations": {}, notations_extended: {}, "check_in": true, "damage": false, "geo_coord": [122.289139, 47.612417], "photos": [], "videos": [], "signatures": [{ "image": "signature1", created_at: "2016-06-14T21:33:54.000Z" }], "ident_docs": [{ "front_image": "license1", "identity": {} }] }}' \
  https://api.record360.com/api/transactions

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Cache-Control: max-age=0, private, must-revalidate

{
  "transaction": {
    "id": "42",
    "check_in": true,
    "damage": false,
    "draft": false,
    "group_id": "99",
    "department_id": "55",
    "notations": { ... },
    "geo_coord": [122.289139, 47.612417],
    "email_sent_to": [],
    "sms_summary_numbers": ["+1425555555", "+1425554444"],
    "workflow_id": "12",
    "workflow_name": "Pickup",
    "archive_status": "active",
    "created_at": "2016-06-14T22:59:22.225Z",
    "asset": {
      "id": "43",
      "external_id": "0011110384607"
    },
    "user": {
      "id": "47",
      "username": "[email protected]",
      "first_name": "Some",
      "last_name": "User"
    },
    "location": {
      "id": "44",
      "name": "Main Office"
    },
    "photos": [
      {
        "id": "1",
        "created_at": "2014-02-19T06:46:29.000Z",
        "url": "https://record360-media.s3.amazonaws.com/42/image/image1.jpg",
        "byte_size": 638425,
        "geo_coord": [122.289139, 47.612417],
        "notation": "scratch",
      },
    ],
    "videos": [
      {
        "id": "1",
        "created_at": "2014-02-19T06:46:29.000Z",
        "url": "https://record360-media.s3.amazonaws.com/42/video/video1.mp4",
        "thumbnail_url": "https://record360-media.s3.amazonaws.com/42/video/video1-tn.mp4",
        "byte_size": 5650782
        "geo_coord": [122.289139, 47.612417],
        "duration": 42,
      },
    ],
    "signatures": [
      {
        "id": "1",
        "name": "J. Random Customer",
        "url": "https://record360-media.s3.amazonaws.com/42/signature/signature1.png",
        "byte_size": 13389,
        "geo_coord": [122.289139, 47.612417],
        "created_at": "2014-02-19T06:46:30.000Z"
      }
    ],
    "files": [
      {
        "id": "1",
        "created_at": "2014-02-19T06:46:30.000Z",
        "url": "https://record360-media.s3.amazonaws.com/42/file/ABCXYZ123.pdf",
        "byte_size": 555046
      }],
    "forms": [{
      form_template_id: "64",
      "values": {
        "Name": "J. Random User",
        "Street Address": "123 Main St.",
        ...
      }
    }]
  }
}

Parámetros

Nombre del parámetro Descripción
transaction
requerido

Transaction attributes

Validations:

  • Must be a Hash

transaction[asset_id]
requerido

ID of the corresponding Asset

Validations:

  • Must be a String

transaction[location_id]
opcional

Location ID (manager only)- required even if draft if inspection (transaction) is created by managers

Validations:

  • Must be a String

transaction[department_id]
opcional , nil permitido

Department ID

Validations:

  • Must be a String

transaction[work_order_id]
opcional , nil permitido

Work Order ID

Validations:

  • Must be a String

transaction[task_id]
opcional , nil permitido

Task ID

Validations:

  • Must be a String

transaction[check_in]
opcional , nil permitido

Check-in/-out?

Validations:

  • Must be one of: true, false, 1, 0.

transaction[draft]
opcional , nil permitido

Is it a draft?

Validations:

  • Must be one of: true, false, 1, 0.

transaction[damage]
opcional , nil permitido

Damage?

Validations:

  • Must be one of: true, false, 1, 0.

transaction[email_recipients]
opcional , nil permitido

Email addresses for transaction summary email

Validations:

  • Must be an array of String

transaction[sms_recipients]
opcional , nil permitido

Phone numbers for transaction summary PDF - in format ‘+12065554321’

Validations:

  • Must be an array of String

transaction[geo_coord]
opcional , nil permitido

Geographical location (longitude, latitude)

Validations:

  • Must be an array of any type

transaction[notations]
opcional , nil permitido

Notations

Validations:

  • Must be a Hash

transaction[notations_extended]
opcional , nil permitido

Notations extended for Inline data like media

Validations:

  • Must be a Hash

transaction[workflow_id]
opcional , nil permitido

Workflow ID

Validations:

  • Must be a String

transaction[photos]
opcional

Photos

Validations:

  • Must be an Array of nested elements

transaction[photos][image]
requerido

File ID of uploaded image

Validations:

  • Must be a String

transaction[photos][notation]
opcional , nil permitido

Notation (damage type)

Validations:

  • Must be a String

transaction[photos][damage_area]
opcional , nil permitido

Damage area in photo (left,top (,right,bottom)

Validations:

  • Must be point or rectangle

transaction[photos][geo_coord]
opcional , nil permitido

Location (longitude, latitude)

Validations:

  • Must be an array of any type

transaction[photos][created_at]
requerido

Creation time

Validations:

  • Must be a String

transaction[photos][instruction_id]
opcional , nil permitido

Instructions for Photo

Validations:

  • Must be a String

transaction[photos][overlays]
opcional , nil permitido

Overlays the server will add to photo to indicate region of interest

Validations:

  • Must be an Array of nested elements

transaction[photos][overlays][type]
requerido

Type of overlay (must be ‘symbol’)

Validations:

  • Must be a String

transaction[photos][overlays][cx]
requerido

Left position as a float value between 0 and 1 (percentage from left)

Validations:

  • Must be a Numeric

transaction[photos][overlays][cy]
requerido

Top position as a float value between 0 and 1 (percentage from top)

Validations:

  • Must be a Numeric

transaction[photos][overlays][symbol]
opcional , nil permitido

Symbol to overlay (must be ‘ring’, ‘ring@2x’, ‘ring@3x’)

Validations:

  • Must be a String

transaction[photos][image_quality_label]
opcional , nil permitido

OLD system: Blur detection label (BlurNet)

Validations:

  • Must be a Hash

transaction[photos][image_quality_label][model_name]
requerido

AI model name (e.g., ‘BlurNet 1.0’)

Validations:

  • Must be a String

transaction[photos][image_quality_label][model_label]
requerido

AI classification: ‘clear’ or ‘blurry’

Validations:

  • Must be a String

transaction[photos][image_quality_label][inspector_label]
opcional , nil permitido

Inspector’s override: ‘clear’ or ‘blurry’

Validations:

  • Must be a String

transaction[photos][image_quality_label][keep_hidden]
opcional , nil permitido

Hide from reviewers (default: false)

Validations:

  • Must be one of: true, false, 1, 0.

transaction[photos][ai_image_labels]
opcional , nil permitido

NEW system: AI labels for damage detection and future models

Validations:

  • Must be an Array of nested elements

transaction[photos][ai_image_labels][model_type]
opcional , nil permitido

Model type (e.g., ‘basic_damage’, ‘panel_damage’)

Validations:

  • Must be a String

transaction[photos][ai_image_labels][model_name]
requerido

AI model name (e.g., ‘360AI Smart Review’)

Validations:

  • Must be a String

transaction[photos][ai_image_labels][model_label]
requerido

AI classification (e.g., ‘damage’, ‘no_damage’)

Validations:

  • Must be a String

transaction[photos][ai_image_labels][model_score]
opcional , nil permitido

AI confidence score (0.0 to 1.0, optional)

Validations:

  • Must be a Numeric

transaction[photos][ai_image_labels][inspector_label]
opcional , nil permitido

Inspector’s override classification

Validations:

  • Must be a String

transaction[photos][ai_image_labels][keep_hidden]
opcional , nil permitido

Hide from reviewers (default: false)

Validations:

  • Must be one of: true, false, 1, 0.

transaction[photos][ai_image_labels][primary]
opcional , nil permitido

Primary label for this model type (default: true)

Validations:

  • Must be one of: true, false, 1, 0.

transaction[photos][heat_map]
opcional , nil permitido

Heatmap metadata (only for heatmap images)

Validations:

  • Must be a Hash

transaction[photos][heat_map][parent_photo_uuid]
requerido

File ID (UUID) of the parent photo this heatmap belongs to

Validations:

  • Must be a String

transaction[photos][heat_map][ai_image_label_index]
requerido

0-indexed position into the unscoped ai_image_labels array as posted, ordered by insertion

Validations:

  • Must be a number.

transaction[photos][heat_map][heatmap_resolution]
opcional , nil permitido

Heatmap resolution

Validations:

  • Must be a String

transaction[videos]
opcional

Videos

Validations:

  • Must be an Array of nested elements

transaction[videos][video]
requerido

File ID of uploaded video

Validations:

  • Must be a String

transaction[videos][duration]
opcional

Length of video file (in seconds)

Validations:

  • Must be a Numeric

transaction[videos][geo_coord]
opcional , nil permitido

Location (longitude, latitude)

Validations:

  • Must be an array of any type

transaction[videos][created_at]
requerido

Creation time

Validations:

  • Must be a String

transaction[signatures]
opcional

Signatures

Validations:

  • Must be an Array of nested elements

transaction[signatures][name]
opcional , nil permitido

Name of the signatory

Validations:

  • Must be a String

transaction[signatures][image]
opcional , nil permitido

File ID of uploaded signature image

Validations:

  • Must be a String

transaction[signatures][geo_coord]
opcional , nil permitido

Location (longitude, latitude)

Validations:

  • Must be an array of any type

transaction[signatures][created_at]
requerido

Creation time

Validations:

  • Must be a String

transaction[files]
opcional

Attached files

Validations:

  • Must be an Array of nested elements

transaction[files][file]
requerido

File ID of uploaded attachment

Validations:

  • Must be a String

transaction[files][description]
opcional , nil permitido

Description

Validations:

  • Must be a String

transaction[ident_docs]
opcional

Identification documents

Validations:

  • Must be an Array of nested elements

transaction[ident_docs][front_image]
requerido

File ID of uploaded image for document front

Validations:

  • Must be a String

transaction[ident_docs][back_image]
opcional , nil permitido

File ID of uploaded image for document back

Validations:

  • Must be a String

transaction[ident_docs][identity]
opcional

Identity information (varies by document type)

Validations:

  • Must be a Hash

transaction[forms]
opcional

Form data

Validations:

  • Must be an Array of nested elements

transaction[forms][form_template_id]
requerido

FormTemplate ID

Validations:

  • Must be a String

transaction[forms][values]
requerido

Form field values

Validations:

  • Must be a Hash

transaction[extended]
opcional , nil permitido

Extended data

Validations:

  • Must be a Hash

transaction[recalls]
opcional , nil permitido

Vehicle recall data

Validations:

  • Must be an array of Hash