---
title: "List changes across an organization"
method: GET
path: "/api/v1/organizations/{org_slug}/changes"
tags: ["organizations"]
---

# List changes across an organization

`GET /api/v1/organizations/{org_slug}/changes`

## Request

- Base URL: `https://composal.com` (the document declares no server; this is the origin it was published from)
- URL: `https://composal.com/api/v1/organizations/{org_slug}/changes`
- Auth: HTTP bearer

## Path parameters

- `org_slug` string, required

## Query parameters

- `source` 'all' | 'vex' | 'github'
- `q` string
- `state` 'open' | 'needs_review' | 'changes_requested' | 'approved' | 'ready_to_land' | 'landed' | 'abandoned' | 'folded' | 'orphaned' | 'needs_restack'
- `repo` string
- `author` string
- `mine` boolean
- `tips_only` boolean
- `awaiting_review` boolean
- `target` string
- `stack` string
- `sort` 'submitted' | 'updated' | 'number'
- `direction` 'asc' | 'desc'
- `view` 'list' | 'stack' | 'author' | 'created_time'
- `number` integer
- `label` string
- `page` integer
- `group_pages` string

## Response `200`

One page of the organization change queue, flat or grouped

- object
  - `github_sync` GithubReviewSync
    - `error` string, nullable, required
    - `complete` boolean, required
    - `updated_at` string, nullable, required
    - `team_reviews_complete` boolean, required
  - `result` union, required: What this page is a page of. `kind` states what the top-level pagination describes: changes in the list view, group keys in a grouped view.
    - VcsOrganizationChangeListResult: The flat change queue. `pagination` counts changes.
      - `kind` 'list', required
      - `changes` union[], required
        - union
          - VcsOrganizationChangeSummary
            - `kind` 'change'
            - `github` GithubReviewSummary
              - …
            - `id` string, required
            - `public_id` string, required
            - `number` integer, required
            - `title` string, required
            - `status` 'open' | 'landed' | 'abandoned' | 'folded', required
            - `lifecycle` 'open' | 'waiting' | 'needs_attention' | 'landed' | 'abandoned', required: Index badge. Stored status stays open while a change is in an active landing request (waiting) or a current ejected request (needs_attention). Filters still use status.
            - `primary_status` 'needs_review' | 'review_requested' | 'changes_requested' | 'approved' | 'ready_to_land' | 'waiting_to_land' | 'landing' | 'landed' | 'abandoned' | 'orphaned' | 'needs_restack', required
            - `review_status` 'no_review' | 'review_requested' | 'approved' | 'changes_requested', required
            - `pending_reviewers` VcsUserSummary[], required
              - …
            - `checks_status` 'absent' | 'passing' | 'failing' | 'pending', required
            - `mergeability` 'mergeable' | 'conflicts' | 'unknown' | 'not_applicable', required
            - `target_branch` string, required
            - `base` union, required
              - …
            - `repository_slug` string, required
            - `submitted_at` string, date-time, required
            - `submitted_at_label` string, required: Relative time since submission
            - `updated_at` string, date-time, required
            - `updated_at_label` string, required: Relative time since the last update
            - `conversation_count` integer, required
            - `repo` object, nullable
              - …
            - `author` VcsActorSummary, required: Human user summary or organization automation identity. Automations have kind and slug, without email or picture_url.
              - …
            - `group` VcsChangeGroupRef, nullable
              - …
            - `stack` VcsStackSummary
              - …
            - `stack_position` object, nullable, required
              - …
            - `labels` VcsLabel[]
              - …
          - GithubReviewSummary
            - `kind` 'github_pr', required
            - `id` string, required
            - `number` integer, required
            - `title` string, required
            - `state` 'open' | 'closed' | 'merged', required
            - `draft` boolean, required
            - `github_repository_id` string, required
            - `repository_full_name` string, required
            - `head_sha` string, nullable, required
            - `base_branch` string, nullable, required
            - `github_url` string, required
            - `internal_path` string, required
            - `submitted_at` string, required
            - `updated_at` string, required
            - `updated_at_label` string, required
            - `author` object, required
              - …
            - `labels` object[], required
              - …
            - `conversation_count` integer, required
            - `stack` object, nullable, required
              - …
            - `head_branch` string, nullable, required
      - `pagination` VcsPagination, required: Pagy's own page data. Navigate with `previous` and `next` rather than by adding to `page`, which the server may have resolved down to `last`.
        - `page` integer, required
        - `limit` integer, required
        - `count` integer, required
        - `count_label` string, required
        - `last` integer, required
        - `from` integer: Position of this page's first row in the whole scope. `0` when the page holds no rows — an empty scope, or a `page` past `last` — so treat `0` as "no range" rather than as a row position.
        - `to` integer: Position of this page's last row in the whole scope. `0` when the page holds no rows, for the same reason as `from`.
        - `previous` integer, nullable
        - `next` integer, nullable
        - `series` union[], required
          - union
            - integer
            - string
    - VcsOrganizationChangeGroupedResult: The queue divided into groups. `pagination` counts group keys, not changes.
      - `kind` 'grouped', required
      - `grouping` 'stack' | 'author' | 'created_time', required
      - `groups` VcsOrganizationChangeGroup[], required
        - `key` string, required: Stable public key for this group — a stack code or `unstacked`, a user public id, or a period name. Echo it back in `group_pages` to move this group alone.
        - `subject` union, required: What names one group. The `kind` matches the active grouping, except for the pinned `unstacked` remainder under stack grouping.
          - object
            - `kind` 'stack', required
            - `stack` object, required
              - …
          - object
            - `kind` 'unstacked', required
          - object
            - `kind` 'author', required
            - `user` VcsActorSummary, required: Human user summary or organization automation identity. Automations have kind and slug, without email or picture_url.
              - …
          - object
            - `kind` 'created_time', required
            - `period` 'past_hour' | 'past_day' | 'past_week' | 'older', required
            - `started_at` string, date-time, nullable, required: Null for `older`, whose range has no lower bound.
            - `ended_at` string, date-time, nullable, required: Null for `past_hour`, whose range is open above so a future timestamp is still reported.
        - `changes` union[], required: One page of the matching changes in this group. Stack groups keep graph order, from tip to root; every other grouping uses the requested change sort.
          - union
            - VcsOrganizationChangeSummary
              - …
            - GithubReviewSummary
              - …
        - `pagination` VcsPagination, required: Pagy's own page data. Navigate with `previous` and `next` rather than by adding to `page`, which the server may have resolved down to `last`.
          - `page` integer, required
          - `limit` integer, required
          - `count` integer, required
          - `count_label` string, required
          - `last` integer, required
          - `from` integer: Position of this page's first row in the whole scope. `0` when the page holds no rows — an empty scope, or a `page` past `last` — so treat `0` as "no range" rather than as a row position.
          - `to` integer: Position of this page's last row in the whole scope. `0` when the page holds no rows, for the same reason as `from`.
          - `previous` integer, nullable
          - `next` integer, nullable
          - `series` union[], required
            - union
              - …
      - `pagination` VcsPagination, required: Pagy's own page data. Navigate with `previous` and `next` rather than by adding to `page`, which the server may have resolved down to `last`.
        - `page` integer, required
        - `limit` integer, required
        - `count` integer, required
        - `count_label` string, required
        - `last` integer, required
        - `from` integer: Position of this page's first row in the whole scope. `0` when the page holds no rows — an empty scope, or a `page` past `last` — so treat `0` as "no range" rather than as a row position.
        - `to` integer: Position of this page's last row in the whole scope. `0` when the page holds no rows, for the same reason as `from`.
        - `previous` integer, nullable
        - `next` integer, nullable
        - `series` union[], required
          - union
            - integer
            - string
  - `counts` object, required: Counts for each state across the active non-state filters.
    - `all` integer, required
    - `open` integer, required
    - `needs_review` integer, required
    - `changes_requested` integer, required
    - `approved` integer, required
    - `ready_to_land` integer, required
    - `landed` integer, required
    - `abandoned` integer, required
    - `folded` integer, required
    - `orphaned` integer, required
    - `needs_restack` integer, required
  - `filters` object, required
    - `repos` object[], required
      - `slug` string, required
      - `name` string, required
    - `labels` VcsLabelFacet[], required
      - `slug` string, required
      - `name` string, required
      - `changes_count` integer, required
    - `authors` VcsActorSummary[], required
      - `id` string, required
      - `name` string
      - `email` string
      - `picture_url` string
      - `kind` 'automation'
      - `slug` string

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `422`: Unprocessable entity
- `502`: Bad gateway

---

[API](https://skmtc.dev/composal/apis/vex-api.md) - [All operations](https://skmtc.dev/composal/apis/vex-api/llms.txt) - [OpenAPI document](https://skmtc.dev/composal/apis/vex-api/revisions/74298a24e040?raw)
