> For the complete documentation index, see [llms.txt](https://help.swarmia.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.swarmia.com/settings/integrations/swarmia-apis/built-in-reports.md).

# Built In Reports

Pre-built reports that surface metrics from Swarmia. Each report endpoint returns rows with a fixed set of metrics, a schema describing its properties, and an optional summary row that aggregates across all rows.

Every built-in report request must include a `revision` query parameter. Revisions let us evolve report behavior without breaking existing integrations — pin a numeric revision for stable output, or pass `latest` to follow the newest revision for that report.

## Code metrics overview

> Overview of pull request metrics per team, mirroring the\
> \[Code metrics — Overview]\(<https://app.swarmia.com/metrics/code)\\>
> report in the app. Returns one row per matched team plus a\
> \`summaryRow\` aggregating across all of them.\
> \
> Durations (\`cycleTime\`, \`timeToFirstReview\`, \`mergeTime\`) are in\
> \*\*seconds\*\*. \`reviewRate\` is a percentage (0–100). The numeric\
> \`aggregate\` parameter controls how the duration and batch-size\
> metrics are aggregated.\
> \
> Supported revisions: \`1\`, \`2\` (\`latest\` is equivalent to \`2\`).\
> Revision 2 added the \`teamFte\` and \`mergedPrsByFte\` columns and\
> treats \`teamId\`/\`parentTeamId\` as comma-separated lists. In\
> revision 1, supplying \`teamId\` returns that team's child teams\
> only (the team itself is excluded from rows but still counted in\
> \`summaryRow\`).<br>

```json
{"openapi":"3.1.0","info":{"title":"Swarmia REST API","version":"1.0"},"tags":[{"name":"Built-in reports","description":"Pre-built reports that surface metrics from Swarmia. Each report\nendpoint returns rows with a fixed set of metrics, a schema\ndescribing its properties, and an optional summary row that\naggregates across all rows.\n\nEvery built-in report request must include a `revision` query\nparameter. Revisions let us evolve report behavior without breaking\nexisting integrations — pin a numeric revision for stable output, or\npass `latest` to follow the newest revision for that report.\n"}],"servers":[{"url":"https://app.swarmia.com/api/v1"}],"security":[{"bearerToken":[]}],"components":{"securitySchemes":{"bearerToken":{"type":"http","scheme":"bearer","description":"API token passed as `Authorization: Bearer <token>`.\nThe token must have the `entityQuery` scope enabled.\nTokens can be provisioned at https://app.swarmia.com/settings/api-tokens.\n"}},"parameters":{"output":{"name":"output","in":"query","description":"Response format.","schema":{"type":"string","enum":["json","csv"],"default":"json"}},"revision":{"name":"revision","in":"query","required":true,"description":"Report revision to serve. Use `latest` to request the highest\nsupported revision for this report. The served revision is echoed\nin the `X-Swarmia-Report-Revision` response header.\n\nThe deprecated `version` query parameter is accepted as an alias.\n","schema":{"type":"string"}},"timeframeStart":{"name":"timeframe.start","in":"query","required":true,"description":"Start of the reporting period (inclusive).","schema":{"type":"string","format":"date"}},"timeframeEnd":{"name":"timeframe.end","in":"query","required":true,"description":"End of the reporting period (inclusive).","schema":{"type":"string","format":"date"}},"timezone":{"name":"timezone","in":"query","description":"IANA timezone used to interpret the date-only `timeframe.start`\nand `timeframe.end` values and for time bucketing. Defaults to `UTC`.\n","schema":{"type":"string","default":"UTC"}},"teamId":{"name":"teamId","in":"query","description":"Comma-separated team UUIDs. Only these teams are included.\nUse either this or `parentTeamId`, not both. Omit both to\nreturn all teams.\n","schema":{"type":"string"}},"parentTeamId":{"name":"parentTeamId","in":"query","description":"Comma-separated parent-team UUIDs. Returns the children of these\nteams (not the parents themselves). Use the literal value `null`\n(or an empty value) to select only top-level teams (teams with no\nparent). Use either this or `teamId`, not both. Omit both to\nreturn all teams.\n","schema":{"type":"string"}},"aggregate":{"name":"aggregate","in":"query","description":"Numeric aggregation applied to the metrics. Affects every metric\nwhose schema entry reports a configurable `aggregate` (e.g.\n`cycleTime`, `changeLeadTimeAgg`). Metrics with a fixed aggregate\n(counts, rates) are unaffected. Defaults to `Avg`.\n","schema":{"type":"string","enum":["Sum","Avg","Min","Max","P99","P95","P90","P85","P80","P75","P50"],"default":"Avg"}}},"schemas":{"EntityReport_MetricsCode_Result":{"type":"object","required":["schema","rows"],"properties":{"schema":{"type":"object","description":"Describes each property in `rows`. Keys are property names,\nvalues carry a human-readable `title`, `description` and the\n`aggregate` used.\n","additionalProperties":{"$ref":"#/components/schemas/SchemaEntry"}},"rows":{"type":"array","items":{"allOf":[{"type":"object","required":["_key"],"properties":{"_key":{"$ref":"#/components/schemas/EntityReference_Team"}}},{"$ref":"#/components/schemas/MetricsCodeMetrics"}]}},"summaryRow":{"description":"Aggregate across all rows. Same metrics as a row, with `id` and `name` null.","allOf":[{"$ref":"#/components/schemas/MetricsCodeMetrics"}]}}},"SchemaEntry":{"type":"object","required":["title","description"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"aggregate":{"type":"string","description":"The aggregation function used (e.g. `CountDistinct`, `ArrayAggDistinct`)."}}},"EntityReference_Team":{"type":"object","description":"Teams represent your organization structure and are the owners of other entities like Issues and Pull requests.","required":["type","id","name"],"properties":{"type":{"type":"string","const":"Team"},"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"MetricsCodeMetrics":{"type":"object","description":"The code metrics shared by each row and the summary row.","required":["_key","cycleTime","reviewRate","timeToFirstReview","mergedCount","mergeTime","batchSize","contributorCount","averageInProgress","teamFte","mergedPrsByFte"],"properties":{"_key":{"$ref":"#/components/schemas/EntityReference_Team"},"id":{"type":["string","null"],"description":"Team's Swarmia ID. `null` in the summary row."},"name":{"type":["string","null"],"description":"Team name. `null` in the summary row."},"cycleTime":{"type":["number","null"],"description":"Aggregated pull request cycle time, in seconds. `null` when no data."},"reviewRate":{"type":["number","null"],"description":"Percentage (0–100) of merged PRs that were approved. `null` when no data."},"timeToFirstReview":{"type":["number","null"],"description":"Aggregated time waiting for the first review, in seconds. `null` when no data."},"mergedCount":{"type":"integer","description":"Number of merged pull requests."},"mergeTime":{"type":["number","null"],"description":"Aggregated time waiting to merge after approval, in seconds. `null` when no data."},"batchSize":{"type":["number","null"],"description":"Aggregated batch size (lines changed). `null` when no data."},"contributorCount":{"type":"integer","description":"Number of unique contributors."},"averageInProgress":{"type":["number","null"],"description":"Average number of pull requests in progress. Always an average, regardless of `aggregate`."},"teamFte":{"type":["number","null"],"description":"Average active developers (full-time equivalent). `null` when no FTE data."},"mergedPrsByFte":{"type":["number","null"],"description":"Merged pull requests per FTE. `null` when FTE is unavailable."}}},"EntityReport_Error":{"type":"object","properties":{"error":{"type":"boolean"},"message":{"type":"string"}}}}},"paths":{"/reports/metrics/code":{"get":{"tags":["Built-in reports"],"operationId":"getReportsMetricsCode","summary":"Code metrics overview","description":"Overview of pull request metrics per team, mirroring the\n[Code metrics — Overview](https://app.swarmia.com/metrics/code)\nreport in the app. Returns one row per matched team plus a\n`summaryRow` aggregating across all of them.\n\nDurations (`cycleTime`, `timeToFirstReview`, `mergeTime`) are in\n**seconds**. `reviewRate` is a percentage (0–100). The numeric\n`aggregate` parameter controls how the duration and batch-size\nmetrics are aggregated.\n\nSupported revisions: `1`, `2` (`latest` is equivalent to `2`).\nRevision 2 added the `teamFte` and `mergedPrsByFte` columns and\ntreats `teamId`/`parentTeamId` as comma-separated lists. In\nrevision 1, supplying `teamId` returns that team's child teams\nonly (the team itself is excluded from rows but still counted in\n`summaryRow`).\n","parameters":[{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/revision"},{"$ref":"#/components/parameters/timeframeStart"},{"$ref":"#/components/parameters/timeframeEnd"},{"$ref":"#/components/parameters/timezone"},{"$ref":"#/components/parameters/teamId"},{"$ref":"#/components/parameters/parentTeamId"},{"$ref":"#/components/parameters/aggregate"},{"name":"pullRequestFilter","in":"query","description":"Aggregate data only from pull requests matching the given\nfilter. Uses the same entity-filter format as the Swarmia UI's\nsimilarly named query parameter.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Swarmia-Report-Revision":{"description":"The report revision that was served.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityReport_MetricsCode_Result"}},"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Invalid or unknown parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityReport_Error"}}}},"401":{"description":"Missing or invalid API token."}}}}}}
```

## DORA metrics overview

> Overview of DORA metrics, mirroring the DORA metrics — Overview\
> report in the app. All metrics are restricted to production\
> deployments within the requested timeframe.\
> \
> Durations (\`changeLeadTimeAgg\`, \`releaseTimeAgg\`,\
> \`timeToRecoveryAgg\`) are in \*\*seconds\*\*. \`changeFailureRateAgg\`\
> is a rate. The numeric \`aggregate\` parameter controls how the\
> duration metrics are aggregated.\
> \
> The report runs in one of two modes:\
> \
> \- \*\*Organization mode\*\* (no \`teamId\`/\`parentTeamId\`): returns a\
> &#x20; single row keyed by the organization, aggregating \*\*all\*\*\
> &#x20; production deployments — including those not owned by any team.\
> \- \*\*Team mode\*\* (\`teamId\` or \`parentTeamId\` given): returns one\
> &#x20; row per matched team, scoped to deployments owned by that team,\
> &#x20; plus a \`summaryRow\`.\
> \
> Supported revisions: \`1\`, \`2\` (\`latest\` is equivalent to \`2\`).\
> Revision 2 treats \`teamId\`/\`parentTeamId\` as comma-separated\
> lists and adds \`parentTeamId\` support. In revision 1, supplying\
> \`teamId\` returns that team's child teams only (the team itself is\
> excluded from rows but still counted in \`summaryRow\`).<br>

```json
{"openapi":"3.1.0","info":{"title":"Swarmia REST API","version":"1.0"},"tags":[{"name":"Built-in reports","description":"Pre-built reports that surface metrics from Swarmia. Each report\nendpoint returns rows with a fixed set of metrics, a schema\ndescribing its properties, and an optional summary row that\naggregates across all rows.\n\nEvery built-in report request must include a `revision` query\nparameter. Revisions let us evolve report behavior without breaking\nexisting integrations — pin a numeric revision for stable output, or\npass `latest` to follow the newest revision for that report.\n"}],"servers":[{"url":"https://app.swarmia.com/api/v1"}],"security":[{"bearerToken":[]}],"components":{"securitySchemes":{"bearerToken":{"type":"http","scheme":"bearer","description":"API token passed as `Authorization: Bearer <token>`.\nThe token must have the `entityQuery` scope enabled.\nTokens can be provisioned at https://app.swarmia.com/settings/api-tokens.\n"}},"parameters":{"output":{"name":"output","in":"query","description":"Response format.","schema":{"type":"string","enum":["json","csv"],"default":"json"}},"revision":{"name":"revision","in":"query","required":true,"description":"Report revision to serve. Use `latest` to request the highest\nsupported revision for this report. The served revision is echoed\nin the `X-Swarmia-Report-Revision` response header.\n\nThe deprecated `version` query parameter is accepted as an alias.\n","schema":{"type":"string"}},"timeframeStart":{"name":"timeframe.start","in":"query","required":true,"description":"Start of the reporting period (inclusive).","schema":{"type":"string","format":"date"}},"timeframeEnd":{"name":"timeframe.end","in":"query","required":true,"description":"End of the reporting period (inclusive).","schema":{"type":"string","format":"date"}},"timezone":{"name":"timezone","in":"query","description":"IANA timezone used to interpret the date-only `timeframe.start`\nand `timeframe.end` values and for time bucketing. Defaults to `UTC`.\n","schema":{"type":"string","default":"UTC"}},"teamId":{"name":"teamId","in":"query","description":"Comma-separated team UUIDs. Only these teams are included.\nUse either this or `parentTeamId`, not both. Omit both to\nreturn all teams.\n","schema":{"type":"string"}},"parentTeamId":{"name":"parentTeamId","in":"query","description":"Comma-separated parent-team UUIDs. Returns the children of these\nteams (not the parents themselves). Use the literal value `null`\n(or an empty value) to select only top-level teams (teams with no\nparent). Use either this or `teamId`, not both. Omit both to\nreturn all teams.\n","schema":{"type":"string"}},"aggregate":{"name":"aggregate","in":"query","description":"Numeric aggregation applied to the metrics. Affects every metric\nwhose schema entry reports a configurable `aggregate` (e.g.\n`cycleTime`, `changeLeadTimeAgg`). Metrics with a fixed aggregate\n(counts, rates) are unaffected. Defaults to `Avg`.\n","schema":{"type":"string","enum":["Sum","Avg","Min","Max","P99","P95","P90","P85","P80","P75","P50"],"default":"Avg"}}},"schemas":{"EntityReport_MetricsDora_Result":{"type":"object","required":["schema","rows"],"properties":{"schema":{"type":"object","description":"Describes each property in `rows`. Keys are property names,\nvalues carry a human-readable `title`, `description` and the\n`aggregate` used.\n","additionalProperties":{"$ref":"#/components/schemas/SchemaEntry"}},"rows":{"type":"array","items":{"allOf":[{"type":"object","required":["_key"],"properties":{"_key":{"description":"Row identifier. A `Team` reference in team mode, or an\n`Organization` reference in organization mode.\n","oneOf":[{"$ref":"#/components/schemas/EntityReference_Team"},{"$ref":"#/components/schemas/EntityReference_Organization"}]}}},{"$ref":"#/components/schemas/MetricsDoraMetrics"}]}},"summaryRow":{"description":"Aggregate across all rows. Same metrics as a row, with `id` and `name` null.","allOf":[{"$ref":"#/components/schemas/MetricsDoraMetrics"}]}}},"SchemaEntry":{"type":"object","required":["title","description"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"aggregate":{"type":"string","description":"The aggregation function used (e.g. `CountDistinct`, `ArrayAggDistinct`)."}}},"EntityReference_Team":{"type":"object","description":"Teams represent your organization structure and are the owners of other entities like Issues and Pull requests.","required":["type","id","name"],"properties":{"type":{"type":"string","const":"Team"},"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"EntityReference_Organization":{"type":"object","description":"The organization that the API token belongs to.","required":["type","id"],"properties":{"type":{"type":"string","const":"Organization"},"id":{"type":"string","format":"uuid"},"name":{"type":["string","null"]}}},"MetricsDoraMetrics":{"type":"object","description":"The DORA metrics shared by each row and the summary row. In\norganization mode, `name` is absent (only the organization `id`\nis present).\n","required":["_key","changeLeadTimeAgg","releaseTimeAgg","deploymentCount","timeToRecoveryAgg","changeFailureRateAgg"],"properties":{"_key":{"$ref":"#/components/schemas/EntityReference_Team"},"changeLeadTimeAgg":{"type":["number","null"],"description":"Aggregated change lead time, in seconds. `null` when no data."},"releaseTimeAgg":{"type":["number","null"],"description":"Aggregated release (time to deploy) time, in seconds. `null` when no data."},"deploymentCount":{"type":"integer","description":"Number of production deployments in the timeframe."},"timeToRecoveryAgg":{"type":["number","null"],"description":"Aggregated time for failed deployments to recover, in seconds. `null` when no data."},"changeFailureRateAgg":{"type":["number","null"],"description":"Rate of failed deployments. `null` when no data."}}},"EntityReport_Error":{"type":"object","properties":{"error":{"type":"boolean"},"message":{"type":"string"}}}}},"paths":{"/reports/metrics/dora":{"get":{"tags":["Built-in reports"],"operationId":"getReportsMetricsDora","summary":"DORA metrics overview","description":"Overview of DORA metrics, mirroring the DORA metrics — Overview\nreport in the app. All metrics are restricted to production\ndeployments within the requested timeframe.\n\nDurations (`changeLeadTimeAgg`, `releaseTimeAgg`,\n`timeToRecoveryAgg`) are in **seconds**. `changeFailureRateAgg`\nis a rate. The numeric `aggregate` parameter controls how the\nduration metrics are aggregated.\n\nThe report runs in one of two modes:\n\n- **Organization mode** (no `teamId`/`parentTeamId`): returns a\n  single row keyed by the organization, aggregating **all**\n  production deployments — including those not owned by any team.\n- **Team mode** (`teamId` or `parentTeamId` given): returns one\n  row per matched team, scoped to deployments owned by that team,\n  plus a `summaryRow`.\n\nSupported revisions: `1`, `2` (`latest` is equivalent to `2`).\nRevision 2 treats `teamId`/`parentTeamId` as comma-separated\nlists and adds `parentTeamId` support. In revision 1, supplying\n`teamId` returns that team's child teams only (the team itself is\nexcluded from rows but still counted in `summaryRow`).\n","parameters":[{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/revision"},{"$ref":"#/components/parameters/timeframeStart"},{"$ref":"#/components/parameters/timeframeEnd"},{"$ref":"#/components/parameters/timezone"},{"$ref":"#/components/parameters/teamId"},{"$ref":"#/components/parameters/parentTeamId"},{"$ref":"#/components/parameters/aggregate"}],"responses":{"200":{"description":"Successful response.","headers":{"X-Swarmia-Report-Revision":{"description":"The report revision that was served.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityReport_MetricsDora_Result"}},"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Invalid or unknown parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityReport_Error"}}}},"401":{"description":"Missing or invalid API token."}}}}}}
```

## Organization AI assistant overview

> Overview of AI assistant usage in the organization.\
> \
> Supported revisions: \`1\` (\`latest\` is equivalent).<br>

```json
{"openapi":"3.1.0","info":{"title":"Swarmia REST API","version":"1.0"},"tags":[{"name":"Built-in reports","description":"Pre-built reports that surface metrics from Swarmia. Each report\nendpoint returns rows with a fixed set of metrics, a schema\ndescribing its properties, and an optional summary row that\naggregates across all rows.\n\nEvery built-in report request must include a `revision` query\nparameter. Revisions let us evolve report behavior without breaking\nexisting integrations — pin a numeric revision for stable output, or\npass `latest` to follow the newest revision for that report.\n"}],"servers":[{"url":"https://app.swarmia.com/api/v1"}],"security":[{"bearerToken":[]}],"components":{"securitySchemes":{"bearerToken":{"type":"http","scheme":"bearer","description":"API token passed as `Authorization: Bearer <token>`.\nThe token must have the `entityQuery` scope enabled.\nTokens can be provisioned at https://app.swarmia.com/settings/api-tokens.\n"}},"parameters":{"output":{"name":"output","in":"query","description":"Response format.","schema":{"type":"string","enum":["json","csv"],"default":"json"}},"revision":{"name":"revision","in":"query","required":true,"description":"Report revision to serve. Use `latest` to request the highest\nsupported revision for this report. The served revision is echoed\nin the `X-Swarmia-Report-Revision` response header.\n\nThe deprecated `version` query parameter is accepted as an alias.\n","schema":{"type":"string"}}},"schemas":{"EntityReport_AiAdoptionUsersAndLicenses_Result":{"type":"object","required":["schema","rows"],"properties":{"schema":{"type":"object","description":"Describes each property in `rows`. Keys are property names,\nvalues carry things like a human-readable `title`, `description`, etc.\n","additionalProperties":{"$ref":"#/components/schemas/SchemaEntry"}},"summaryRow":{"description":"Aggregate across all rows in the response. Same shape as\neach row but without `_key`.\n","type":"object","required":["enabledAiUsers","activeAiUsers","enabledAiUserCount","activeAiUserCount","contributorCount","weeklyActiveAvg","enabledRate"],"properties":{"enabledAiUsers":{"type":"array","items":{"$ref":"#/components/schemas/EntityReference_Author"}},"activeAiUsers":{"type":"array","items":{"$ref":"#/components/schemas/EntityReference_Author"}},"enabledAiUserCount":{"type":"integer"},"activeAiUserCount":{"type":"integer"},"contributorCount":{"type":"integer"},"weeklyActiveAvg":{"type":["number","null"]},"enabledRate":{"type":["number","null"]}}},"rows":{"type":"array","items":{"type":"object","required":["_key","enabledAiUsers","activeAiUsers","enabledAiUserCount","activeAiUserCount","contributorCount","weeklyActiveAvg","enabledRate"],"properties":{"_key":{"$ref":"#/components/schemas/EntityReference_Team"},"enabledAiUsers":{"type":"array","description":"Authors with an AI assistant license during the period.","items":{"$ref":"#/components/schemas/EntityReference_Author"}},"activeAiUsers":{"type":"array","description":"Authors who actively used an AI assistant during the period. Empty array when none.","items":{"$ref":"#/components/schemas/EntityReference_Author"}},"enabledAiUserCount":{"type":"integer","description":"Count of licensed authors. `0` when no data."},"activeAiUserCount":{"type":"integer","description":"Count of active authors. `0` when no data."},"contributorCount":{"type":"integer","description":"Count of team members (scoped by `activeContributorsOnly`). `0` when no data."},"weeklyActiveAvg":{"type":["number","null"],"description":"Average weekly active users. `null` when incalculable (e.g. no snapshot data)."},"enabledRate":{"type":["number","null"],"description":"Percentage of members with a license (0–100). `null` when incalculable."}}}}}},"SchemaEntry":{"type":"object","required":["title","description"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"aggregate":{"type":"string","description":"The aggregation function used (e.g. `CountDistinct`, `ArrayAggDistinct`)."}}},"EntityReference_Author":{"type":"object","description":"Authors are the people or bots that can be attributed different kinds of work items (commits, pull requests, reviews). Authors can be linked to multiple identities across different systems (GitHub, Slack, Jira, etc.)","required":["type","id","name","email"],"properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"Author"},"name":{"type":["string","null"]},"email":{"type":["string","null"]}}},"EntityReference_Team":{"type":"object","description":"Teams represent your organization structure and are the owners of other entities like Issues and Pull requests.","required":["type","id","name"],"properties":{"type":{"type":"string","const":"Team"},"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"EntityReport_Error":{"type":"object","properties":{"error":{"type":"boolean"},"message":{"type":"string"}}}}},"paths":{"/reports/ai/adoption/users-and-licenses":{"get":{"tags":["Built-in reports"],"operationId":"getReportsAiAdoptionUsersAndLicenses","summary":"Organization AI assistant overview","description":"Overview of AI assistant usage in the organization.\n\nSupported revisions: `1` (`latest` is equivalent).\n","parameters":[{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/revision"},{"name":"timeframe.start","in":"query","required":true,"description":"Start of the reporting period (inclusive).","schema":{"type":"string","format":"date"}},{"name":"timeframe.end","in":"query","required":true,"description":"End of the reporting period (inclusive).","schema":{"type":"string","format":"date"}},{"name":"timezone","in":"query","description":"IANA timezone used to interpret the date-only `timeframe.start`\nand `timeframe.end` values and for time bucketing. Defaults to `UTC`.\n","schema":{"type":"string","default":"UTC"}},{"name":"teamId","in":"query","description":"Comma-separated team UUIDs. Only these teams are included.\nUse either this or `parentTeamId`, not both. Omit both to\nreturn all teams.\n","schema":{"type":"string"}},{"name":"parentTeamId","in":"query","description":"Comma-separated parent-team UUIDs. Returns children of these\nteams. Use the literal value `null` (or an empty value) to\nselect only top-level teams (teams with no parent).\nUse either this or `teamId`, not both. Omit both to return\nall teams.\n","schema":{"type":"string"}},{"name":"activeContributorsOnly","in":"query","description":"When `true` (default), only count team members who opened at\nleast one PR during the time period. When `false`, count all\nteam members.\n","schema":{"type":"boolean","default":true}},{"name":"aiAssistants","in":"query","description":"Comma-separated list of AI assistants to include. Omit to include all.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response.","headers":{"X-Swarmia-Report-Revision":{"description":"The report revision that was served.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityReport_AiAdoptionUsersAndLicenses_Result"}},"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Invalid or unknown parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityReport_Error"}}}},"401":{"description":"Missing or invalid API token."}}}}}}
```


---

# 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:

```
GET https://help.swarmia.com/settings/integrations/swarmia-apis/built-in-reports.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
