# Quality

## Check results \[Paginated]

> This endpoint provides a list of checks along with each checks's historical evaluation results.\
> \
> Usage\
> \-----\
> Use this endpoint to build reports that show the outcome of your checks over time. If you gathered high-level data\
> from the \`/dataset\_health\` and \`/dataset\_coverage\` endpoints, you can use this endpoint to examine more granular\
> data about checks that apply to each dataset.\
> \
> You can provide multiple \`dataset\_ids\` per request, and use the \`from\_datetime\` parameter to optimize performance.\
> Use the \`datasets\` endpoint to first get a list of available datasets along with their IDs, then issue separate\
> queries one dataset at a time.\
> \
> Keep the number of potentially parallel queries that you make to this endpoint small as they can face rate\
> limitations or poor performance.\
> \
> Returns\
> \-------\
> An object of type \`CheckResultsResult\` containing an array of \`CheckResultsData\`\
> \
> Find details about the response objects in the \*\*Schemas\*\* section or by\
> unfurling the response details.

```json
{"openapi":"3.0.2","info":{"title":"Soda Cloud Reporting API","version":"1.3.1"},"servers":[{"url":"https://reporting.cloud.soda.io/v1","description":"Cloud EU"},{"url":"https://reporting.cloud.us.soda.io/v1","description":"Cloud US"}],"security":[{"HTTPBasic":[]},{"SodaBackendToken":[]},{"APIKeyCookie":[]},{"ApiKeyId[Soon Deprecated] Use XApiKeyID":[]},{"APIKeySecret[Soon Deprecated] Use XApiKeySecret":[]},{"XApiKeyId":[]},{"XApiKeySecret":[]}],"components":{"securitySchemes":{"HTTPBasic":{"type":"http","scheme":"basic"},"SodaBackendToken":{"type":"apiKey","in":"header","name":"SODA_TOKEN"},"APIKeyCookie":{"type":"apiKey","in":"cookie","name":"token"},"ApiKeyId[Soon Deprecated] Use XApiKeyID":{"type":"apiKey","in":"header","name":"API_KEY_ID"},"APIKeySecret[Soon Deprecated] Use XApiKeySecret":{"type":"apiKey","in":"header","name":"API_KEY_SECRET"},"XApiKeyId":{"type":"apiKey","in":"header","name":"X-API-KEY-ID"},"XApiKeySecret":{"type":"apiKey","in":"header","name":"X-API-KEY-SECRET"}},"schemas":{"CheckResultsRequest":{"title":"CheckResultsRequest","type":"object","properties":{"page":{"title":"Page","minimum":1,"type":"integer","description":"Page number","default":1},"size":{"title":"Size","maximum":1000,"minimum":1,"type":"integer","description":"Page size","default":400},"dataset_ids":{"title":"Dataset Ids","type":"array","items":{"type":"string"},"description":"Dataset IDs (UUIDs from the Soda Cloud platform) to use as filter."},"check_ids":{"title":"Check Ids","type":"array","items":{"type":"string"},"description":"Check IDs (UUIDs from the Soda Cloud platform) to use as filter."},"from_datetime":{"title":"From Datetime","type":"string","description":"\nISO 8601 datetime to specify the point in time from which you would like to get health historical data.\n","format":"date-time"}},"description":"Test results request JSON Body."},"CheckResultsResult":{"title":"CheckResultsResult","required":["total","page","size","data"],"type":"object","properties":{"total":{"title":"Total","type":"integer"},"page":{"title":"Page","type":"integer"},"size":{"title":"Size","type":"integer"},"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/CheckResultsData"}}},"description":"Array of `CheckResultsData`."},"CheckResultsData":{"title":"CheckResultsData","type":"object","properties":{"result_id":{"title":"Result Id","type":"string","description":"Identifier (UUID) of a test result in Soda Cloud."},"scan_time":{"title":"Scan Time","type":"string","description":"UTC timestamp of the scan that generated a specific test result.","format":"date-time"},"level":{"title":"Level","type":"string","description":"Severity level of a check result. Levels are: 'info', 'warning', and 'critical'."},"check_id":{"title":"Check Id","type":"string","description":"Identifier (UUID) of a check in Soda Cloud."},"check_name":{"title":"Check Name","type":"string","description":"Name of a specific check in Soda Cloud."},"created_at":{"title":"Created At","type":"string","description":"UTC timestamp at which the check was created.","format":"date-time"},"dataset_id":{"title":"Dataset Id","type":"string","description":"Identifier (UUID) of a dataset in Soda Cloud."},"organization_id":{"title":"Organization Id","type":"string","description":"Identifier (UUID) of an organization in Soda Cloud."},"metric_value":{"title":"Metric Value","type":"number","description":"Value of a Soda metric"},"owner_id":{"title":"Owner Id","type":"string","description":"Identifier (UUID) of the check owner in Soda Cloud."},"owner_first_name":{"title":"Owner First Name","type":"string","description":"First name of the check owner."},"owner_last_name":{"title":"Owner Last Name","type":"string","description":"Last name of the check owner."},"owner_email":{"title":"Owner Email","type":"string","description":"Email of the check owner."},"owner_job_title":{"title":"Owner Job Title","type":"string","description":"Job title of the check owner."},"owner_phone_number":{"title":"Owner Phone Number","type":"string","description":"Phone number of the check owner."},"owner_user_type":{"title":"Owner User Type","type":"string","description":"User type of the check owner."},"attributes":{"title":"Attributes","type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Atributes of a check"}},"description":"Contains information about checks and their results on a per scan basis."},"PaginatedResult":{"title":"PaginatedResult","required":["total","page","size"],"type":"object","properties":{"total":{"title":"Total","type":"integer"},"page":{"title":"Page","type":"integer"},"size":{"title":"Size","type":"integer"}},"description":"Pydantic model for a basic paginated result with pagination info."},"NoContentError":{"title":"NoContentError","type":"object","properties":{"resource":{"title":"Resource","type":"string","description":"Name of the resource. Usually the same string as the endpoint."},"data":{"title":"Data","type":"array","items":{"type":"object"},"description":"Generic data payload from the query. Should be overidden with a more specific pydandic model.","default":[]},"detail":{"title":"Detail","type":"string","default":"No results for the requested data. Since the data is pre-processed in batches it might be that the data you are looking for has not yet been processed. You can check when the last refresh took place by using the /last_etl_refresh_info endpoint. If you think this is a bug and you should be getting results, get in touch with us."}},"description":"Response Schema of a NoContent Error"},"HTTPValidationError":{"title":"HTTPValidationError","type":"object","properties":{"detail":{"title":"Detail","type":"array","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"title":"ValidationError","required":["loc","msg","type"],"type":"object","properties":{"loc":{"title":"Location","type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"}]}},"msg":{"title":"Message","type":"string"},"type":{"title":"Error Type","type":"string"}}}}},"paths":{"/quality/check_results":{"post":{"tags":["Quality"],"summary":"Check results [Paginated]","description":"This endpoint provides a list of checks along with each checks's historical evaluation results.\n\nUsage\n-----\nUse this endpoint to build reports that show the outcome of your checks over time. If you gathered high-level data\nfrom the `/dataset_health` and `/dataset_coverage` endpoints, you can use this endpoint to examine more granular\ndata about checks that apply to each dataset.\n\nYou can provide multiple `dataset_ids` per request, and use the `from_datetime` parameter to optimize performance.\nUse the `datasets` endpoint to first get a list of available datasets along with their IDs, then issue separate\nqueries one dataset at a time.\n\nKeep the number of potentially parallel queries that you make to this endpoint small as they can face rate\nlimitations or poor performance.\n\nReturns\n-------\nAn object of type `CheckResultsResult` containing an array of `CheckResultsData`\n\nFind details about the response objects in the **Schemas** section or by\nunfurling the response details.","operationId":"check_results_quality_check_results_post","requestBody":{"content":{"application/json":{"schema":{"title":"Request Body","allOf":[{"$ref":"#/components/schemas/CheckResultsRequest"}],"default":{"page":1,"size":400}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckResultsResult","title":"Response Check Results Quality Check Results Post","anyOf":[{"$ref":"#/components/schemas/CheckResultsResult"},{"$ref":"#/components/schemas/PaginatedResult"}]}}}},"202":{"description":"Successful request but no data was returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoContentError"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}}}
```

## Dataset health \[Paginated]

> This endpoint provides you with a daily measure of the health of each of your datasets. Soda calculates a dataset's\
> health based on the number of checks that pass during a scan. In calculating health, this endpoint returns an\
> aggregation of the pass results from multiple scans on the same day.\
> \
> Usage\
> \-----\
> Use this endpoint to get review the health of your datasets, and to see a high-level view of the more granular\
> information that the \`/check\_results\` endpoint provides.\
> \
> Use this endpoint in conjunction with the \`/datasets\` endpoint as the latter adds information about each\
> dataset.\
> \
> Multiple \`dataset\_ids\` are allowed per request, and use the \`from\_datetime\` parameter to optimize performance.\
> \
> Use the datasets endpoint to first get a list of available datasets along with their IDs, then issue separate\
> queries one dataset at a time.\
> \
> Keep the number of potentially parallel queries that you make to this endpoint small as they can face rate\
> limitations or poor performance.\
> \
> Returns\
> \-------\
> An object of type \`DatasetHealthResult\` containing an array of \`DatasetHealthData\`\
> \
> Find details about the response objects in the \*\*Schemas\*\* section or by\
> unfurling the response details.

```json
{"openapi":"3.0.2","info":{"title":"Soda Cloud Reporting API","version":"1.3.1"},"servers":[{"url":"https://reporting.cloud.soda.io/v1","description":"Cloud EU"},{"url":"https://reporting.cloud.us.soda.io/v1","description":"Cloud US"}],"security":[{"HTTPBasic":[]},{"SodaBackendToken":[]},{"APIKeyCookie":[]},{"ApiKeyId[Soon Deprecated] Use XApiKeyID":[]},{"APIKeySecret[Soon Deprecated] Use XApiKeySecret":[]},{"XApiKeyId":[]},{"XApiKeySecret":[]}],"components":{"securitySchemes":{"HTTPBasic":{"type":"http","scheme":"basic"},"SodaBackendToken":{"type":"apiKey","in":"header","name":"SODA_TOKEN"},"APIKeyCookie":{"type":"apiKey","in":"cookie","name":"token"},"ApiKeyId[Soon Deprecated] Use XApiKeyID":{"type":"apiKey","in":"header","name":"API_KEY_ID"},"APIKeySecret[Soon Deprecated] Use XApiKeySecret":{"type":"apiKey","in":"header","name":"API_KEY_SECRET"},"XApiKeyId":{"type":"apiKey","in":"header","name":"X-API-KEY-ID"},"XApiKeySecret":{"type":"apiKey","in":"header","name":"X-API-KEY-SECRET"}},"schemas":{"DatasetHealthRequest":{"title":"DatasetHealthRequest","type":"object","properties":{"page":{"title":"Page","minimum":1,"type":"integer","description":"Page number","default":1},"size":{"title":"Size","maximum":1000,"minimum":1,"type":"integer","description":"Page size","default":400},"dataset_ids":{"title":"Dataset Ids","type":"array","items":{"type":"string"},"description":"Dataset IDs (UUIDs from the Soda Cloud platform) to use as filter."},"from_datetime":{"title":"From Datetime","type":"string","description":"\nISO 8601 datetime to specify the point in time from which you would like to get health historical data.\n","format":"date-time"}},"description":"Dataset health request JSON Body."},"DatasetHealthResult":{"title":"DatasetHealthResult","required":["total","page","size","data"],"type":"object","properties":{"total":{"title":"Total","type":"integer"},"page":{"title":"Page","type":"integer"},"size":{"title":"Size","type":"integer"},"data":{"title":"Data","type":"array","items":{"$ref":"#/components/schemas/DatasetHealthData"}}},"description":"Array of `DatasetHealthData`."},"DatasetHealthData":{"title":"DatasetHealthData","type":"object","properties":{"organization_id":{"title":"Organization Id","type":"string","description":"Identifier (UUID) of an organization in Soda Cloud."},"dataset_id":{"title":"Dataset Id","type":"string","description":"Identifier (UUID) of a dataset in Soda Cloud."},"scan_date":{"title":"Scan Date","type":"string","description":"Date at which any number of scans were run.","format":"date-time"},"critical":{"title":"Critical","type":"integer","description":"Number of checks and monitors that failed with a Critical level alert."},"info":{"title":"Info","type":"integer","description":"Number of checks and monitors that passed."},"warning":{"title":"Warning","type":"integer","description":"Number of checks and monitors that failed with a Warning level alert."},"number_of_checks":{"title":"Number Of Checks","type":"integer","description":"Number of checks and monitors executed."},"percentage_passing_checks":{"title":"Percentage Passing Checks","type":"number","description":"Proportion of checks and monitors that passed."},"last_point_percent_change":{"title":"Last Point Percent Change","type":"number","description":"Percentage change from last point."},"percent_change_percentage_passing_checks":{"title":"Percent Change Percentage Passing Checks","type":"number","description":"\n        Percentage change of the last data health point compared to a rolling average over the last\n        3\n        "},"number_of_distinct_checks":{"title":"Number Of Distinct Checks","type":"integer","description":"Number of distinct checks and monitors executed."},"percentage_passing_distinct_passing_checks":{"title":"Percentage Passing Distinct Passing Checks","type":"number","description":"\n            This calculation divides the number of checks that passed by\n            the total number of checks evaluated. Soda aggregates the\n            score daily and, in the calculation, uses the results from the\n            latest check evaluations on that day.\n            "},"last_point_distinct_checks_percent_change":{"title":"Last Point Distinct Checks Percent Change","type":"number","description":"Percentage change from last previous result of percent_change_percentage_distinct_passing_checks"},"percent_change_percentage_distinct_passing_checks":{"title":"Percent Change Percentage Distinct Passing Checks","type":"number","description":"\n        Percentage change from the last percent_change_percentage_distinct_passing point compared to\n        a rolling average over the last\n        3\n        "}},"description":"Dataset health information containing counts of passing or failing checks (warning or critical) per scan date."},"PaginatedResult":{"title":"PaginatedResult","required":["total","page","size"],"type":"object","properties":{"total":{"title":"Total","type":"integer"},"page":{"title":"Page","type":"integer"},"size":{"title":"Size","type":"integer"}},"description":"Pydantic model for a basic paginated result with pagination info."},"NoContentError":{"title":"NoContentError","type":"object","properties":{"resource":{"title":"Resource","type":"string","description":"Name of the resource. Usually the same string as the endpoint."},"data":{"title":"Data","type":"array","items":{"type":"object"},"description":"Generic data payload from the query. Should be overidden with a more specific pydandic model.","default":[]},"detail":{"title":"Detail","type":"string","default":"No results for the requested data. Since the data is pre-processed in batches it might be that the data you are looking for has not yet been processed. You can check when the last refresh took place by using the /last_etl_refresh_info endpoint. If you think this is a bug and you should be getting results, get in touch with us."}},"description":"Response Schema of a NoContent Error"},"HTTPValidationError":{"title":"HTTPValidationError","type":"object","properties":{"detail":{"title":"Detail","type":"array","items":{"$ref":"#/components/schemas/ValidationError"}}}},"ValidationError":{"title":"ValidationError","required":["loc","msg","type"],"type":"object","properties":{"loc":{"title":"Location","type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"}]}},"msg":{"title":"Message","type":"string"},"type":{"title":"Error Type","type":"string"}}}}},"paths":{"/quality/dataset_health":{"post":{"tags":["Quality"],"summary":"Dataset health [Paginated]","description":"This endpoint provides you with a daily measure of the health of each of your datasets. Soda calculates a dataset's\nhealth based on the number of checks that pass during a scan. In calculating health, this endpoint returns an\naggregation of the pass results from multiple scans on the same day.\n\nUsage\n-----\nUse this endpoint to get review the health of your datasets, and to see a high-level view of the more granular\ninformation that the `/check_results` endpoint provides.\n\nUse this endpoint in conjunction with the `/datasets` endpoint as the latter adds information about each\ndataset.\n\nMultiple `dataset_ids` are allowed per request, and use the `from_datetime` parameter to optimize performance.\n\nUse the datasets endpoint to first get a list of available datasets along with their IDs, then issue separate\nqueries one dataset at a time.\n\nKeep the number of potentially parallel queries that you make to this endpoint small as they can face rate\nlimitations or poor performance.\n\nReturns\n-------\nAn object of type `DatasetHealthResult` containing an array of `DatasetHealthData`\n\nFind details about the response objects in the **Schemas** section or by\nunfurling the response details.","operationId":"dataset_health_quality_dataset_health_post","requestBody":{"content":{"application/json":{"schema":{"title":"Request Body","allOf":[{"$ref":"#/components/schemas/DatasetHealthRequest"}],"default":{"page":1,"size":400}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetHealthResult","title":"Response Dataset Health Quality Dataset Health Post","anyOf":[{"$ref":"#/components/schemas/DatasetHealthResult"},{"$ref":"#/components/schemas/PaginatedResult"}]}}}},"202":{"description":"Successful request but no data was returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoContentError"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}}}
```
