M360 Customer API documentation

Customer / V2 endpoints

POST https://m360soft.com/api/customer/v2/getHistory

Lists the previously uploaded and closed device session records (work history)

Request parameters:
Name Type Description
order string The type and direction of the order of the records. Optional, possible values: ["id:desc", "id:asc", "connectionTime:desc", "connectionTime:asc"].
limit integer Maximum number of returned records. Default: 20. Optional, range: 1 - 100.
startingAfter string Can be used for forward pagination. The ID of the last record on the previous page. Optional, exactly 36 characters.
endingBefore string Can be used for backward pagination. The ID of the first record on the next page. Optional, exactly 36 characters.
sessionId string Filters the results by session ID. Optional, exactly 36 characters.
imei array Filters the results by IMEI. Maximum 10 values can be provided as an array or a single value as a string. Optional, 1 - 10 elements, The values should be string, minimum 3 and maximum 20 characters matching with this format: "/^[0-9a-fA-F-]{3,20}$/".
serial array Filters the results by device serial. Maximum 10 values can be provided as an array or a single value as a string. Optional, 1 - 10 elements, The values should be string, minimum 3 and maximum 64 characters matching with this format: "/^[a-zA-Z0-9]{3,64}$/".
m360id array Filters the results by M360 ID. Maximum 10 values can be provided as an array or a single value as a string. Optional, 1 - 10 elements, The values should be string, minimum 3 and maximum 20 characters matching with this format: "/^[a-zA-Z0-9]{3,20}$/".
customId array Filters the results by Custom ID. Maximum 10 values can be provided as an array or a single value as a string. Optional, 1 - 10 elements, The values should be string, minimum 3 and maximum 50 characters.
friendlyName string Filters the results by friendly name. Optional, 3 - 100 characters.
username string Filters the results by username. Optional, 3 - 100 characters.
connectionTimeMin string Filters the results by minimum connection time. If you did not provide a time zone in the value, the server will use the one you have specified in the timeZone parameter. Optional, Any valid datetime value.
connectionTimeMax string Filters the results by maximum connection time. If you did not provide a time zone in the value, the server will use the one you have specified in the timeZone parameter. Optional, Any valid datetime value.
hasDiagnostics bool Setting this filter option to TRUE or FALSE will filter out all records without or with diagnostics results respectively. Optional.
hasGrading bool Setting this filter option to TRUE or FALSE will filter out all records without or with grading results respectively. Optional.
hasWipe bool Setting this filter option to TRUE or FALSE will filter out all records without or with wipe results respectively. Optional.
hasOemCheck bool Setting this filter option to TRUE or FALSE will filter out all records without or with OEM check results respectively. Optional.
hasBlacklistCheck bool Setting this filter option to TRUE or FALSE will filter out all records without or with blacklist checks respectively. Optional.
hasSimLockCheck bool Setting this filter option to TRUE or FALSE will filter out all records without or with SIM lock checks respectively. Optional.
hasReport bool Setting this filter option to TRUE or FALSE will filter out all records without or with generated reports respectively. Optional.
isManual bool Setting this filter option to TRUE or FALSE will filter out all non-manual or manual records respectively. Optional.
includeOpen bool Setting this filter option to TRUE will include sessions that are still open. Note that open sessions will appear in the history only after the device has been identified successfully. Optional.
calculateTotalCount bool Setting this to TRUE will calculate the total number of records that match the filters up to 10000. The response will contain the total count in the totalCount field. If the number of matching records is greater than 10000, the totalCount field will contain the value 10000. Optional.
timeZone string The time zone to use when displaying dates and times. Optional, max. 100 characters, Any valid timezone value.
*** *** ***
testing bool Setting this value to true will result in a response populated only with syntactically correct test data which can be used to test the API integration. While your account is in testing mode the value of this parameter is always true and cannot be overridden. Optional.
GetHistoryResponseData object:

This is the data object of the response of the getHistory API endpoint.

Property Type Description
records DeviceSession[] The list of device sessions
hasMore bool Whether there are more records
totalCount int | null The total number of records (up to 10000). Only available when calculateTotalCount request parameter is set to true
DeviceSession object:

An object representing a device session. The device session stores all data that was collected while the device was connected to the desktop client.

Property Type Description
sessionId string The unique ID of the device session
username string | null The username of the user that has created the session. The value will be null if the user has been deleted
createdAt string | null The date and time when the data was saved on the server
connectionTime string | null The local time when the device was connected to the desktop client
marketingName string | null The marketing name of the device (iOS only). The marketing name is similar to the friendly name but does not contain extra information like the color or storage capacity of the device
friendlyName string | null The friendly name of the device
alternativeFriendlyNames array | null The alternative friendly names of the device (Android only)
modelName string | null The model name of the device
applicationVersion string | null The version of the desktop client that created the session
m360id string | null The globally unique M360 identifier of the device. In some rare instances the device can only be partially identified. In these cases this property will still be populated and you can use it to search for sessions but the device object will be empty, indicating that the full identification was failed.
imei string | null The IMEI number of the device.
imei2 string | null The second IMEI number of the device
isManual bool Indicates if the session was created manually
isClosed bool Indicates if the session is closed
isCombined bool Indicates if the session is combined
batteryHealthPercent string | null The health level of the battery as percentage (precise or estimated value)
preciseBatteryHealthPercent string | null The health level of the battery as percentage (precise value)
estimatedBatteryHealthPercent string | null The health level of the battery as percentage (estimated value)
associatedAccount string | null Presence of an associated account (Google, Samsung, AppleID etc.) on the device. Possible values:
Value Description
no No account is present on the device
found An account is present on the device
brandAccounts array | null The list of brand accounts found on the device (Android only)
samsungKnoxWarranty string | null Status of the Samsung KNOX warranty. Possible values:
Value Description
valid The warranty is still valid
invalid The warranty is void
unknown The status of the warranty is unknown
deviceOrigin string | null Origin of the device. Possible values:
Value Description
retail The device was sold by retail
refurbished The device was refurbished
replacement The device is a replacement item
personalized The device is a personalized item
simStatus string | null Information about the presence of a SIM card. Possible values:
Value Description
no_sim No SIM card was found in the device
has_sim A SIM card was found
networkOperator string | null The name of the network operator. This information is only available if a SIM card is present in the device
simLock string | null Indicates if the device is SIM locked (Samsung only, read directly from the device)
soc string | null The SoC (System on Chip) of the device
bluetoothMac string | null The MAC address of the bluetooth network adapter if available
wifiMac string | null The MAC address of the Wi-Fi network adapter if available
portName string | null The name of the port the device was connected to
osType string | null The type of the operating system on the device. Possible values:
Value Description
android Android
ios iOS
softwareVersion string | null The version of the operating system running on the device
mobilAppVersion string | null The version of the M360 application installed on the device
modelCode string | null The raw model code read from the device
extendedModelCode string | null The extended model code read from the device
manufacturer string | null The raw manufacturer name read from the device
brand string | null The brand name read from the device
productCode string | null The raw product code string read from the device
serial string | null The manufacturer specific serial number of the device
eid string | null The EID (Embedded Identity Document) number of the device
udid string | null The Unique Device Identifier of the device (iOS only)
ecid string | null The ECID of the device (iOS only)
internalStorage string | null The total internal storage space of the device
internalStorageFree string | null The free storage space on the internal storage of the device
totalRAMSize string | null The total RAM size installed on the device (Android only)
iosSalesRegion string | null iOS sales region of the device
MDMState string | null The MDM state of the device
batteryCycles int | null The number of battery cycles
batteryDesignCapacity int | null The design capacity of the battery (mAh)
fullChargeCapacity int | null The full charge capacity of the battery (mAh)
rooted bool | null Indicates if the device is rooted
secureLocked bool | null Indicates if the device is secure locked
memoryCard bool | null Indicates if the device has a memory card
iosRegulatoryModel string | null The iOS regulatory model of the device
deviceColor string | null The color of the device
iosJailbreak bool | null Indicates if the device is jailbroken
encryptionState bool | null Indicates if the device storage is encrypted
encryptionType string | null The type of the device storage encryption. Possible values:
Value Description
file File-based encryption
disk Full disk encryption
iosDesignatedRegion string | null The associated region of the ios device
device Device | null An object representing the connected unique device and all of its data that is not session specific
diagnosticsReports DiagnosticsReport[] Array of objects containing the diagnostics reports generated from the device session
diagnosticsResults DiagnosticsResult[] Array of objects containing the results of diagnostics tests performed during the session
oemCheckResult OemCheckResult | null An object containing the result of the OEM part check operation performed during the session
gradingResult GradingResult | null An object containing the last grading data of the device that was effective at the end of the device session
stickyData StickyData | null An object containing the last sticky information attached to the device that was effective at the end of the device session
deviceExpense DeviceExpense | null An object containing the last device expense data that was effective at the end of the device session
wipeResult WipeResult | null An object containing the result of the wipe operation performed during the session
flashResult FlashResult | null An object containing the result of the flash operation performed during the session
gradingPhotos GradingPhoto[] The list of the grading photos of the device available at the end of the session
blacklistCheckResult BlacklistCheckResult | null An object containing the last IMEI blacklist check result of the device that was effective at the end of the session
simLockCheckResult SimLockCheckResult | null An object containing the last SIM lock check result of the device that was effective at the end of the session
Device object:

An object representing a unique device. A device can be connected to the desktop client multiple times. Each connection creates a new device session. There are cases when a connected device cannot be identified reliably, because some crucial information is missing or unreadable. In these cases a session is still generated and collects all available data, but the device is not saved and cannot be referenced later. Also some functionality is only available if the device was fully identified. For example you can only grade a device or attach any sticky data if the device identification was successful.

Property Type Description
createdAt string The date and time when the data was saved on the server
m360id string | null The M360 ID is a globally unique identifier of a device.
actualBlacklistCheckResult BlacklistCheckResult | null An object containing the actual (latest) IMEI blacklist check result of the device
actualSimLockCheckResult SimLockCheckResult | null An object containing the actual (latest) SIM lock check result of the device
actualStickyData StickyData | null The actual (latest) sticky data of the device
actualGradingResult GradingResult | null The actual (latest) grading result of the device
actualGradingPhotos GradingPhoto[] The list of the actual (latest) grading photos of the device
actualDeviceExpense DeviceExpense | null An object containing the actual (latest) device expense data
DiagnosticsReport object:

An object representing a device session. The device session stores all data that was collected while the device was connected to the desktop client.

Property Type Description
createdAt string The date and time when the data was saved on the server
locale string The locale code of the report
htmlLink string The link to the HTML version of the report
pdfLink string The link to the PDF version of the report
DiagnosticsResult object:

This object holds the aggregated test results of a device diagnostics run.

Property Type Description
createdAt string The date and time when the data was saved on the server
finishedTime string | null The date and time when the diagnostics was finished
diagnosticsTemplate DiagnosticsTemplate | null The template used for the diagnostics
tests DiagnosticsResultTest[] The list of test results
OemCheckResult object:

This object holds the results of a device OEM check.

Property Type Description
createdAt string The date and time when the data was saved on the server
clientTime string | null The date and time reported by the desktop client when the data was created
isAuthentic bool | null Whether the device is authentic
parts OemCheckPart[] The list of parts checked
GradingResult object:

This object holds the saved grading information of a device.

Property Type Description
createdAt string The date and time when the data was saved on the server
modificationTimestamp string | null The date and time when the data was last modified
screen int The condition of the screen (0-5) A result of 0 means no value was selected for this grading option
back int The condition of the back cover (0-5) A result of 0 means no value was selected for this grading option
phoneCase int The condition of the case (0-5) A result of 0 means no value was selected for this grading option
lcd int The condition of the LCD (0-5) A result of 0 means no value was selected for this grading option
accessories string[] The list of accessories available for the device. Possible values:
Value Description
original_box Original box
papers Papers
usb_cable USB cable
charger Charger
receipt Receipt
headset Headset
sim_tool SIM tool
comment string Generic notes
StickyData object:

This object holds user provided miscellaneous data about a device.

Property Type Description
createdAt string The date and time when the data was saved on the server
customId string The user provided custom identifier of the device
phoneStatus string The status of the device. The value can be either a custom one that was set by the manager on the dashboard, or one of the following common values:
Value Description
unknown Unknown
customer_device Customer device
own_device Own device
stock_transfer Stock transfer
in_for_service In for service
serviced Serviced
unrepairable Unrepairable
just_purchased Just purchased
for_sale For sale
overallRating string Overall rating of the device. The value can be either a custom one that was set by the manager on the dashboard, or one of the following common values: unknown, A++, A+, A, B+, B, C+, C
notes string Generic notes
client Company | Person | null Optional personal information about the customer
DeviceExpense object:

This object holds the saved expense data related to a device.

Property Type Description
createdAt string The date and time when the data was saved on the server
purchasePrice string | null The purchase price of the device
sellingPrice string | null The selling price of the device
soldPrice string | null The price for which the device was sold
totalCost string | null The total cost of the device
profit string | null The profit made from the device
parts DeviceExpensePart[] The list of part expenses
WipeResult object:

This object holds the result of a wipe operation.

Property Type Description
createdAt string The date and time when the data was saved on the server
clientTime string | null The date and time reported by the desktop client when the result was created
type string The type of the wipe operation. Possible values:
Value Description
normal The operation is a factory reset
secure The operation is a secure wipe
result string The status / result of the wipe operation. Possible values:
Value Description
started The operation has started
failed The operation failed
finished The operation finished successfully
hasWarning bool If the value of this flag is true, then the result of the operation could not be determined accurately and a manual verification is advised
FlashResult object:

This object holds the result of a flash operation.

Property Type Description
createdAt string The date and time when the data was saved on the server
clientTime string | null The date and time reported by the desktop client when the result was created
type string The type of the flash operation. Possible values:
Value Description
SW Update The operation is a Software update
Data Wipe The operation is a secure wipe
result string The status / result of the flash operation. Possible values:
Value Description
started The operation has started
failed The operation failed
finished The operation finished successfully
startingVersion string | null Starting version before the operation
targetVersion string | null Target version after the operation
buildId string | null The Build ID used by the operation
GradingPhoto object:

This object represents a single uploaded photo for a device grading.

Property Type Description
createdAt string The date and time when the data was saved on the server
category string | null The category of the photo
url string | null The URL of the full-size photo. This can be empty, if the photo has been deleted.
thumbnailUrl string | null The URL of the thumbnail.This can be empty, if the photo has been deleted.
isDeleted bool Whether the photo is deleted or not.
BlacklistCheckResult object:

This object holds the result of an IMEI blacklist check.

Property Type Description
createdAt string The date and time when the data was saved on the server
imei string The IMEI number that was checked
result string The result of the check. Possible values:
Value Description
red The device was reported stolen or lost
green The device is clean
unknown The result is not available
SimLockCheckResult object:

This object holds the result of a SIM lock check.

Property Type Description
createdAt string The date and time when the data was saved on the server
imei string The IMEI of the device
carrier string | null The name of the carrier if the device is locked
isLocked string | null Whether the device is locked
DiagnosticsTemplate object:

This object holds the basic data of a diagnostics template.

Property Type Description
createdAt string The date and time when the data was saved on the server
name string The name of the template
isDefault bool Whether the template is the default one
DiagnosticsResultTest object:

This object holds the result and details of a single device diagnostics test.

Property Type Description
testId string The test ID
result string The result of the test. Possible values:
Value Description
Passed The device successfully passed the test
Failed The device failed to pass the test
Skipped The test was skipped by the user
NA The test is not available on the device
elapsedTime array The elapsed time of the test(s) in seconds (if available). Multiple values mean multiple attempts.
details DiagnosticsResultDetail[] The list of extra details
OemCheckPart object:

This object holds the result of a single device part check in an OEM check result.

Property Type Description
id string The ID of the part
name string The name of the part
isOriginal bool | null Whether the part is original
current string | null The current value of the part's serial number
original string | null The original value of the part's serial number
Company object:

An object representing a company record of the Client Manager.

Property Type Description
companyName string | null Company name
taxNumber string | null Tax number of the company
registrationNumber string | null Registration number of the company
type string Type of the client. Possible values:
Value Description
person The client is a person
company The client is a company
email string | null Email address of the client
phoneNumber string | null Phone number of the client
zip string | null ZIP code of the client
city string | null City of the client
country string | null Country of the client
address string | null Address of the client
Person object:

An object representing a person record of the Client Manager.

Property Type Description
firstName string | null First name of the person
lastName string | null Last name of the person
dateOfBirth string | null Date of birth of the person
placeOfBirth string | null Place of birth of the person
idCard1Type string | null Type of the first ID card of the person
idCard1Number string | null Number of the first ID card of the person
idCard2Type string | null Type of the second ID card of the person
idCard2Number string | null Number of the second ID card of the person
type string Type of the client. Possible values:
Value Description
person The client is a person
company The client is a company
email string | null Email address of the client
phoneNumber string | null Phone number of the client
zip string | null ZIP code of the client
city string | null City of the client
country string | null Country of the client
address string | null Address of the client
DeviceExpensePart object:

This object represents a single expense entry for a device.

Property Type Description
createdAt string The date and time when the data was saved on the server
date string | null The date of the expense
name string The name of the part
price string The price of the part
DiagnosticsResultDetail object:

This object holds a single, additional detail of a diagnostics test. Some tests have multiple parts with individual results, while other tests provide extra information. For example the battery test can provide details about the original capacity of the battery, temperature, voltage, etc.

Property Type Description
context string The context ID of the detail. The context ID determines the type of the detail and the meaning of the properties. Possible values:
Value Description
BatteryCurrentCapacity The current capacity of the battery in mAh
BatteryCycles The number of charge cycles the battery has gone through
BatteryDrainPercentLost The percentage of battery capacity lost due to drain
BatteryOriginalCapacity The original capacity of the battery in mAh
BatteryTechnology The technology of the battery
BatteryTemperature The temperature of the battery in degrees Celsius
BatteryVoltage The voltage of the battery in mV
BiometricFaceIdCondition The condition of the face ID biometric sensor
BiometricFaceIdConditionFail The reason why the face ID biometric sensor failed
HardwareButtonAction The result of the action button test
HardwareButtonCameraSlide The result of the camera slide button test
HardwareButtonCameraTake The result of the camera button test
HardwareButtonHome The result of the home button test
HardwareButtonMute The result of the mute button test
HardwareButtonNotPredefined The test result of other, found, non-standard hardware buttons
HardwareButtonPower The result of the power button test
HardwareButtonVolumeDown The result of the volume down button test
HardwareButtonVolumeUp The result of the volume up button test
ChargeAc The result of the AC charging test
ChargeDock The result of the charging test through the dock port
ChargeUsb The result of the charging test through the USB port
ChargeWired The result of the wired charging test
ChargeWireless The result of the wireless charging test
EstimatedBatteryHealth The estimated health of the battery in percentage
MicrophoneBack The result of the back microphone test
MicrophoneBottom The result of the bottom microphone test
MicrophoneCamera The result of the camera microphone test
MicrophoneFront The result of the front microphone test
MicrophoneLeft The result of the left microphone test
MicrophoneMicrophone The result of the microphone test
MicrophoneNotPredefined The test result of other, found, non-standard microphones
MicrophoneRight The result of the right microphone test
MicrophoneTop The result of the top microphone test
MultitouchDetectedNumberOfTouches The number of touches detected by the multitouch test
PreciseBatteryHealth The precise health of the battery in percentage
SpeakerEar The result of the ear speaker test
SpeakerLoud The result of the loudspeaker test
StorageFree The amount of free storage on the device
StorageTotal The total amount of storage
StorageUsed The amount of used storage
TouchTestVersion The version of the performed touch test
title string The title of the detail. For example the microphone test will list all tested microphones as details and the title will contain the name of the microphone (Front, Back, etc.). Or as another example the hardware button test will list all tested buttons as details and the title will contain the name or key code (if the name cannot be determined) of the button (Volume Up, Volume Down, KEYCODE_PTT etc.).
result string Some tests consist of multiple parts which are provided as details. If the detail is a sub-test then this property shows the result of it. Possible values:
Value Description
NA This detail does not have a result
Passed The device passed the sub-test
Failed The device failed the sub-test
Skipped The sub-test was skipped
value string The value of the detail, if applicable. For example the exact battery health percentage or the number of times the button was pressed etc.
Example responses:
Request: POST https://m360soft.com/api/customer/v2/getHistory 

    Content-Type: application/json

    {
        "imei": [
            "990000862471854",
            "990000862471855"
        ],
        "calculateTotalCount": true
    }

Response:

    Status: 200
    Content-Type: application/json

    {
        "data": {
            "records": [
                {
                    "sessionId": "1a3be5f5-dedd-470e-8252-0468b5216ace",
                    "username": null,
                    "createdAt": "2025-01-01T12:00:00+00:00",
                    "connectionTime": "2025-01-01T12:00:00+00:00",
                    "marketingName": null,
                    "friendlyName": "M360test TestPhone 9T 64 GB",
                    "alternativeFriendlyNames": [],
                    "modelName": null,
                    "applicationVersion": null,
                    "m360id": "AS4MPL3S4MPL3S4MPL3S",
                    "imei": "990000862471854",
                    "imei2": "351756051523999",
                    "isManual": true,
                    "isClosed": true,
                    "isCombined": false,
                    "batteryHealthPercent": "95%",
                    "preciseBatteryHealthPercent": "95%",
                    "estimatedBatteryHealthPercent": null,
                    "associatedAccount": null,
                    "brandAccounts": null,
                    "samsungKnoxWarranty": "valid",
                    "deviceOrigin": null,
                    "simStatus": "has_sim",
                    "networkOperator": "vodafone HU",
                    "simLock": null,
                    "soc": "Qualcomm Snapdragon 1234",
                    "bluetoothMac": "38:DF:40:88:A8:74",
                    "wifiMac": "3F:79:DE:BF:2D:30",
                    "portName": "1",
                    "osType": "android",
                    "softwareVersion": "7.0",
                    "mobilAppVersion": null,
                    "modelCode": "SAMPLE",
                    "extendedModelCode": null,
                    "manufacturer": "SAMPLE",
                    "brand": "TestPhone",
                    "productCode": "SAMPLE",
                    "serial": "SAMPLE",
                    "eid": "12345678901234567890123456789012",
                    "udid": null,
                    "ecid": null,
                    "internalStorage": null,
                    "internalStorageFree": "60 GB",
                    "totalRAMSize": "8 GB",
                    "iosSalesRegion": null,
                    "MDMState": null,
                    "batteryCycles": null,
                    "batteryDesignCapacity": null,
                    "fullChargeCapacity": null,
                    "rooted": false,
                    "secureLocked": null,
                    "memoryCard": null,
                    "iosRegulatoryModel": null,
                    "deviceColor": null,
                    "iosJailbreak": null,
                    "encryptionState": null,
                    "encryptionType": null,
                    "iosDesignatedRegion": null,
                    "device": {
                        "createdAt": "2025-01-01T12:00:00+00:00",
                        "m360id": "AYCWC35LHCE7772YISXG",
                        "actualBlacklistCheckResult": {
                            "createdAt": "2025-11-04T12:27:28+00:00",
                            "imei": "562009019991425",
                            "result": "red"
                        },
                        "actualSimLockCheckResult": {
                            "createdAt": "2025-11-04T12:27:28+00:00",
                            "imei": "562009019991425",
                            "carrier": "Unlocked",
                            "isLocked": ""
                        },
                        "actualStickyData": {
                            "createdAt": "2025-01-01T12:00:00+00:00",
                            "customId": "phone-001",
                            "phoneStatus": "unknown",
                            "overallRating": "N/A",
                            "notes": "",
                            "client": null
                        },
                        "actualGradingResult": null,
                        "actualGradingPhotos": [],
                        "actualDeviceExpense": null
                    },
                    "diagnosticsReports": [
                        {
                            "createdAt": "2025-11-04T12:26:29+00:00",
                            "locale": "en",
                            "htmlLink": "http://m360.lan/reports/diagnostics/c258-b0a7654924e971c73f8df-20251104.html",
                            "pdfLink": "http://m360.lan/reports/diagnostics/c258-b0a7654924e971c73f8df-20251104.pdf"
                        }
                    ],
                    "diagnosticsResults": [],
                    "oemCheckResult": null,
                    "gradingResult": null,
                    "stickyData": null,
                    "deviceExpense": null,
                    "wipeResult": {
                        "createdAt": "2025-01-01T12:00:00+00:00",
                        "clientTime": "2025-01-01T12:00:00+00:00",
                        "type": "secure",
                        "result": "finished",
                        "hasWarning": false
                    },
                    "flashResult": {
                        "createdAt": "2025-11-04T12:26:29+00:00",
                        "clientTime": "2025-11-04T12:25:59+00:00",
                        "type": "Data Wipe",
                        "result": "Finished",
                        "startingVersion": "1.0.0",
                        "targetVersion": "2.0.0",
                        "buildId": "ABC123"
                    },
                    "gradingPhotos": [],
                    "blacklistCheckResult": {
                        "createdAt": "2025-11-04T12:25:30+00:00",
                        "imei": "562009019991425",
                        "result": "green"
                    },
                    "simLockCheckResult": {
                        "createdAt": "2025-11-04T12:25:30+00:00",
                        "imei": "562009019991425",
                        "carrier": "Unlocked",
                        "isLocked": ""
                    }
                }
            ],
            "hasMore": false,
            "totalCount": 1
        },
        "meta": {
            "success": true
        }
    }
Request: POST https://m360soft.com/api/customer/v2/getHistory 

    Content-Type: application/json

    {
        "limit": -1
    }

Response:

    Status: 400
    Content-Type: application/json

    {
        "data": [],
        "meta": {
            "success": false,
            "errors": {
                "code": "validation:parameter_error",
                "title": "One or more parameters are missing or invalid",
                "details": {
                    "limit": [
                        "This value should be between 1 and 100."
                    ]
                }
            }
        }
    }

POST https://m360soft.com/api/customer/v2/generateReport

Creates a PDF / HTML report from the specified details of the given device session

Request parameters:
Name Type Description
diagnosticsResultId integer ID of the DiagnosticsResult object to include in the report. The default value is the ID of the last diagnostics test result of the session. Optional.
contents array List of the content parts to include in the report. Default: all contents. Optional, possible values: ["diagnostics", "grading", "wipe", "oem_check", "device_expenses", "grading_photos"].
dateTimeFormat string Date/time format to use in the report. Default: dd/MM/yyyy HH:mm. Optional, possible values: ["dd/MM/yyyy HH:mm", "MM/dd/yyyy HH:mm", "yyyy/MM/dd HH:mm"].
timeZone string Timezone to use (eg.: "UTC", "Europe/Berlin" etc.) when displaying dates and times in the report. Default: UTC. Optional, max. 100 characters.
sessionId string The unique ID of the device session. Required, exactly 36 characters.
locale string ISO 639-1 language code that is supported by the application. Optional, exactly 2 characters, Allowed values: "de","en","es","fr","hu","it","pt","ru","tr","uk","zh","lt","pl".
*** *** ***
testing bool Setting this value to true will result in a response populated only with syntactically correct test data which can be used to test the API integration. While your account is in testing mode the value of this parameter is always true and cannot be overridden. Optional.
Example responses:
Request: POST https://m360soft.com/api/customer/v2/generateReport 

    Content-Type: application/json

    {
        "sessionId": "bc883c8b-46d3-ef73-924d-23005e7e8e13",
        "contents": [
            "diagnostics",
            "grading"
        ]
    }

Response:

    Status: 200
    Content-Type: application/json

    {
        "data": {
            "diagnosticsReport": {
                "id": "15d8-3390b0bbfadb61e0b4c3f-20200115",
                "htmlLink": "https://m360soft.com/reports/diagnostics/sample.html",
                "pdfLink": "https://m360soft.com/reports/diagnostics/sample.pdf"
            }
        },
        "meta": {
            "success": true
        }
    }

POST https://m360soft.com/api/customer/v2/getExternalReports

Lists the incoming external reports

Request parameters:
Name Type Description
timeZone string The time zone to use when displaying dates and times. Optional, max. 100 characters, Any valid timezone value.
order string The type and direction of the order of the records. Optional, possible values: ["id:desc", "id:asc", "finishedTime:desc", "finishedTime:asc"].
limit integer Maximum number of returned records. Default: 20. Optional, range: 1 - 100.
startingAfter string Can be used for forward pagination. The ID of the last record on the previous page. Optional, exactly 36 characters, format: "/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/".
endingBefore string Can be used for backward pagination. The ID of the first record on the next page. Optional, exactly 36 characters, format: "/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/".
imei string Filters the results by IMEI / serial. Optional, 3 - 20 characters, format: "/^[0-9a-fA-F-]{3,20}$/".
friendlyName string Filters the results by friendly name. Optional, 3 - 100 characters.
email string Filters the results by sender email. Optional, 3 - 100 characters.
osType string Filters the results by operating system type. Optional, possible values: ["android", "ios"].
finishedTimeMin string Filters the results by finished time. Optional, Any valid datetime value.
finishedTimeMax string Filters the results by finished time. Optional, Any valid datetime value.
calculateTotalCount bool Setting this to TRUE will calculate the total number of records that match the filters up to 10000. The response will contain the total count in the totalCount field. If the number of matching records is greater than 10000, the totalCount field will contain the value 10000. Optional.
*** *** ***
testing bool Setting this value to true will result in a response populated only with syntactically correct test data which can be used to test the API integration. While your account is in testing mode the value of this parameter is always true and cannot be overridden. Optional.
GetExternalReportsResponseData object:

This is the data object of the response of the getExternalReports API endpoint.

Property Type Description
records ExternalReport[] The list of external reports
hasMore bool Whether there are more records
totalCount int | null The total number of records (up to 10000). Only available when calculateTotalCount request parameter is set to true
ExternalReport object:

An object representing an external report. The external report stores the test and grading results of a device made by an external user using the M360 Mobil App.

Property Type Description
uid string The unique ID of the external report
email string | null The email address of the user that created the external report
createdAt string The date and time when the data was saved on the server
finishedTime string The time when the report was created on the device
friendlyName string | null The friendly name of the device
imei string | null The IMEI number of the device.
osType string The type of the operating system on the device. Possible values:
Value Description
android Android
ios iOS
manufacturer string | null The manufacturer of the device
model string | null The model code of the device (Android only)
identifier string | null The model identifier of the device (iOS only)
storage string | null The storage capacity of the device (iOS only)
appVersion string | null The version of the M360 mobile application that created the external report
htmlLink string | null A link to the HTML report
tests DiagnosticsResultTest[] The list of test results
gradingResult GradingResult | null An object containing the grading data of the device
DiagnosticsResultTest object:

This object holds the result and details of a single device diagnostics test.

Property Type Description
testId string The test ID
result string The result of the test. Possible values:
Value Description
Passed The device successfully passed the test
Failed The device failed to pass the test
Skipped The test was skipped by the user
NA The test is not available on the device
elapsedTime array The elapsed time of the test(s) in seconds (if available). Multiple values mean multiple attempts.
details DiagnosticsResultDetail[] The list of extra details
GradingResult object:

This object holds the saved grading information of a device.

Property Type Description
createdAt string The date and time when the data was saved on the server
modificationTimestamp string | null The date and time when the data was last modified
screen int The condition of the screen (0-5) A result of 0 means no value was selected for this grading option
back int The condition of the back cover (0-5) A result of 0 means no value was selected for this grading option
phoneCase int The condition of the case (0-5) A result of 0 means no value was selected for this grading option
lcd int The condition of the LCD (0-5) A result of 0 means no value was selected for this grading option
accessories string[] The list of accessories available for the device. Possible values:
Value Description
original_box Original box
papers Papers
usb_cable USB cable
charger Charger
receipt Receipt
headset Headset
sim_tool SIM tool
comment string Generic notes
DiagnosticsResultDetail object:

This object holds a single, additional detail of a diagnostics test. Some tests have multiple parts with individual results, while other tests provide extra information. For example the battery test can provide details about the original capacity of the battery, temperature, voltage, etc.

Property Type Description
context string The context ID of the detail. The context ID determines the type of the detail and the meaning of the properties. Possible values:
Value Description
BatteryCurrentCapacity The current capacity of the battery in mAh
BatteryCycles The number of charge cycles the battery has gone through
BatteryDrainPercentLost The percentage of battery capacity lost due to drain
BatteryOriginalCapacity The original capacity of the battery in mAh
BatteryTechnology The technology of the battery
BatteryTemperature The temperature of the battery in degrees Celsius
BatteryVoltage The voltage of the battery in mV
BiometricFaceIdCondition The condition of the face ID biometric sensor
BiometricFaceIdConditionFail The reason why the face ID biometric sensor failed
HardwareButtonAction The result of the action button test
HardwareButtonCameraSlide The result of the camera slide button test
HardwareButtonCameraTake The result of the camera button test
HardwareButtonHome The result of the home button test
HardwareButtonMute The result of the mute button test
HardwareButtonNotPredefined The test result of other, found, non-standard hardware buttons
HardwareButtonPower The result of the power button test
HardwareButtonVolumeDown The result of the volume down button test
HardwareButtonVolumeUp The result of the volume up button test
ChargeAc The result of the AC charging test
ChargeDock The result of the charging test through the dock port
ChargeUsb The result of the charging test through the USB port
ChargeWired The result of the wired charging test
ChargeWireless The result of the wireless charging test
EstimatedBatteryHealth The estimated health of the battery in percentage
MicrophoneBack The result of the back microphone test
MicrophoneBottom The result of the bottom microphone test
MicrophoneCamera The result of the camera microphone test
MicrophoneFront The result of the front microphone test
MicrophoneLeft The result of the left microphone test
MicrophoneMicrophone The result of the microphone test
MicrophoneNotPredefined The test result of other, found, non-standard microphones
MicrophoneRight The result of the right microphone test
MicrophoneTop The result of the top microphone test
MultitouchDetectedNumberOfTouches The number of touches detected by the multitouch test
PreciseBatteryHealth The precise health of the battery in percentage
SpeakerEar The result of the ear speaker test
SpeakerLoud The result of the loudspeaker test
StorageFree The amount of free storage on the device
StorageTotal The total amount of storage
StorageUsed The amount of used storage
TouchTestVersion The version of the performed touch test
title string The title of the detail. For example the microphone test will list all tested microphones as details and the title will contain the name of the microphone (Front, Back, etc.). Or as another example the hardware button test will list all tested buttons as details and the title will contain the name or key code (if the name cannot be determined) of the button (Volume Up, Volume Down, KEYCODE_PTT etc.).
result string Some tests consist of multiple parts which are provided as details. If the detail is a sub-test then this property shows the result of it. Possible values:
Value Description
NA This detail does not have a result
Passed The device passed the sub-test
Failed The device failed the sub-test
Skipped The sub-test was skipped
value string The value of the detail, if applicable. For example the exact battery health percentage or the number of times the button was pressed etc.
Example responses:
Request: POST https://m360soft.com/api/customer/v2/getExternalReports 

    Content-Type: application/json

    {
        "limit": 10,
        "friendlyName": "iphone",
        "calculateTotalCount": true
    }

Response:

    Status: 200
    Content-Type: application/json

    {
        "data": {
            "records": [
                {
                    "uid": "49f8faf8-1692-4a9c-af4f-7e86937962f8",
                    "email": "[email protected]",
                    "createdAt": "2025-01-01T12:00:00+00:00",
                    "finishedTime": "2025-01-01T12:00:00+00:00",
                    "friendlyName": "iPhone 13 128 GB",
                    "imei": "352234567890123",
                    "osType": "ios",
                    "manufacturer": "Apple",
                    "model": null,
                    "identifier": "iPhone14,5",
                    "storage": "128 GB",
                    "appVersion": "3.1.4",
                    "htmlLink": "https://m360soft.com/reports/app/sample.html",
                    "tests": [
                        {
                            "testId": "TouchScreen",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": [
                                {
                                    "context": "TouchTestVersion",
                                    "title": "Version",
                                    "result": "Passed",
                                    "value": "Full-screen (more precise)"
                                }
                            ]
                        },
                        {
                            "testId": "Multitouch",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": [
                                {
                                    "context": "MultitouchDetectedNumberOfTouches",
                                    "title": "Number of touches",
                                    "result": "Passed",
                                    "value": "3"
                                }
                            ]
                        },
                        {
                            "testId": "Color",
                            "result": "Failed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Touch3D",
                            "result": "Failed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Speaker",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": [
                                {
                                    "context": "SpeakerEar",
                                    "title": "Ear Speaker",
                                    "result": "Passed",
                                    "value": "Auto"
                                },
                                {
                                    "context": "SpeakerLoud",
                                    "title": "Loud Speaker",
                                    "result": "Passed",
                                    "value": "Auto"
                                }
                            ]
                        },
                        {
                            "testId": "Microphone",
                            "result": "Failed",
                            "elapsedTime": [],
                            "details": [
                                {
                                    "context": "MicrophoneBottom",
                                    "title": "Bottom",
                                    "result": "Failed",
                                    "value": "Manual"
                                },
                                {
                                    "context": "MicrophoneFront",
                                    "title": "Front",
                                    "result": "Passed",
                                    "value": "Manual"
                                },
                                {
                                    "context": "MicrophoneBack",
                                    "title": "Back",
                                    "result": "Skipped",
                                    "value": "Manual"
                                }
                            ]
                        },
                        {
                            "testId": "Headphones",
                            "result": "Skipped",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "HardwareButton",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": [
                                {
                                    "context": "HardwareButtonPower",
                                    "title": "Power/Lock",
                                    "result": "Passed",
                                    "value": ""
                                },
                                {
                                    "context": "HardwareButtonVolumeUp",
                                    "title": "Volume Up",
                                    "result": "Passed",
                                    "value": ""
                                },
                                {
                                    "context": "HardwareButtonVolumeDown",
                                    "title": "Volume Down",
                                    "result": "Passed",
                                    "value": ""
                                },
                                {
                                    "context": "HardwareButtonAction",
                                    "title": "Action Button",
                                    "result": "Passed",
                                    "value": ""
                                }
                            ]
                        },
                        {
                            "testId": "Battery",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": [
                                {
                                    "context": "PreciseBatteryHealth",
                                    "title": "Battery Health",
                                    "result": "NA",
                                    "value": "100%"
                                },
                                {
                                    "context": "BatteryOriginalCapacity",
                                    "title": "Original Capacity",
                                    "result": "NA",
                                    "value": "3181 mAh"
                                },
                                {
                                    "context": "BatteryCurrentCapacity",
                                    "title": "Current Capacity",
                                    "result": "NA",
                                    "value": "3181 mAh"
                                },
                                {
                                    "context": "BatteryCycles",
                                    "title": "Battery Cycles",
                                    "result": "NA",
                                    "value": "5"
                                }
                            ]
                        },
                        {
                            "testId": "RearCamera",
                            "result": "Skipped",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "FrontCamera",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Autofocus",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Flash",
                            "result": "Failed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Vibration",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Storage",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": [
                                {
                                    "context": "StorageTotal",
                                    "title": "Total",
                                    "result": "NA",
                                    "value": "127.9 GB"
                                },
                                {
                                    "context": "StorageFree",
                                    "title": "Free",
                                    "result": "NA",
                                    "value": "112.5 GB"
                                },
                                {
                                    "context": "StorageUsed",
                                    "title": "Used",
                                    "result": "NA",
                                    "value": "15.4 GB"
                                }
                            ]
                        },
                        {
                            "testId": "Pen",
                            "result": "Skipped",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Accelerometer",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Gyroscope",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Proximity",
                            "result": "Skipped",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Light",
                            "result": "Failed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Magnetic",
                            "result": "Skipped",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Call",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Charge",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": [
                                {
                                    "context": "ChargeWired",
                                    "title": "Wired",
                                    "result": "Passed",
                                    "value": ""
                                },
                                {
                                    "context": "ChargeWireless",
                                    "title": "Wireless",
                                    "result": "NA",
                                    "value": "Not Tested"
                                }
                            ]
                        },
                        {
                            "testId": "Wifi",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Bluetooth",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Gps",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Nfc",
                            "result": "Failed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Lidar",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": []
                        },
                        {
                            "testId": "Biometric",
                            "result": "Passed",
                            "elapsedTime": [],
                            "details": [
                                {
                                    "context": "BiometricFaceIdCondition",
                                    "title": "FaceID has passed self-diagnostics",
                                    "result": "NA",
                                    "value": ""
                                }
                            ]
                        }
                    ],
                    "gradingResult": {
                        "createdAt": "2025-01-01T12:00:00+00:00",
                        "modificationTimestamp": "2025-01-01T12:00:00+00:00",
                        "screen": 5,
                        "back": 4,
                        "phoneCase": 3,
                        "lcd": 5,
                        "accessories": [
                            "OriginalBox",
                            "Papers",
                            "UsbCable",
                            "Charger",
                            "Receipt",
                            "Headset",
                            "SimTool"
                        ],
                        "comment": "Sample comment"
                    }
                }
            ],
            "hasMore": false,
            "totalCount": 1
        },
        "meta": {
            "success": true
        }
    }

POST https://m360soft.com/api/customer/v2/scheduleBlacklistCheck

Schedules a blacklist check for the specified IMEI numbers. The check runs asynchronously, and you can retrieve the results once they’re ready. Each IMEI number costs 1 blacklist check token.

Request parameters:
Name Type Description
imeiList array A list of IMEI numbers to perform the blacklist check for. The list can include up to 1,000 IMEI numbers. Required, 1 - 1000 elements, All.
*** *** ***
testing bool Setting this value to true will result in a response populated only with syntactically correct test data which can be used to test the API integration. While your account is in testing mode the value of this parameter is always true and cannot be overridden. Optional.
BlacklistCheckBatchResult object:

This is the data object of the response of the scheduleBlacklistCheck and getBlacklistChecksByBatchId API endpoints.

Property Type Description
batchId string This is the unique identifier of this batch. It will be available once you perform a schedule request
createdAt string The date and time when the data was saved on the server
batchSize int The size of the batch, which is the count of the unique imei's provided in the schedule request
result array | null List of result of the provided imei's. It will be available after the batch has been fully processed. Only successful checks will be listed here
status string Status of the batch. Possible values:
Value Description
queued The batch is set to be processed
started The batch is currently processed
finished The batch is complete
Example responses:
Request: POST https://m360soft.com/api/customer/v2/scheduleBlacklistCheck 

    Content-Type: application/json

Response:

    Status: 400
    Content-Type: application/json

    {
        "data": [],
        "meta": {
            "success": false,
            "errors": {
                "code": "validation:parameter_error",
                "title": "One or more parameters are missing or invalid",
                "details": {
                    "imeiList": [
                        "This value should not be blank."
                    ]
                }
            }
        }
    }
Request: POST https://m360soft.com/api/customer/v2/scheduleBlacklistCheck 

    Content-Type: application/json

    {
        "imeiList": [
            "566171972540345",
            "446416547821353",
            "357838080687454",
            "566171972540345"
        ]
    }

Response:

    Status: 200
    Content-Type: application/json

    {
        "data": {
            "batchId": "bc883c8b-46d3-ef73-924d-23005e7e8e13",
            "createdAt": "2024-10-02T13:23:10",
            "batchSize": 3,
            "result": null,
            "status": "queued",
            "availableTokens": 1297
        },
        "meta": {
            "success": true
        }
    }

POST https://m360soft.com/api/customer/v2/getBlacklistChecksByBatchId

Gets the status of a previously scheduled blacklist check batch. This allows you to check if the batch is still processing or if the results are ready.

Request parameters:
Name Type Description
batchId string A guid representing the batch ID of the blacklist check. This ID is returned when you schedule a blacklist check. Required, Uuid.
*** *** ***
testing bool Setting this value to true will result in a response populated only with syntactically correct test data which can be used to test the API integration. While your account is in testing mode the value of this parameter is always true and cannot be overridden. Optional.
BlacklistCheckBatchResult object:

This is the data object of the response of the scheduleBlacklistCheck and getBlacklistChecksByBatchId API endpoints.

Property Type Description
batchId string This is the unique identifier of this batch. It will be available once you perform a schedule request
createdAt string The date and time when the data was saved on the server
batchSize int The size of the batch, which is the count of the unique imei's provided in the schedule request
result array | null List of result of the provided imei's. It will be available after the batch has been fully processed. Only successful checks will be listed here
status string Status of the batch. Possible values:
Value Description
queued The batch is set to be processed
started The batch is currently processed
finished The batch is complete
Example responses:
Request: POST https://m360soft.com/api/customer/v2/getBlacklistChecksByBatchId 

    Content-Type: application/json

    {
        "batchId": "bc883c8b-46d3-ef73-924d-23005e7e8e13"
    }

Response:

    Status: 200
    Content-Type: application/json

    {
        "data": {
            "batchId": "bc883c8b-46d3-ef73-924d-23005e7e8e13",
            "createdAt": "2024-10-02T13:23:10",
            "batchSize": 3,
            "result": null,
            "status": "queued",
            "availableTokens": 1297
        },
        "meta": {
            "success": true
        }
    }