> For the complete documentation index, see [llms.txt](https://docs.flxbl.io/flxbl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flxbl.io/flxbl/sfp-server/api-reference/repository-dora.md).

# Repository / DORA

## Get consolidated DORA dashboard metrics for a repository

> Returns all DORA (DevOps Research and Assessment) dashboard metrics with predefined time ranges. Includes PR metrics, validation metrics, deploy metrics by environment, build metrics, release metrics, install metrics, apex test metrics, and workflow duration metrics. Results are cached based on the time range type.

```json
{"openapi":"3.0.0","info":{"title":"sfp server","version":"51.40.2"},"security":[{"access-token":[]}],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}},"schemas":{"DashboardMetricsResponseDto":{"type":"object","properties":{"meta":{"description":"Response metadata","allOf":[{"$ref":"#/components/schemas/DashboardMetricsMetaDto"}]},"metrics":{"description":"Dashboard metrics data","allOf":[{"$ref":"#/components/schemas/DashboardMetricsDataDto"}]}},"required":["meta","metrics"]},"DashboardMetricsMetaDto":{"type":"object","properties":{"range":{"type":"string","enum":["this_week","last_week","this_month","last_month","this_quarter","last_quarter","this_year","last_year","custom"],"description":"Time range type"},"rangeLabel":{"type":"string","description":"Human-readable range label"},"start":{"type":"string","description":"Range start (ISO 8601)"},"end":{"type":"string","description":"Range end (ISO 8601)"},"repositoryIdentifier":{"type":"string","description":"Repository identifier"},"environment":{"type":"string","description":"Environment filter (if applied)"},"generatedAt":{"type":"string","description":"Response generation timestamp"},"cached":{"type":"boolean","description":"Whether result was served from cache"},"queryDurationMs":{"type":"number","description":"Query execution time in milliseconds"}},"required":["range","rangeLabel","start","end","repositoryIdentifier","generatedAt","cached","queryDurationMs"]},"DashboardMetricsDataDto":{"type":"object","properties":{"pr":{"description":"Pull request metrics","allOf":[{"$ref":"#/components/schemas/PRMetricsDto"}]},"validation":{"description":"Validation metrics","allOf":[{"$ref":"#/components/schemas/ValidationMetricsDto"}]},"deploy":{"description":"Deployment metrics","allOf":[{"$ref":"#/components/schemas/DeployMetricsDto"}]},"build":{"description":"Build metrics","allOf":[{"$ref":"#/components/schemas/BuildMetricsDto"}]},"release":{"description":"Release metrics","allOf":[{"$ref":"#/components/schemas/ReleaseMetricsDto"}]},"snapshotTestRelease":{"description":"Release outcomes for snapshot and test environments","allOf":[{"$ref":"#/components/schemas/SnapshotTestReleaseMetricsDto"}]},"nonReleaseFailures":{"description":"Release failures for dev, snapshot, and test environments","allOf":[{"$ref":"#/components/schemas/NonReleaseFailureMetricsDto"}]},"install":{"description":"Install metrics","allOf":[{"$ref":"#/components/schemas/InstallMetricsDto"}]},"workflow":{"description":"Workflow duration metrics","allOf":[{"$ref":"#/components/schemas/WorkflowMetricsDto"}]}},"required":["pr","validation","deploy","build","release","snapshotTestRelease","nonReleaseFailures","install","workflow"]},"PRMetricsDto":{"type":"object","properties":{"turnaroundTime":{"description":"PR turnaround time metrics","allOf":[{"$ref":"#/components/schemas/DurationMetricDto"}]},"filesImpacted":{"type":"object","description":"Average files impacted per PR"},"opened":{"description":"Number of PRs opened","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"validationRuns":{"description":"Number of validation runs","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]}},"required":["turnaroundTime","filesImpacted","opened","validationRuns"]},"DurationMetricDto":{"type":"object","properties":{"avg":{"type":"number","description":"Average duration in milliseconds"},"p95":{"type":"number","description":"95th percentile duration in milliseconds"},"unit":{"type":"string","description":"Unit of measurement"}},"required":["avg","unit"]},"CountMetricDto":{"type":"object","properties":{"count":{"type":"number","description":"Count value"}},"required":["count"]},"ValidationMetricsDto":{"type":"object","properties":{"duration":{"description":"Validation duration metrics","allOf":[{"$ref":"#/components/schemas/DurationMetricDto"}]},"succeeded":{"description":"Successful validations","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"failed":{"description":"Failed validations","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"scheduled":{"description":"Scheduled validations","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"successRate":{"type":"number","description":"Success rate (0-1)"}},"required":["duration","succeeded","failed","scheduled","successRate"]},"DeployMetricsDto":{"type":"object","properties":{"byEnvironment":{"type":"object","description":"Deploy metrics grouped by environment"},"totals":{"description":"Aggregate totals across all environments","allOf":[{"$ref":"#/components/schemas/DeployTotalsDto"}]}},"required":["byEnvironment","totals"]},"DeployTotalsDto":{"type":"object","properties":{"scheduled":{"type":"number","description":"Total scheduled deploys"},"succeeded":{"type":"number","description":"Total successful deploys"},"failed":{"type":"number","description":"Total failed deploys"},"successRate":{"type":"number","description":"Overall success rate (0-1)"}},"required":["scheduled","succeeded","failed","successRate"]},"BuildMetricsDto":{"type":"object","properties":{"succeeded":{"description":"Successful builds","allOf":[{"$ref":"#/components/schemas/BuildSucceededDto"}]},"failed":{"description":"Failed builds","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"scheduled":{"description":"Scheduled builds","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"avgCreationTime":{"description":"Average package creation time","allOf":[{"$ref":"#/components/schemas/MetricValueDto"}]},"successRate":{"type":"number","description":"Success rate (0-1)"}},"required":["succeeded","failed","scheduled","avgCreationTime","successRate"]},"BuildSucceededDto":{"type":"object","properties":{"count":{"type":"number","description":"Count value"},"byPackage":{"type":"object","description":"Breakdown by package name"}},"required":["count"]},"MetricValueDto":{"type":"object","properties":{"value":{"type":"number","description":"Metric value"},"unit":{"type":"string","description":"Unit of measurement"}},"required":["value"]},"ReleaseMetricsDto":{"type":"object","properties":{"scheduled":{"description":"Scheduled releases","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"succeeded":{"description":"Successful releases","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"failed":{"description":"Failed releases","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"avgDuration":{"description":"Average release duration","allOf":[{"$ref":"#/components/schemas/MetricValueDto"}]},"avgPackagesPerRelease":{"type":"number","description":"Average packages per release"},"successRate":{"type":"number","description":"Success rate (0-1)"}},"required":["scheduled","succeeded","failed","avgDuration","avgPackagesPerRelease","successRate"]},"SnapshotTestReleaseMetricsDto":{"type":"object","properties":{"succeeded":{"description":"Successful releases to snapshot or test environments","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"failed":{"description":"Failed releases to snapshot or test environments","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]}},"required":["succeeded","failed"]},"NonReleaseFailureMetricsDto":{"type":"object","properties":{"failed":{"description":"Failed releases outside release-category environments","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]}},"required":["failed"]},"InstallMetricsDto":{"type":"object","properties":{"scheduled":{"description":"Scheduled installs","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"succeeded":{"description":"Successful installs","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"failed":{"description":"Failed installs","allOf":[{"$ref":"#/components/schemas/CountMetricDto"}]},"avgDuration":{"description":"Average install duration","allOf":[{"$ref":"#/components/schemas/MetricValueDto"}]},"successRate":{"type":"number","description":"Success rate (0-1)"}},"required":["scheduled","succeeded","failed","avgDuration","successRate"]},"WorkflowMetricsDto":{"type":"object","properties":{"validation":{"description":"Validation workflow metrics","allOf":[{"$ref":"#/components/schemas/WorkflowDurationMetricsDto"}]},"build":{"description":"Build workflow metrics","allOf":[{"$ref":"#/components/schemas/WorkflowDurationMetricsDto"}]},"release":{"description":"Release workflow metrics","allOf":[{"$ref":"#/components/schemas/WorkflowDurationMetricsDto"}]}},"required":["validation","build","release"]},"WorkflowDurationMetricsDto":{"type":"object","properties":{"avgDuration":{"type":"number","description":"Average workflow duration in ms"},"p95":{"type":"number","description":"95th percentile duration in ms"},"count":{"type":"number","description":"Number of workflow runs"}},"required":["avgDuration","count"]}}},"paths":{"/sfp/api/repository/dora/dashboard":{"get":{"operationId":"DoraController_getDashboardMetrics","summary":"Get consolidated DORA dashboard metrics for a repository","description":"Returns all DORA (DevOps Research and Assessment) dashboard metrics with predefined time ranges. Includes PR metrics, validation metrics, deploy metrics by environment, build metrics, release metrics, install metrics, apex test metrics, and workflow duration metrics. Results are cached based on the time range type.","parameters":[{"name":"repositoryIdentifier","required":true,"in":"query","description":"Repository identifier in format owner/repo","schema":{"type":"string"}},{"name":"range","required":true,"in":"query","description":"Time range for metrics","schema":{"enum":["this_week","last_week","this_month","last_month","this_quarter","last_quarter","this_year","last_year","custom"],"type":"string"}},{"name":"start","required":false,"in":"query","description":"Start timestamp (Unix seconds) - required for custom range","schema":{"type":"number"}},{"name":"end","required":false,"in":"query","description":"End timestamp (Unix seconds) - required for custom range","schema":{"type":"number"}},{"name":"environment","required":false,"in":"query","description":"Filter by environment/targetorg","schema":{"type":"string"}},{"name":"forceRefresh","required":false,"in":"query","description":"Force refresh - bypass cache and fetch fresh data","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"description":"Dashboard metrics retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardMetricsResponseDto"}}}},"400":{"description":"Invalid request parameters"},"403":{"description":"Forbidden - Requires role: member, owner, application"}},"tags":["Repository / DORA"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.flxbl.io/flxbl/sfp-server/api-reference/repository-dora.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
