{ "swagger":"2.0", "info":{ "title":"Performance API", "version":"0.247.0", "description":"Performance API provides essential information about performance of tested web application." }, "host":"saucelabs.com", "servers":[ { "url":"https://api.{region}.saucelabs.{tld}", "variables":{ "region":{ "default":"us-west-1", "description":"region of datacenter", "enum":[ "us-west-1", "eu-central-1", "staging" ] }, "tld":{ "default":"com", "description":"internal or external API", "enum":[ "net", "com" ] } } } ], "basePath":"/v2/performance", "schemes":[ "https" ], "produces":[ "application/json" ], "paths":{ "/metrics/":{ "get":{ "operationId":"get_performance_metrics", "description":"Provides a list of paginated raw performance metrics for the logged user", "parameters":[ { "$ref":"#/parameters/PageUrl" } ], "responses":{ "200":{ "schema":{ "$ref":"#/definitions/PerformanceUserMetricsView" } }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } }, "/metrics/{job_id}/":{ "get":{ "operationId":"get_performance_metrics_by_jobID", "description":"Provides performance metrics and job basic data for a given job_id", "parameters":[ { "$ref":"#/parameters/JobId" }, { "$ref":"#/parameters/Full" } ], "responses":{ "200":{ "schema":{ "$ref":"#/definitions/PerformanceMetricsListView" } }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } }, "/metrics/{job_id}/assert/":{ "get":{ "operationId":"assert_performance", "description":"Provides information if there is an outlier for the given job_id and metric", "parameters":[ { "$ref":"#/parameters/JobId" }, { "$ref":"#/parameters/MetricNames" }, { "$ref":"#/parameters/OrderIndex" } ], "responses":{ "200":{ "schema":{ "$ref":"#/definitions/AssertView" } }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } }, "/metrics/{job_id}/baseline/":{ "get":{ "operationId":"get_baseline", "description":"Provides baseline based on metrics history, where the reference point is a given job_id", "parameters":[ { "$ref":"#/parameters/JobId" }, { "$ref":"#/parameters/MetricNames" }, { "$ref":"#/parameters/OrderIndex" }, { "$ref":"#/parameters/RegimeStart" }, { "$ref":"#/parameters/RegimeEnd" } ], "responses":{ "200":{ "schema":{ "$ref":"#/definitions/BaselineView" } }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } }, "/metrics/{job_id}/baseline/reset/":{ "get":{ "operationId":"has_baseline_reset", "description":"Returns true if a baseline was resetted for a give job_id", "parameters":[ { "$ref":"#/parameters/JobId" } ], "responses":{ "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } }, "post":{ "operationId":"acknowledge_baseline", "description":"Sets a reset point market at job_id, previous jobs will not be taken into account in calculating baseline", "parameters":[ { "$ref":"#/parameters/JobId" } ], "responses":{ "201":{ "description":"Sets a reset point market at job_id, previous jobs will not be taken into account in calculating baseline" }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } }, "/metrics/{job_id}/discarded/":{ "get":{ "operationId":"get_discarded_outliers", "description":"Provides lists outliers marked as discarded", "parameters":[ { "$ref":"#/parameters/JobId" }, { "$ref":"#/parameters/OrderIndex" } ], "responses":{ "200":{ "schema":{ "$ref":"#/definitions/DiscardedView" } }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } }, "post":{ "operationId":"discard_outliers", "description":"Marks outlier for a given {job_id} as not relevant/flaky", "parameters":[ { "$ref":"#/parameters/JobId" }, { "$ref":"#/parameters/OrderIndex" } ], "responses":{ "201":{ "description":"Marks outlier for a given {job_id} as not relevant/flaky" }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } }, "/metrics/{job_id}/history/":{ "get":{ "operationId":"get_baseline_history", "description":"Provides a list of raw performance metrics up to point where the reference is a given job_id and order_index", "parameters":[ { "$ref":"#/parameters/JobId" }, { "$ref":"#/parameters/OrderIndex" }, { "$ref":"#/parameters/Limit" } ], "responses":{ "200":{ "schema":{ "$ref":"#/definitions/PerformanceMetricsHistoryView" } }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } }, "/metrics/{job_id}/regimes/":{ "get":{ "operationId":"get_regimes", "description":"Provides regimes per metric calculated for a set of jobs, where the reference point is a given job_id", "parameters":[ { "$ref":"#/parameters/JobId" }, { "$ref":"#/parameters/MetricNames" }, { "$ref":"#/parameters/OrderIndex" }, { "$ref":"#/parameters/IncludeBaseline" } ], "responses":{ "200":{ "schema":{ "$ref":"#/definitions/RegimesView" } }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } }, "/metrics/{job_id}/regimes/acknowledge/":{ "post":{ "operationId":"acknowledge_regime", "description":"Acknowledge regime. Confirm values in new regime are acceptable.", "parameters":[ { "$ref":"#/parameters/JobId" }, { "$ref":"#/parameters/OrderIndex" } ], "responses":{ "201":{ "description":"Acknowledge regime. Confirm values in new regime are acceptable." }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } }, "/metrics/swagger/":{ "get":{ "operationId":"get_api_definition", "description":"Provides json documentation for the performance API", "responses":{ "200":{ "description":"Provides json documentation for the performance API" }, "default":{ "description":"Error response", "schema":{ "$ref":"#/definitions/ErrorResponse" } } } } } }, "parameters":{ "JobId":{ "name":"job_id", "in":"path", "type":"string", "required":true }, "Full":{ "name":"full", "in":"query", "type":"boolean", "required":false, "default":true, "description":"When set to false, basic job data will be returned, excluding performance metrics" }, "MetricNames":{ "name":"metric_names", "in":"query", "type":"array", "items":{ "type":"string" }, "required":true }, "OrderIndex":{ "name":"order_index", "in":"query", "type":"integer", "required":true }, "PageUrl":{ "name":"page_url", "in":"query", "type":"string", "required":false }, "Limit":{ "name":"limit", "in":"query", "type":"integer", "required":false }, "RegimeStart":{ "name":"regime_start", "in":"query", "type":"integer", "required":false }, "RegimeEnd":{ "name":"regime_end", "in":"query", "type":"integer", "required":false }, "IncludeBaseline":{ "name":"include_baseline", "in":"query", "type":"boolean", "default":false, "required":false } }, "definitions":{ "PerformanceMetricsListView":{ "type":"object", "properties":{ "items":{ "type":"array", "items":{ "$ref":"#/definitions/PerformanceMetricsListViewItems" } } } }, "PerformanceMetricsListViewItems":{ "type":"object", "properties":{ "job_id":{ "type":"string" }, "job_owner":{ "type":"string" }, "job_name_hash":{ "type":"string" }, "page_url":{ "type":"string" }, "order_index":{ "type":"integer" }, "job_creation_time":{ "type":"string", "format":"date-time" }, "load_id":{ "type":"string" }, "loader_id":{ "type":"string" }, "error":{ "type":"string" }, "metric_data":{ "$ref":"#/definitions/PerformanceMetricsDetails" } } }, "PerformanceMetricsHistoryView":{ "type":"object", "properties":{ "items":{ "type":"array", "items":{ "$ref":"#/definitions/PerformanceMetricsListViewItems" } } } }, "PerformanceUserMetricsView":{ "type":"object", "properties":{ "items":{ "type":"array", "items":{ "$ref":"#/definitions/PerformanceMetricsListViewItems" } }, "next":{ "type":"string" }, "previous":{ "type":"string" } } }, "PerformanceMetricsDetails":{ "type":"object", "properties":{ "rtt":{ "type":"number", "format":"float" }, "load":{ "type":"number", "format":"float" }, "score":{ "type":"number", "format":"integer" }, "maxRtt":{ "type":"number", "format":"integer" }, "numFonts":{ "type":"number", "format":"integer" }, "numTasks":{ "type":"number", "format":"integer" }, "font_size":{ "type":"number", "format":"integer" }, "firstPaint":{ "type":"number", "format":"integer" }, "font_count":{ "type":"number", "format":"integer" }, "image_size":{ "type":"number", "format":"integer" }, "numScripts":{ "type":"number", "format":"integer" }, "other_size":{ "type":"number", "format":"integer" }, "speedIndex":{ "type":"number", "format":"integer" }, "throughput":{ "type":"number", "format":"float" }, "image_count":{ "type":"number", "format":"integer" }, "numRequests":{ "type":"number", "format":"integer" }, "other_count":{ "type":"number", "format":"integer" }, "script_size":{ "type":"number", "format":"integer" }, "firstCPUIdle":{ "type":"number", "format":"integer" }, "requestsSize":{ "type":"number", "format":"integer" }, "script_count":{ "type":"number", "format":"integer" }, "document_size":{ "type":"number", "format":"integer" }, "requestsCount":{ "type":"number", "format":"integer" }, "totalTaskTime":{ "type":"number", "format":"integer" }, "document_count":{ "type":"number", "format":"integer" }, "numStylesheets":{ "type":"number", "format":"integer" }, "stylesheet_size":{ "type":"number", "format":"integer" }, "timeToFirstByte":{ "type":"number", "format":"integer" }, "totalByteWeight":{ "type":"number", "format":"integer" }, "domContentLoaded":{ "type":"number", "format":"integer" }, "firstInteractive":{ "type":"number", "format":"integer" }, "lastVisualChange":{ "type":"number", "format":"integer" }, "maxServerLatency":{ "type":"number", "format":"integer" }, "numTasksOver10ms":{ "type":"number", "format":"integer" }, "numTasksOver25ms":{ "type":"number", "format":"integer" }, "numTasksOver50ms":{ "type":"number", "format":"integer" }, "stylesheet_count":{ "type":"number", "format":"integer" }, "firstVisualChange":{ "type":"number", "format":"integer" }, "numTasksOver100ms":{ "type":"number", "format":"integer" }, "numTasksOver500ms":{ "type":"number", "format":"integer" }, "firstContentfulPaint":{ "type":"number", "format":"integer" }, "firstMeaningfulPaint":{ "type":"number", "format":"integer" }, "estimatedInputLatency":{ "type":"number", "format":"integer" }, "mainDocumentTransferSize":{ "type":"number", "format":"integer" } } }, "BaselineView":{ "type":"object", "properties":{ "metric_name":{ "description":"metric name is one of the metrics provided in /metrics/{job_id}/", "$ref":"#/definitions/BaselineDetails" } } }, "BaselineDetails":{ "type":"object", "properties":{ "baseline":{ "type":"number", "format":"float", "description":"Baseline" }, "upper_boundary":{ "type":"number", "format":"float", "description":"Upper boundry" }, "lower_boundary":{ "type":"number", "format":"float", "description":"Lower boundry" }, "values":{ "type":"array", "items":{ "$ref":"#/definitions/BaselineValues" } } } }, "BaselineValues":{ "type":"object", "properties":{ "real_value":{ "type":"number", "format":"float", "description":"Real value" }, "job_id":{ "type":"string" }, "datetime":{ "type":"string", "format":"date-time" } } }, "OutlierDetails":{ "type":"object", "properties":{ "status":{ "type":"boolean" }, "reason":{ "type":"string", "enum":[ "baseline", "new_regime" ] } } }, "AssertView":{ "type":"object", "properties":{ "metric_name":{ "$ref":"#/definitions/AssertDetails" } } }, "AssertDetails":{ "type":"object", "properties":{ "baseline":{ "type":"number", "format":"float", "description":"Baseline" }, "upper_boundary":{ "type":"number", "format":"float", "description":"Upper boundry" }, "lower_boundary":{ "type":"number", "format":"float", "description":"Lower boundry" }, "real_value":{ "type":"number", "format":"float", "description":"Real value" }, "job_id":{ "type":"string" }, "datetime":{ "type":"string", "format":"date-time" }, "order_index":{ "type":"integer" }, "outlier":{ "$ref":"#/definitions/OutlierDetails" } } }, "RegimesView":{ "type":"object", "properties":{ "metric_name":{ "type":"array", "items":{ "type":"object", "required":[ "regime_start", "regime_end", "baseline_url", "active" ], "properties":{ "regime_start":{ "type":"integer", "description":"Left regime boundry" }, "regime_end":{ "type":"integer", "description":"Right regime boundry" }, "baseline_url":{ "type":"string", "description":"Path to baseline endpoint for given regime" }, "active":{ "type":"boolean", "description":"Informs if given regime is active - in force" }, "baseline":{ "type":"object", "properties":{ "upper_boundary":{ "type":"number", "format":"float", "description":"Upper boundry" }, "lower_boundary":{ "type":"number", "format":"float", "description":"Lower boundry" } } } } } } } }, "DiscardedView":{ "type":"object", "properties":{ "job_ids":{ "type":"array", "items":{ "type":"string" } } } }, "ErrorResponse":{ "type":"object", "properties":{ "status":{ "type":"string" }, "message":{ "type":"string" } } }, "RegimeAcknowledge":{ "type":"object", "properties":{ "page_url":{ "type":"string" }, "order_index":{ "type":"integer" }, "metric_names":{ "type":"array", "items":{ "type":"string" } } }, "required":[ "page_url", "order_index", "metric_names" ] } } }