(Click here to visit App-Ray homepage: app-ray.co)
Standard API endpoint:
App-Ray uses Bearer authorization tokens for authenticated sessions.
Every public API request (except the authentication-related ones) requires
Bearer authorization token to be set in the HTTP request header.
See example below.
The API details are available in YAML format - click here to download .yaml file.
Standard API endpoint:
{your_instance}/api/v1/
App-Ray uses Bearer authorization tokens for authenticated sessions.
Every public API request (except the authentication-related ones) requires
Bearer authorization token to be set in the HTTP request header.
See example below.
The API details are available in YAML format - click here to download .yaml file.
Another example:
If your App-Ray instance is located at:
Your API endpoint would be:
If your App-Ray instance is located at:
https://appscan.yourcompany.com/
Your API endpoint would be:
https://appscan.yourcompany.com/api/v1/
Example:
If your domain is
Your API endpoint will be:
If your domain is
https://demo.app-ray.co/
Your API endpoint will be:
https://demo.app-ray.co/api/v1/
POST
Do user authentication
/authentication Parameters:
Responses:
Examples:
POST /api/v1/authentication formData: [email protected] password=my_secret_password_123 grant_type=password returns 200:OK { "access_token": "abcdef123456", "expires_in": 86400, "last_login_ip": "86.87.88.89", "last_login_successful": true, "last_login_time": 1515636522, "token_type": "Bearer" } Note: the access token should be used for identification in all further requests. The following HTTP request header should be set: Authorization: Bearer abcdef123456(where the token value is received after successful login via /authentication endpoint, as described above.) |
||||||||||||||||||||||
GET
Retrieve scanning jobs
/jobs Parameters:
Responses:
Examples:
GET /api/v1/jobs returns 200: OK [ { "uuid": "32523252c923-4772-4417-a7cb", "package": "com.appray.test.app", "label": "Test App", "version": "1.0.1", "app_hash": "8e3aa19fdc42e87659746f6dc", "timestamp_upload": 1473265825, "timestamp_scan_start": 1473266000, "timestamp_scan_finish": 1473267000, "status": "finished", "submitter": "[email protected]", "notification_group": "5a7c2a8f-8625-40e7-9b77", "progress_total": 20, "progress_finished": 20, "risk_score": 80, "risk_grade": "F", "threat_counts": { "total": 10, "high": 5, "medium": 3, "low": 2 } } ] GET /api/v1/jobs?status=pending&_sort=risk_score returns: 200 [] |
||||||||||||||||||||||
POST
Submit application for scanning
/jobs Parameters:
Responses:
Examples:
POST /api/v1/jobs formData: file=testapp.apk config={"dynamic_scan_mode":"interactive"} returns 202: Accepted "1118eb90-f65f-11e7-9f9d-0242cc110008"(which is the UUID of the recently created analysis session) returns 415: Unsupported Media Type { "detail": "The provided file is not a valid file.", "status": 415, "title": "No valid application found", "type": "about:blank" } |
||||||||||||||||||||||
POST
Submit application URL to retrieve for scanning
/job_url Parameters:
Responses:
Examples:
POST /api/v1/job_url formData: url=http://app-ray.co/testapp.apk config={"dynamic_scan_mode":"interactive"} returns 202: Accepted "1118eb90-f65f-11e7-9f9d-0242cc110008"(which is the UUID of the recently created analysis session) returns 415: Unsupported Media Type { "detail": "The provided file is not a valid file.", "status": 415, "title": "No valid application found", "type": "about:blank" } |
||||||||||||||||||||||
GET
Retrieve job summary
/jobs/{job_id} Parameters:
Responses:
Examples:
GET /jobs/1118eb90-f65f-11e7-9f9d-0242cc110008 returns 200: Job summary { "uuid": "3252c923-4772-4417-a7cb", "package": "com.appray.test.app", "label": "Test App", "version": "1.0.1", "app_hash": "8e3aa19fdc42e87659746f6", "timestamp_upload": 1473265825, "timestamp_scan_start": 1473266000, "timestamp_scan_finish": 1473267000, "status": "finished", "submitter": "[email protected]", "notification_group": "5a7c2a8f-8625-40e7-9b77", "progress_total": 20, "progress_finished": 20, "risk_score": 80, "risk_grade": "F", "threat_counts": { "total": 10, "high": 5, "medium": 3, "low": 2 }, "scan_duration": 35000, "scan_errors": { "detector.a.b": "Something reallly bad has happened" }, "threat_summaries": [ { "id": "DEBUGGABLE", "explanation": "Details to include here", "description": "App is debuggable" } ] } |
||||||||||||||||||||||
DELETE
Delete job
/jobs/{job_id} Parameters:
Responses:
Examples:
DELETE /jobs/1118eb90-f65f-11e7-9f9d-0242cc110008 returns 200 OK |
||||||||||||||||||||||
GET
Retrieve the application icon
/jobs/{job_id}/icon.png Parameters: Responses:
|
||||||||||||||||||||||
GET
Retrieve the application detector details
/jobs/{job_id}/details Parameters:
Responses:
Examples:
GET /api/v1/jobs/30e789e4- 0cdc-11e7-8789/details?path=/de.fhg.aisec.appray.detectors... returns 200: Scanned application detector details [ { "cause": "SQLiteDatabase.rawQuery() called with modifiable query string", "origin": "Lcom/umeng/common/net/c;->a(I)V" }, { "cause": "SQLiteDatabase.rawQuery() called with modifiable query string", "origin": "Lcom/umeng/common/net/c;->a(I)V" }, { "cause": "SQLiteDatabase.rawQuery() called with modifiable query string", "origin": "Lcom/umeng/common/net/c;->a(I)V" } ] |
||||||||||||||||||||||
GET
Retrieve the application result files zipped
/jobs/{job_id}/result.zip Parameters:
Responses:
|
||||||||||||||||||||||
GET
Retrieve the application result report as pdf
/jobs/{job_id}/report.pdf Parameters:
Responses:
|
||||||||||||||||||||||
GET
Retrieve part of the application source code
/jobs/{job_id}/source Parameters:
Responses:
|
||||||||||||||||||||||
GET
Search contained strings
/jobs/{job_id}/strings Parameters:
Responses:
|
||||||||||||||||||||||
GET
Retrieve the virus scan results for the given job
/jobs/{job_id}/virus-results Parameters: Responses:
|
||||||||||||||||||||||
GET
Retrieve information on the organization
/organization Parameters: Responses:
|
||||||||||||||||||||||
GET
Retrieve statistics on the operation
/organization/statistics Parameters: Responses:
|
||||||||||||||||||||||
GET
Retrieve the configuration of the organization
/organization/configuration Parameters: Responses:
|
||||||||||||||||||||||
POST
Save organization configuration
/organization/configuration Parameters:
Responses:
|
||||||||||||||||||||||
GET
Retrieve information on the user
/user Parameters: Responses:
|
||||||||||||||||||||||
POST
Change user credentials
/user/credential Parameters:
Responses:
|
||||||||||||||||||||||
POST
Request a one-time login when credentials lost
/lost-credential Parameters:
Responses:
|
||||||||||||||||||||||
POST
Send support question
/support Parameters:
Responses:
|