Athenian metrics API

The metrics API from Athenian — 7 operation(s) for metrics.

Operations 7

POST /metrics/code_bypassing_prs Measure the amount of code that was pushed outside of pull requests. #
POST /metrics/code_checks Calculate metrics on continuous integration runs, such as GitHub Actions, Jenkins, Circle, etc. #
POST /metrics/deployments Calculate metrics on deployments submitted by `/events/deployments`. #
POST /metrics/developers Calculate metrics over developer activities. #
POST /metrics/jira Calculate metrics over JIRA issue activities. #
POST /metrics/pull_requests Calculate linear metrics over PRs. #
POST /metrics/releases Calculate linear metrics over releases. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/athenian-metrics-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

athenian-metrics-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: admin@athenian.co
    name: the administrator by email
  description: 'Server version: {{ server_version }} built on {{ build_date }} @ [{{ commit }}](https://github.com/athenianco/athenian-api/commit/{{ commit }})


    Origin GitHub repository: [athenianco/api-spec](https://github.com/athenianco/api-spec).


    Authorization persists between sessions. Marks:

    * 🛡️ endpoint requires account admin privileges.

    * 👤 endpoint only works with JWT authentication.

    <details>

    <summary>List of common server errors.</summary>

    * __500__ endpoint crashed. We reported the incident to Sentry and will fix it soon! Please include the value of `instance` in the response if you contact the support. Repeating the request will not help, most probably.

    * __501__ some functions are missing, either because they are not implemented yet or a non-critical runtime dependency is not satisfied. Repeating the request will not help, guaranteed.

    * __502__ server crashed badly, either due to a memory access violation in native code or running out of memory. We reported this incident to Sentry and will fix it soon! Try repeating the request.

    * __503__ server has not fully launched yet, e.g. hasn''t connected to the database; server is shutting down; we are experiencing a partial outage. Try repeating the request.

    * __504__ endpoint took too much time and was interrupted. We reported the incident to Sentry and will see how to improve the performance. Repeating the request will not help, most probably.

    </details>'
  license:
    name: CC-BY-4.0
  title: '{{ title }} Metrics API'
  version: 2.1.86
servers:
- description: '{{ server_description }} - {{ server_url }}'
  url: '{{ server_url }}/v1'
tags:
- name: metrics
paths:
  /metrics/code_bypassing_prs:
    post:
      operationId: calc_code_bypassing_prs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CodeFilter'
        description: Query for measuring the amount of code that was pushed outside of pull requests.
        required: true
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeasuredCodeBypassingPRs'
          description: Calculated metrics.
        400:
          $ref: '#/components/responses/InvalidRequestErrorResponse'
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to access the specified repositories on behalf of the specified account.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified account does not exist or the user is not a member.
        422:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSourceDataError'
          description: The account's installation has not finished yet.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: Measure the amount of code that was pushed outside of pull requests.
      tags:
      - metrics
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.metrics_controller
  /metrics/code_checks:
    post:
      operationId: calc_metrics_code_checks
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CodeCheckMetricsRequest'
        description: Select the check runs of interest and the metrics to calculate.
        required: true
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculatedCodeCheckMetrics'
          description: Calculated metrics.
        400:
          $ref: '#/components/responses/InvalidRequestErrorResponse'
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to access the specified repositories on behalf of the specified account.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified account does not exist or the user is not a member.
        422:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSourceDataError'
          description: The account's installation has not finished yet.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: Calculate metrics on continuous integration runs, such as GitHub Actions, Jenkins, Circle, etc.
      tags:
      - metrics
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.metrics_controller
  /metrics/deployments:
    post:
      operationId: calc_metrics_deployments
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeploymentMetricsRequest'
        description: Select the deployments of interest and the metrics to calculate.
        required: true
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculatedDeploymentMetrics'
          description: Calculated metrics.
        400:
          $ref: '#/components/responses/InvalidRequestErrorResponse'
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to access the specified repositories on behalf of the specified account.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified account does not exist or the user is not a member.
        422:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSourceDataError'
          description: The account's installation has not finished yet.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: Calculate metrics on deployments submitted by `/events/deployments`.
      tags:
      - metrics
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.metrics_controller
  /metrics/developers:
    post:
      operationId: calc_metrics_developers
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeveloperMetricsRequest'
        description: Query for selecting developers and measured activities.
        required: true
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculatedDeveloperMetrics'
          description: Calculated metrics.
        400:
          $ref: '#/components/responses/InvalidRequestErrorResponse'
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to access the specified repositories on behalf of the specified account.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified account does not exist or the user is not a member.
        422:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSourceDataError'
          description: The account's installation has not finished yet.
        424:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MissingSettingsError'
          description: One or more logical repositories miss the release settings.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: Calculate metrics over developer activities.
      tags:
      - metrics
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.metrics_controller
  /metrics/jira:
    post:
      operationId: calc_metrics_jira_linear
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JIRAMetricsRequest'
        description: Query for selecting JIRA issues and measured activities.
        required: true
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculatedJIRAMetrics'
          description: Calculated metrics.
        400:
          $ref: '#/components/responses/InvalidRequestErrorResponse'
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to access the specified repositories on behalf of the specified account.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified account does not exist or the user is not a member.
        422:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSourceDataError'
          description: The account's installation has not finished yet.
        424:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MissingSettingsError'
          description: One or more logical repositories miss the release settings.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: Calculate metrics over JIRA issue activities.
      tags:
      - metrics
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.jira_controller
  /metrics/pull_requests:
    post:
      operationId: calc_metrics_prs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PullRequestMetricsRequest'
        description: Desired metric definitions.
        required: true
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculatedPullRequestMetrics'
          description: Calculated metrics.
        400:
          $ref: '#/components/responses/InvalidRequestErrorResponse'
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to calculate metrics on behalf of the specified account.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified account does not exist or the user is not a member.
        422:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSourceDataError'
          description: No data is available to calculate metrics for the given repositories.
        424:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MissingSettingsError'
          description: One or more logical repositories miss the release settings.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: Calculate linear metrics over PRs.
      tags:
      - metrics
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.metrics_controller
  /metrics/releases:
    post:
      operationId: calc_metrics_releases
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReleaseMetricsRequest'
        description: Desired metric definitions.
        required: true
        x-body-name: body
      responses:
        200:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculatedReleaseMetrics'
          description: Calculated metrics.
        400:
          $ref: '#/components/responses/InvalidRequestErrorResponse'
        403:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The user is forbidden to calculate metrics on behalf of the specified account.
        404:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericError'
          description: The specified account does not exist or the user is not a member.
        422:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSourceDataError'
          description: No data is available to calculate metrics for the given repositories.
        424:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MissingSettingsError'
          description: One or more logical repositories miss the release settings.
      security:
      - bearerAuth: []
      - apiKeyAuth: []
      summary: Calculate linear metrics over releases.
      tags:
      - metrics
      x-codegen-request-body-name: body
      x-openapi-router-controller: athenian.api.controllers.metrics_controller
components:
  schemas:
    WithBothJiraAndJiragroups:
      description: An object having both jira and jiragroups fields.
      properties:
        jira: {}
        jiragroups: {}
      required:
      - jira
      - jiragroups
      type: object
    CalculatedPullRequestMetrics:
      additionalProperties: false
      description: 'Response from `/metrics/pull_requests`. The dates start from `date_from`

        and end earlier or equal to `date_to`.

        The order of the items is *not* guaranteed to match any expectations.

        '
      example:
        metrics:
        - pr-lead-time
        - pr-wip-time
        date_from: 2020-01-23
        date_to: 2020-01-24
        granularities:
        - day
        exclude_inactive: true
        calculated:
        - values:
          - date: 2020-01-23
            values:
            - 0.8008282
            - 0.8008282
            confidence_mins:
            - 0.5
            - 0.5
            confidence_maxs:
            - 1.0
            - 1.0
            confidence_scores:
            - 75
            - 75
          - date: 2020-01-24
            values:
            - 0.8008282
            - 0.8008282
            confidence_mins:
            - 0.5
            - 0.5
            confidence_maxs:
            - 1.0
            - 1.0
            confidence_scores:
            - 75
            - 75
          for:
            with:
              author:
              - github.com/vmarkovtsev
              - github.com/dpordomingo
            repositories:
            - github.com/athenianco/athenian-webapp
            - github.com/athenianco/athenian-api
        - values:
          - date: 2020-01-23
            values:
            - 0.8008282
            - 0.8008282
            confidence_mins:
            - 0.5
            - 0.5
            confidence_maxs:
            - 1.0
            - 1.0
            confidence_scores:
            - 75
            - 75
          - date: 2020-01-24
            values:
            - 0.8008282
            - 0.8008282
            confidence_mins:
            - 0.5
            - 0.5
            confidence_maxs:
            - 1.0
            - 1.0
            confidence_scores:
            - 75
            - 75
          for:
            with:
              author:
              - github.com/vmarkovtsev
              - ggithub.com/dpordomingo
            repositories:
            - github.com/athenianco/athenian-webapp
            - github.com/athenianco/athenian-api
      properties:
        calculated:
          description: Values of the requested metrics through time.
          items:
            $ref: '#/components/schemas/CalculatedPullRequestMetricsItem'
          type: array
        metrics:
          description: Repeats `PullRequestMetricsRequest.metrics`.
          items:
            $ref: '#/components/schemas/PullRequestMetricID'
          type: array
        date_from:
          description: Repeats `PullRequestMetricsRequest.date_from`.
          format: date
          type: string
        date_to:
          description: Repeats `PullRequestMetricsRequest.date_to`.
          format: date
          type: string
        timezone:
          $ref: '#/components/schemas/TimeZone'
        granularities:
          $ref: '#/components/schemas/Granularities'
        quantiles:
          $ref: '#/components/schemas/Quantiles'
        exclude_inactive:
          description: Repeats `PullRequestMetricsRequest.exclude_inactive`.
          type: boolean
      required:
      - calculated
      - date_from
      - date_to
      - exclude_inactive
      - granularities
      - metrics
      type: object
    CodeFilter:
      additionalProperties: false
      description: Filter for revealing code bypassing PRs.
      example:
        account: 1
        date_from: 2020-01-01
        date_to: 2020-03-01
        granularity: day
        in:
        - '{1}'
        - github.com/athenianco/athenian-webapp
        with_author:
        - github.com/vmarkovtsev
      properties:
        account:
          description: Session account ID.
          type: integer
        date_from:
          description: Commits must be made later than or equal to this date.
          format: date
          type: string
        date_to:
          description: Commits must be made earlier than or equal to this date.
          format: date
          type: string
        timezone:
          $ref: '#/components/schemas/TimeZone'
        in:
          $ref: '#/components/schemas/RepositorySet'
        with_author:
          $ref: '#/components/schemas/DeveloperSet'
        with_committer:
          $ref: '#/components/schemas/DeveloperSet'
        granularity:
          $ref: '#/components/schemas/Granularity'
        only_default_branch:
          description: 'Consider only commits that are accessible from the head of the default branch.

            For example, if your workflow includes PR-ing feature branches, you rebase and merge

            them and don''t delete afterward, `bypassing_prs` will report the commits in those

            feature branches unless you set `only_default_branch` to `true`.'
          type: boolean
      required:
      - account
      - date_from
      - date_to
      - granularity
      - in
      type: object
    RepositoryID:
      description: 'Repository name which uniquely identifies any repository in any service provider.

        The format matches the repository URL without the protocol part. No ".git" should be appended.

        We support a special syntax for repository sets: "{reposet id}" adds all the repositories

        from the given set.

        '
      example: github.com/athenianco/athenian-webapp
      type: string
    JIRAMetricID:
      description: 'Currently supported JIRA activity metrics.

        * `jira-open` - number of issues active by the end of the time interval.

        * `jira-resolved` - number of issues closed in the given time range.

        * `jira-raised` - number of issues reported in the given time range.

        * `jira-acknowledged` - number of issues that are "In Progress" or "Resolved". This number matches the issues considered to calculate `jira-acknowledge-time` before applying the quantiles.

        * `jira-acknowledged-q` - number of issues that are "In Progress" or "Resolved". This number matches the issues considered to calculate `jira-acknowledge-time` after applying the quantiles.

        * `jira-life-time` - Mean Life Time - the time between min(issue creation, work began) and max(issue resolution, fixes released).

        * `jira-life-time-below-threshold-ratio` - ratio of issues with a `jira-life-time` below the threshold, disregarding the quantiles. The default threshold is 5 days.

        * `jira-lead-time` - Mean Lead Time - the time between when the work began and max(issue resolution, fixes released).

        * `jira-lead-time-below-threshold-ratio` - ratio of issues with a `jira-lead-time` below the threshold, disregarding the quantiles. The default threshold is 5 days.

        * `jira-acknowledge-time` - Mean Acknowledge Time - the time between when the issue was created and the work began = `min(transitioned to "In Progress", PR created)`. It equals to 0 for retrofitted issues with PRs before their creation times.

        * `jira-acknowledge-time-below-threshold-ratio` - ratio of issues with a `jira-acknowledge-time` below the threshold, disregarding the quantiles. The default threshold is 3 days.

        * `jira-pr-lag-time` - the time between when the issue transitioned to "In Progress" and the first PR was created. It equals to 0 if the difference is negative or no PRs are mapped to the issue.

        * `jira-backlog-time` - the time between when the issue was created and transitioned to "In Progress".

        * `jira-resolution-rate` - ratio between the number of resolved issues to the number of raised issues.'
      enum:
      - jira-open
      - jira-resolved
      - jira-raised
      - jira-acknowledged
      - jira-acknowledged-q
      - jira-life-time
      - jira-life-time-below-threshold-ratio
      - jira-lead-time
      - jira-lead-time-below-threshold-ratio
      - jira-acknowledge-time
      - jira-acknowledge-time-below-threshold-ratio
      - jira-pr-lag-time
      - jira-backlog-time
      - jira-resolution-rate
      example: jira-resolved
      type: string
    DeploymentMetricsRequest:
      additionalProperties: false
      description: Request body of `/metrics/deployments`, the deployments selector.
      example:
        for:
        - repositories:
          - github.com/athenianco/athenian-webapp
          - github.com/athenianco/athenian-api
          withgroups:
          - pr_author:
            - github.com/se7entyse7en
            - github.com/vmarkovtsev
          jira:
            labels_include:
            - bug
        metrics:
        - dep-duration-successful
        - dep-success-ratio
        date_from: 2021-07-20
        date_to: 2021-10-07
        granularities:
        - all
        - 2 week
        account: 1
      properties:
        for:
          description: 'Sets of filters for which to calculate the metrics.

            The aggregation is `AND` between individual properties like `repositories` or `with`.

            The aggregation is `OR` inside each property.'
          items:
            $ref: '#/components/schemas/ForSetDeployments'
          type: array
        metrics:
          description: Requested metric identifiers.
          items:
            $ref: '#/components/schemas/DeploymentMetricID'
          type: array
        date_from:
          description: Date from when to start measuring the metrics.
          format: date
          type: string
        date_to:
          description: Date until which to measure the metrics.
          format: date
          type: string
        timezone:
          $ref: '#/components/schemas/TimeZone'
        granularities:
          $ref: '#/components/schemas/Granularities'
        quantiles:
          $ref: '#/components/schemas/Quantiles'
        account:
          description: Session account ID.
          type: integer
      required:
      - account
      - date_from
      - date_to
      - for
      - granularities
      - metrics
      type: object
    ForSetCodeChecks:
      additionalProperties: false
      description: 'Filters for `/metrics/code_checks` and `/histograms/code_checks`.

        Achieve the best performance by packing all your filters in a single `ForSetCodeChecks`

        instead of sending multiple `ForSetCodeChecks`-s. For example, use `repogroups` and `pushers`

        to request separate metrics for several repository sets and teams.

        '
      example:
        repositories:
        - github.com/athenianco/athenian-webapp
        - github.com/athenianco/athenian-api
        pushers:
        - github.com/vmarkovtsev
        - github.com/dpordomingo
        jira:
          labels_include:
          - bug
      properties:
        repositories:
          $ref: '#/components/schemas/RepositorySet'
        repogroups:
          $ref: '#/components/schemas/IndexedGroups'
        pushers:
          $ref: '#/components/schemas/CommitPushers'
        pusher_groups:
          description: 'Check runs must be triggered by commits authored by these people.

            We aggregate by each group so that you can request metrics of several teams at once.

            We treat `pushers` as another group, if specified.'
          items:
            $ref: '#/components/schemas/CommitPushers'
          type: array
        labels_include:
          description: At least one of these labels must be present in the checked PRs.
          items:
            type: string
          type: array
        labels_exclude:
          description: None of these labels must be present in each checked PR.
          items:
            type: string
          type: array
        jira:
          allOf:
          - description: Analyze only those check runs that belong to PRs mapped to JIRA issues that satisfy this filter.
          - $ref: '#/components/schemas/JIRAFilter'
        lines:
          description: Split by changed number of lines (inserted + removed) in pull requests.
          items:
            minimum: 0
            type: integer
          minItems: 2
          type: array
      required:
      - repositories
      type: object
    DeveloperMetricID:
      description: 'Currently supported developer metric types.

        * `dev-commits-pushed`: how many commits were pushed.

        * `dev-lines-changed`: how many lines were either inserted or removed in the pushed commits.

        * `dev-prs-created`: how many PRs were created.

        * `dev-prs-reviewed`: how many *distinct* PRs were reviewed (approved, rejected or neutral).

        * `dev-prs-merged`: how many PRs were merged by this developer. This is *not* how many authored PRs were merged!

        * `dev-releases`: how many releases were authored by this developer.

        * `dev-reviews`: how many reviews were submitted. One PR may have several reviews by the same developer! This value equals to the sum of `dev-review-approvals`, `dev-review-rejections` and `dev-review-neutrals`.

        * `dev-review-approvals`: how many approvals this developer submitted. One PR may have several approvals by the same developer!

        * `dev-review-rejections`: how many rejections this developer submitted. One PR may have several rejections by the same developer!

        * `dev-review-neutrals`: how many neutral ("comment") reviews this developer submitted. One PR may have several neutral reviews by the same developer!

        * `dev-pr-comments`: how many comments (both regular and review) this developer posted.

        * `dev-regular-pr-comments`: how many regular comments (not review suggestions!) this developer posted.

        * `dev-review-pr-comments`: how many review suggestions (summaries are not considered!) this developer posted.

        * `dev-active`: indicates whether this developer has made commits on more than X days during T days. `X / T = 0.2` at the moment.

        * `dev-active0`: indicates whether this developer has made at least one commit.

        * `dev-worked`: indicates whether this developer has shown any activity.'
      enum:
      - dev-commits-pushed
      - dev-lines-changed
      - dev-prs-created
      - dev-prs-reviewed
      - dev-prs-merged
      - dev-releases
      - dev-reviews
      - dev-review-approvals
      - dev-review-rejections
      - dev-review-neutrals
      - dev-pr-comments
      - dev-regular-pr-comments
      - dev-review-pr-comments
      - dev-active
      - dev-active0
      - dev-worked
      example: dev-prs-created
      type: string
    CalculatedDeveloperMetricsItem:
      additionalProperties: false
      description: Measured developer metrics for each `DeveloperMetricsRequest.for`. Each repository group maps to a distinct `CalculatedDeveloperMetricsItem`.
      example:
        values:
        - - date: 2020-01-23
            values:
            - 5
            - 10
        - - date: 2020-01-23
            values:
            - 20
            - 100
        for:
          repositories:
          - github.com/athenianco/athenian-webapp
          - github.com/athenianco/athenian-api
          developers:
          - github.com/vmarkovtsev
          - github.com/dpordomingo
        granularity: all
      properties:
        for:
          $ref: '#/components/schemas/ForSetDevelopers'
        granularity:
          $ref: '#/components/schemas/Granularity'
        values:
          description: The sequence matches `CalculatedDeveloperMetricsItem.for.developers`.
          items:
            description: The sequence steps from `date_from` till `date_to` by `granularity`.
            items:
              $ref: '#/components/schemas/CalculatedLinearMetricValues'
            type: array
          type: array
      required:
      - for
      - granularity
      - values
      type: object
    CalculatedLinearMetricValues:
      additionalProperties: false
      example:
        date: 2020-01-23
        values:
        - 0.8008282
        - 0.8008282
        confidence_mins:
        - 0.5
        - 0.5
        confidence_maxs:
        - 1.0
        - 1.0
        confidence_scores:
        - 75
        - 75
      properties:
        date:
          description: Where you should relate the metric value to on the time axis.
          format: date
          type: string
        values:
          description: Calculated metric values in the same order as `metrics`.
          items:
            oneOf:
            - type: number
            - $ref: '#/components/schemas/TimeDuration'
            - type: object
          type: array
        confidence_mins:
          description: Confidence interval @ p=0.8, minimum. The same order as `metrics`. It is optional because there can be exact metrics like "count open PRs per month".
          items:
            oneOf:
            - type:
              - number
              - 'null'
            - $ref: '#/components/schemas/TimeDuration'
          type: array
        confidence_maxs:
          description: Confidence interval @ p=0.8, maximum. The same order as `metrics`. It is optional because there can be exact metrics like "count open PRs per month".
          items:
            oneOf:
            - type:
              - number
              - 'null'
            - $ref: '#/components/schemas/TimeDuration'
          type: array
        confidence_scores:
          description: Confidence score from 0 (random guess) to 100 (very confident). The same order as `metrics`. May be `null` for exact metrics.
          items:
            type:
            - integer
            - 'null'
          type: array
      required:
      - date
      - values
      type: object
    CalculatedJIRAMetricValues:
      additionalProperties: false
      description: Calculated JIRA metrics for a specific granularity.
      example:
        granularity: 2 week
        values:
        - date: 2020-01-23
          values:
          - 0.8008282
          - 0.8008282
          confidence_mins:
          - 0.5
          - 0.5
          confidence_maxs:
          - 1.0
          - 1.0
          confidence_scores:
          - 75
          - 75
        - date: 2020-01-23
          values:
          - 0.8008282
          - 0.8008282
          confidence_mins:
          - 0.5
          - 0.5
        

# --- truncated at 32 KB (97 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/athenian/refs/heads/main/openapi/athenian-metrics-api-openapi.yml