openapi: 3.2.0
info:
  title: Argos API
  version: 2.0.0
  contact:
    name: Argos Support
    url: https://argos-ci.com
    email: contact@argos-ci.com
  termsOfService: https://argos-ci.com/terms
x-gitbook-mcp-url: https://mcp.argos-ci.com
externalDocs:
  description: Argos API reference
  url: https://argos-ci.com/docs/api-reference
servers:
  - url: https://api.argos-ci.com/v2
    description: API Endpoint
tags:
  - name: Authentication
    description: Exchange CI and CLI credentials for an Argos project token. Use
      these endpoints to obtain the bearer token that authenticates every other
      request.
    x-page-icon: key
  - name: Users
    description: Retrieve information about the user authenticated by the current
      personal access token.
    x-page-icon: user
  - name: Projects
    description: Retrieve project metadata, either by slug or for the project tied
      to the current token.
    x-page-icon: folder-open
  - name: Analytics
    description: Retrieve account-level build and screenshot metrics over time.
    x-page-icon: chart-no-axes-combined
  - name: Builds
    description: Create, finalize, update, and inspect visual testing builds,
      including their screenshot diffs. This is the core of the visual testing
      workflow.
    x-page-icon: images
  - name: Reviews
    description: Submit, list, and dismiss reviews to approve or reject the changes
      captured in a build.
    x-page-icon: clipboard-check
  - name: Tests
    description: Inspect a test's flakiness — how often it changed and how
      erratically — list the changes that keep coming back, and ignore the ones
      that are only noise.
    x-page-icon: flask
  - name: Comments
    description: "Collaborate on builds with threaded comments: post and edit
      comments, react with emojis, resolve threads, and manage notification
      subscriptions."
    x-page-icon: comments
  - name: Deployments
    description: Create, finalize, and resolve deployments to publish and serve
      project artifacts.
    x-page-icon: rocket
  - name: Automations
    description: Run actions when a build event matches your conditions — post to
      Slack, Microsoft Teams or Discord when a build completes or is reviewed.
    x-page-icon: workflow
  - name: Media
    description: Upload standalone images and videos, with no build or test run
      behind them, and get back a shareable URL plus ready-to-paste Markdown.
      Built for embedding a screenshot or a screen recording in the pull request
      an agent just opened.
    x-page-icon: image-play
  - name: Members
    description: "Manage who is on a team and what they can reach: list members,
      change their role, remove them, and send or cancel invitations."
    x-page-icon: users
security:
  - projectToken: []
paths:
  /accounts/{accountSlug}:
    get:
      operationId: getAccount
      summary: Get an account
      description: Retrieve an account with its plan and current-period usage. Use it
        to watch screenshot consumption against the plan before it runs over.
      tags:
        - Users
      security:
        - personalAccessToken: []
        - oauth2:
            - profile
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the account to retrieve.
          required: true
          description: Slug of the account to retrieve.
      responses:
        "200":
          description: The account with its plan and usage
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountDetails"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    patch:
      operationId: updateAccount
      summary: Update a team's defaults
      description: Change the role given to users that join a team through its invite
        link or a verified email domain. Requires administrator access to the
        team.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                defaultUserLevel:
                  $ref: "#/components/schemas/TeamDefaultUserLevel"
              required:
                - defaultUserLevel
      responses:
        "200":
          description: The updated account
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountDetails"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /accounts/{accountSlug}/analytics:
    get:
      operationId: getAccountAnalytics
      summary: Get account analytics
      description: Retrieve build and screenshot metrics for an account. The personal
        access token must be scoped to the account.
      tags:
        - Analytics
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the account to retrieve analytics for.
          required: true
          description: Slug of the account to retrieve analytics for.
        - in: query
          name: from
          schema:
            description: Start of the analytics period, as an ISO 8601 datetime.
            type: string
            format: date-time
            pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
          required: true
          description: Start of the analytics period, as an ISO 8601 datetime.
        - in: query
          name: to
          schema:
            description: End of the analytics period, as an ISO 8601 datetime. Defaults to
              the current time.
            type: string
            format: date-time
            pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
          description: End of the analytics period, as an ISO 8601 datetime. Defaults to
            the current time.
        - in: query
          name: groupBy
          schema:
            type: string
            enum:
              - day
              - week
              - month
            description: Time period used to group each series data point.
          required: true
          description: Time period used to group each series data point.
        - in: query
          name: projectNames
          schema:
            description: Optional project name filter. Pass one value or repeat the
              parameter for multiple projects.
            anyOf:
              - type: string
                minLength: 1
                maxLength: 100
                pattern: ^[a-zA-Z0-9_\-.]+$
              - type: array
                items:
                  type: string
                  minLength: 1
                  maxLength: 100
                  pattern: ^[a-zA-Z0-9_\-.]+$
          description: Optional project name filter. Pass one value or repeat the
            parameter for multiple projects.
      responses:
        "200":
          description: Account analytics
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountAnalytics"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /accounts/{accountSlug}/projects:
    get:
      operationId: listProjects
      summary: List an account's projects
      description: List the projects of an account that are visible to the
        authenticated user, most recently active first. Results are paginated.
        The token must be scoped to the account.
      tags:
        - Projects
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the account to list projects for.
          required: true
          description: Slug of the account to list projects for.
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
      responses:
        "200":
          description: List of projects
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/Project"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /accounts/{accountSlug}/members:
    get:
      operationId: listAccountMembers
      summary: List a team's members
      description: List the members of a team, with their role. Requires administrator
        access to the team.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team to list members for.
          required: true
          description: Slug of the team to list members for.
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
        - in: query
          name: search
          schema:
            description: Match members on their name, slug, or email address.
            type: string
          description: Match members on their name, slug, or email address.
        - in: query
          name: levels
          schema:
            description: Restrict to the given roles, comma-separated (e.g. `owner,member`).
            type: string
          description: Restrict to the given roles, comma-separated (e.g. `owner,member`).
        - in: query
          name: orderBy
          schema:
            description: Ordering of the results. Defaults to `date`, most recently added
              first.
            type: string
            enum:
              - date
              - name-asc
              - name-desc
          description: Ordering of the results. Defaults to `date`, most recently added
            first.
      responses:
        "200":
          description: List of team members
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/TeamMember"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /accounts/{accountSlug}/members/{userId}:
    patch:
      operationId: setAccountMemberLevel
      summary: Change a member's role
      description: Change the role of an existing team member. Requires administrator
        access to the team.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
        - in: path
          name: userId
          schema:
            type: string
            description: Identifier of the user to act on — the `user.id` returned by
              `listAccountMembers`, which is the user's account id.
          required: true
          description: Identifier of the user to act on — the `user.id` returned by
            `listAccountMembers`, which is the user's account id.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                level:
                  $ref: "#/components/schemas/TeamUserLevel"
              required:
                - level
      responses:
        "200":
          description: The updated membership
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TeamMember"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: removeAccountMember
      summary: Remove a member
      description: Remove a user from a team. Requires administrator access to the
        team. The last member of a team cannot be removed; removing the
        second-to-last one promotes the remaining member to owner.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
        - in: path
          name: userId
          schema:
            type: string
            description: Identifier of the user to act on — the `user.id` returned by
              `listAccountMembers`, which is the user's account id.
          required: true
          description: Identifier of the user to act on — the `user.id` returned by
            `listAccountMembers`, which is the user's account id.
      responses:
        "204":
          description: Member removed
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /accounts/{accountSlug}/invites:
    get:
      operationId: listAccountInvites
      summary: List pending invites
      description: List the pending invitations to join a team, most recent first.
        Requires administrator access to the team.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
        - in: query
          name: search
          schema:
            description: Match invites on their email address.
            type: string
          description: Match invites on their email address.
      responses:
        "200":
          description: List of pending invites
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/TeamInvite"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    post:
      operationId: createAccountInvites
      summary: Invite members
      description: Invite people to a team by email. Each invited address receives an
        email with a link to join. Re-inviting an address that already has a
        pending invite refreshes it. Requires administrator access to the team.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                members:
                  minItems: 1
                  maxItems: 100
                  type: array
                  items:
                    type: object
                    properties:
                      email:
                        type: string
                        format: email
                        pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      level:
                        $ref: "#/components/schemas/TeamUserLevel"
                    required:
                      - email
                      - level
                  description: The people to invite.
              required:
                - members
      responses:
        "201":
          description: The invites that were created
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TeamInvite"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /accounts/{accountSlug}/invites/{inviteId}:
    delete:
      operationId: cancelAccountInvite
      summary: Cancel an invite
      description: Cancel a pending invitation, invalidating its link. Requires
        administrator access to the team.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
        - in: path
          name: inviteId
          schema:
            type: string
            description: Identifier of the invite, as returned when listing them.
          required: true
          description: Identifier of the invite, as returned when listing them.
      responses:
        "204":
          description: Invite cancelled
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /accounts/{accountSlug}/domains:
    get:
      operationId: listTeamDomains
      summary: List a team's email domains
      description: List the email domains a team is open to. Requires administrator
        access to the team.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
      responses:
        "200":
          description: The team's email domains
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/TeamDomain"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    post:
      operationId: addTeamDomain
      summary: Open a team to an email domain
      description: Add an email domain to a team, so anyone signing up with a verified
        address on it joins automatically. Requires administrator access to the
        team, and you must yourself hold a verified address on the domain — a
        team can only be opened to a domain its administrator demonstrably
        belongs to. Public email providers are refused.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                domain:
                  type: string
                  minLength: 1
                  description: The email domain, e.g. `acme.com`.
              required:
                - domain
      responses:
        "201":
          description: The domain the team is now open to
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TeamDomain"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /accounts/{accountSlug}/domains/{domain}:
    delete:
      operationId: removeTeamDomain
      summary: Close a team to an email domain
      description: Remove an email domain from a team. New sign-ups on it no longer
        join automatically; members who already joined stay. Requires
        administrator access to the team.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
        - in: path
          name: domain
          schema:
            type: string
            description: The email domain to remove.
          required: true
          description: The email domain to remove.
      responses:
        "204":
          description: Domain removed
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /accounts/{accountSlug}/invite-link/reset:
    post:
      operationId: resetAccountInviteLink
      summary: Reset the invite link
      description: Rotate the team's shared invite link, invalidating the previous
        one. Anyone holding the old link can no longer use it to join. Requires
        administrator access to the team.
      tags:
        - Members
      security:
        - personalAccessToken: []
        - oauth2:
            - account:admin
      parameters:
        - in: path
          name: accountSlug
          schema:
            type: string
            minLength: 1
            description: Slug of the team.
          required: true
          description: Slug of the team.
      responses:
        "200":
          description: The new invite link
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InviteLink"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media:
    post:
      operationId: createMedia
      summary: Create a media upload
      description: >-
        Register a standalone image or video and receive a signed target to
        upload it to.


        Uploading takes three calls:


        1. `POST /media` — declare the file and get back an `upload` target.

        2. `POST` the file to `upload.url` as `multipart/form-data`, appending
        every entry of `upload.fields` **before** the `file` part.

        3. `POST /media/{mediaId}/finalize` — confirm the bytes landed.


        When `upload` comes back `null`, Argos already holds this exact file and
        steps 2 and 3 are unnecessary.


        Pass `prNumber` when the pull request already exists, or `branch` when
        it does not. A media uploaded against a branch is **staged**: it has its
        share URL immediately, and the moment a pull request opens for that
        branch Argos attaches it and posts the comment — nothing has to come
        back and connect the two.


        The `argos media upload` CLI command does all of this in one step.
      tags:
        - Media
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - media:write
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: "File name, used for display and as the Markdown alt text. Also the
                    media's identity: uploading the same name on the same pull
                    request adds a version rather than creating a second media."
                  examples:
                    - before.png
                    - checkout-flow.mp4
                state:
                  anyOf:
                    - type: string
                      enum:
                        - before
                        - after
                      description: Which half of a before/after pair this media is, so the two can be
                        shown side by side and compared. Inferred from a file
                        name ending in `-before` or `-after`.
                    - type: "null"
                description:
                  description: Prose shown under the media in the managed pull request comment.
                  anyOf:
                    - type: string
                      maxLength: 2000
                    - type: "null"
                contentType:
                  description: Content type of the media file
                  type: string
                size:
                  type: integer
                  minimum: 1
                  maximum: 9007199254740991
                  description: Size of the file in bytes. Checked against your plan's limit before
                    the upload is signed.
                hash:
                  type: string
                  pattern: ^[A-Fa-f0-9]{64}$
                  description: "SHA-256 of the file contents, hex encoded. Uploading the same file
                    twice is free: Argos recognizes the hash and skips the
                    transfer, and byte-identical bytes do not create a new
                    version."
                visibility:
                  anyOf:
                    - type: string
                      enum:
                        - team
                        - public
                      description: Who can open the media share page. `team` requires an Argos session
                        with access to the owning account; `public` only
                        requires the share URL.
                    - type: "null"
                project:
                  description: Project to upload to, as `owner/project`. Required with a personal
                    access token; ignored with a project token, which already
                    identifies its project.
                  examples:
                    - acme/web
                  anyOf:
                    - type: string
                    - type: "null"
                prNumber:
                  description: "Pull request this media belongs to. Argos maintains a single
                    comment on it listing every media uploaded, editing it in
                    place rather than posting a new one each time — attaching a
                    media to a pull request and showing it there are the same
                    act, not two. Also part of the media's identity: uploading
                    the same name again on this pull request adds a version."
                  anyOf:
                    - type: integer
                      minimum: 1
                      maximum: 9007199254740991
                    - type: "null"
                branch:
                  anyOf:
                    - type: string
                      minLength: 1
                      maxLength: 255
                      description: "Branch this media belongs to. Upload against a branch when the
                        pull request does not exist yet: the media is staged
                        until one opens for that branch, and Argos publishes it
                        — and posts the comment — on its own at that point. No
                        GitHub connection is needed to name a branch."
                      examples:
                        - feat/checkout
                    - type: "null"
              required:
                - name
                - contentType
                - size
                - hash
      responses:
        "201":
          description: The registered media and where to upload it
          content:
            application/json:
              schema:
                type: object
                properties:
                  media:
                    $ref: "#/components/schemas/Media"
                  upload:
                    anyOf:
                      - $ref: "#/components/schemas/MediaUploadTarget"
                      - type: "null"
                    description: Where to send the bytes, or `null` when Argos already holds this
                      exact file — in which case the media is ready and nothing
                      needs uploading.
                required:
                  - media
                  - upload
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media/{mediaId}:
    patch:
      operationId: updateMedia
      summary: Update a staged media
      description: >-
        Change a staged media's name, description or branch.


        Staged media only. A media's name and branch are its identity — what
        decides whether the next upload of that name is a new version or a new
        media, and which pull request will publish it — and once it is published
        that identity is what the pull request comment is built from and what a
        reviewer's comments hang off. Editing it there would rewrite history
        rather than correct a staged media.


        Omitted fields are left alone. `description` and `branch` accept `null`
        to clear them; `name` is required and has no cleared state. Clearing a
        staged media's branch leaves it attached to nothing, so no pull request
        will ever publish it.
      tags:
        - Media
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - media:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
          required: true
          description: The media ID
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: "File name, used for display and as the Markdown alt text. Also the
                    media's identity: uploading the same name on the same pull
                    request adds a version rather than creating a second media."
                  examples:
                    - before.png
                    - checkout-flow.mp4
                description:
                  description: Prose shown under the media in the managed pull request comment.
                  anyOf:
                    - type: string
                      maxLength: 2000
                    - type: "null"
                branch:
                  anyOf:
                    - type: string
                      minLength: 1
                      maxLength: 255
                      description: "Branch this media belongs to. Upload against a branch when the
                        pull request does not exist yet: the media is staged
                        until one opens for that branch, and Argos publishes it
                        — and posts the comment — on its own at that point. No
                        GitHub connection is needed to name a branch."
                      examples:
                        - feat/checkout
                    - type: "null"
      responses:
        "200":
          description: The updated media
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Media"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    get:
      operationId: getMedia
      summary: Get a media
      description: Retrieve a single media by its ID, including its share URL and
        ready-to-paste Markdown.
      tags:
        - Media
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - media:read
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
          required: true
          description: The media ID
      responses:
        "200":
          description: Media details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Media"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: deleteMedia
      summary: Delete a media
      description: Delete a media and the files behind it. Any share link or pull
        request embed pointing at it stops working immediately.
      tags:
        - Media
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - media:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
          required: true
          description: The media ID
      responses:
        "204":
          description: Media deleted
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media/{mediaId}/versions:
    get:
      operationId: listMediaVersions
      summary: List a media's versions
      description: >-
        A media's most recent uploaded versions, newest first, up to 100.


        A separate call because it is rarely needed: a media usually has one
        version, and the media itself already carries the newest one flattened
        onto it. Check `versionCount` first — at 1 there is nothing here you do
        not already have.


        When you do need it, it is because a comment carries the
        `mediaVersionId` it was written against. A pin describes a spot on
        *those* bytes, so feedback written on an earlier upload has to be read
        against that upload — match the id here to get its file.
      tags:
        - Media
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - media:read
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
          required: true
          description: The media ID
      responses:
        "200":
          description: The media's versions, newest first
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/MediaVersion"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media/{mediaId}/finalize:
    post:
      operationId: finalizeMedia
      summary: Finalize a media upload
      description: "Confirm that a media version's bytes have been uploaded. Argos
        reads the object back to check the file is what it claims to be, records
        an image's dimensions, bills it to the screenshot meter, and updates the
        managed pull request comment. There is no processing step: the media is
        usable the moment this returns."
      tags:
        - Media
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - media:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
          required: true
          description: The media ID
      responses:
        "200":
          description: The finalized media
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Media"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media/{mediaId}/comments:
    get:
      operationId: listMediaComments
      summary: List the comments on a media
      description: List the comments on an uploaded media, oldest first. A comment may
        carry an `anchor` pinning it to a point on the image, which is how
        reviewers mark up a screenshot.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:read
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
      responses:
        "200":
          description: Comments, oldest first. Replies carry a threadId pointing at their
            root comment.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    post:
      operationId: createMediaComment
      summary: Post a comment (or reply) on a media
      description: Post a comment on an uploaded media. Start a new thread, or reply
        to an existing one with `threadId`. Pass an `anchor` to pin the comment
        to a point on the image — normalized coordinates, so it survives any
        scaling — which is how a reviewer marks up a screenshot.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                body:
                  anyOf:
                    - type: string
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                  description: Comment content. Either Markdown text or the JSON representation of
                    a rich-text document.
                threadId:
                  description: Public ID of the root comment to reply to (e.g. `comment-xf23d`).
                  type: string
                anchor:
                  oneOf:
                    - type: object
                      properties:
                        type:
                          type: string
                          const: point
                        x:
                          type: number
                        y:
                          type: number
                      required:
                        - type
                        - x
                        - y
                    - type: object
                      properties:
                        type:
                          type: string
                          const: lines
                        from:
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                        to:
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                      required:
                        - type
                        - from
                        - to
                  description: Where on the referenced screenshot diff the comment points. A point
                    uses normalized (0–1) coordinates; lines is a 1-based
                    inclusive range.
                  type: object
              required:
                - body
      responses:
        "201":
          description: Comment created successfully — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media/{mediaId}/comments/{commentId}:
    get:
      operationId: getMediaComment
      summary: Get a single comment on a media
      description: Retrieve a single comment on a media by its ID.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:read
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    patch:
      operationId: updateMediaComment
      summary: Update a comment on a media
      description: Update the body of a comment on a media. Only the comment's author
        can edit it.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                body:
                  anyOf:
                    - type: string
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                  description: Comment content. Either Markdown text or the JSON representation of
                    a rich-text document.
              required:
                - body
      responses:
        "200":
          description: Comment updated successfully — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: deleteMediaComment
      summary: Delete a comment on a media
      description: Delete a comment on a media. Only the comment's author can delete it.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Comment deleted successfully — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media/{mediaId}/comments/{commentId}/reactions:
    post:
      operationId: addMediaCommentReaction
      summary: Add an emoji reaction to a comment on a media
      description: Add an emoji reaction to a comment on a media, on behalf of the
        authenticated user.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                emoji:
                  type: string
                  description: The emoji to react with.
              required:
                - emoji
      responses:
        "200":
          description: Reaction added — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: removeMediaCommentReaction
      summary: Remove an emoji reaction from a comment on a media
      description: Remove an emoji reaction previously added by the authenticated user
        from a comment on a media.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
        - in: query
          name: emoji
          schema:
            type: string
            description: The emoji reaction to remove.
          required: true
          description: The emoji reaction to remove.
      responses:
        "200":
          description: Reaction removed — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media/{mediaId}/comments/{commentId}/resolve:
    post:
      operationId: resolveMediaCommentThread
      summary: Mark a media comment thread as resolved
      description: Mark a comment thread on a media as resolved.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Thread resolved — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media/{mediaId}/comments/{commentId}/unresolve:
    post:
      operationId: unresolveMediaCommentThread
      summary: Reopen a resolved media comment thread
      description: Reopen a previously resolved comment thread on a media.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Thread reopened — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /media/{mediaId}/comments/{commentId}/subscription:
    post:
      operationId: subscribeMediaCommentThread
      summary: Subscribe to a media comment thread's notifications
      description: Subscribe the authenticated user to a comment thread on a media to
        receive notifications about new replies.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Subscribed — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: unsubscribeMediaCommentThread
      summary: Unsubscribe from a media comment thread's notifications
      description: Unsubscribe the authenticated user from a media comment thread's
        notifications.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: mediaId
          schema:
            type: string
            description: The media ID
            examples:
              - "4821"
          required: true
          description: The media ID
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Unsubscribed — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /builds:
    post:
      operationId: createBuild
      summary: Create a build
      description: Create a build and receive signed upload targets for its
        screenshots and Playwright traces. The response lists, for every file
        Argos doesn't already have, a secure `postUrl` with `fields` (or a
        legacy `putUrl`) to upload it to. Supports single and parallel builds.
      tags:
        - Builds
      security:
        - projectToken: []
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  properties:
                    commit:
                      description: The commit the build is running on
                      $ref: "#/components/schemas/Sha1Hash"
                    branch:
                      description: The branch the build is running on
                      $ref: "#/components/schemas/GitBranch"
                    pwTraceKeys:
                      description: Keys of Playwright trace files
                      type: array
                      items:
                        $ref: "#/components/schemas/Sha256Hash"
                    name:
                      description: The name of the build (for multi-build setups)
                      anyOf:
                        - type: string
                        - type: "null"
                    parallel:
                      description: Whether to run the build in parallel
                      anyOf:
                        - type: boolean
                        - type: "null"
                    parallelNonce:
                      description: A unique nonce for the parallel build
                      anyOf:
                        - type: string
                        - type: "null"
                    prNumber:
                      description: The pull request number
                      anyOf:
                        - type: integer
                          minimum: 1
                          maximum: 9007199254740991
                        - type: "null"
                    prHeadCommit:
                      description: The head commit of the pull request
                      anyOf:
                        - $ref: "#/components/schemas/Sha1Hash"
                        - type: "null"
                    referenceCommit:
                      description: The commit to use as a reference for the build
                      anyOf:
                        - $ref: "#/components/schemas/Sha1Hash"
                        - type: "null"
                    referenceBranch:
                      description: The branch to use as a reference for the build
                      anyOf:
                        - type: string
                        - type: "null"
                    parentCommits:
                      description: The parent commits of the build
                      anyOf:
                        - type: array
                          items:
                            $ref: "#/components/schemas/Sha1Hash"
                        - type: "null"
                    mode:
                      description: The mode in which the build is running
                      anyOf:
                        - type: string
                          enum:
                            - ci
                            - monitoring
                        - type: "null"
                    ciProvider:
                      description: The CI provider being used
                      anyOf:
                        - type: string
                        - type: "null"
                    argosSdk:
                      description: The version of the Argos SDK being used
                      anyOf:
                        - type: string
                        - type: "null"
                    runId:
                      description: The ID of the current run
                      anyOf:
                        - type: string
                        - type: "null"
                    runAttempt:
                      description: The attempt number of the current run
                      anyOf:
                        - type: integer
                          minimum: 1
                          maximum: 9007199254740991
                        - type: "null"
                    skipped:
                      description: Whether the build was skipped, not comparing anything and always
                        succeeding
                      anyOf:
                        - type: boolean
                        - type: "null"
                    mergeQueue:
                      description: Whether the build has been created in a merge queue
                      anyOf:
                        - type: boolean
                        - type: "null"
                    mergeQueuePrNumbers:
                      description: Pull request numbers aggregated by the merge queue build. Requires
                        `mergeQueue` to be `true`.
                      anyOf:
                        - minItems: 1
                          type: array
                          items:
                            type: integer
                            minimum: 1
                            maximum: 9007199254740991
                        - type: "null"
                    subset:
                      description: >-
                        Indicates whether this build contains only a subset of
                        screenshots.

                        This is useful when a build is created from an
                        incomplete test suite where some tests are skipped.
                      anyOf:
                        - type: boolean
                        - type: "null"
                  required:
                    - commit
                    - branch
                - anyOf:
                    - type: object
                      properties:
                        screenshotKeys:
                          type: array
                          items:
                            $ref: "#/components/schemas/Sha256Hash"
                          deprecated: true
                          description: Keys of screenshot files
                        screenshots:
                          not: {}
                      required:
                        - screenshotKeys
                    - type: object
                      properties:
                        screenshots:
                          maxItems: 5000
                          type: array
                          items:
                            $ref: "#/components/schemas/ScreenshotUploadRequest"
                          description: Screenshot files to upload
                        screenshotKeys:
                          not: {}
                      required:
                        - screenshots
      responses:
        "201":
          description: Result of build creation
          content:
            application/json:
              schema:
                type: object
                properties:
                  build:
                    $ref: "#/components/schemas/Build"
                  screenshots:
                    type: array
                    items:
                      anyOf:
                        - type: object
                          properties:
                            key:
                              type: string
                            putUrl:
                              type: string
                              format: uri
                              deprecated: true
                              description: Deprecated. Use postUrl and fields instead.
                          required:
                            - key
                            - putUrl
                          additionalProperties: false
                        - type: object
                          properties:
                            key:
                              type: string
                            postUrl:
                              type: string
                              format: uri
                            fields:
                              type: object
                              propertyNames:
                                type: string
                              additionalProperties:
                                type: string
                          required:
                            - key
                            - postUrl
                            - fields
                          additionalProperties: false
                  pwTraces:
                    type: array
                    items:
                      anyOf:
                        - type: object
                          properties:
                            key:
                              type: string
                            putUrl:
                              type: string
                              format: uri
                              deprecated: true
                              description: Deprecated. Use postUrl and fields instead.
                          required:
                            - key
                            - putUrl
                          additionalProperties: false
                        - type: object
                          properties:
                            key:
                              type: string
                            postUrl:
                              type: string
                              format: uri
                            fields:
                              type: object
                              propertyNames:
                                type: string
                              additionalProperties:
                                type: string
                          required:
                            - key
                            - postUrl
                            - fields
                          additionalProperties: false
                required:
                  - build
                  - screenshots
                  - pwTraces
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "409":
          description: Conflict
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /deployments:
    post:
      operationId: createDeployment
      summary: Create a deployment
      description: Create a deployment and receive signed upload URLs for the files
        Argos doesn't already store. Files already present (matched by content
        hash) are reused and omitted from `uploadFiles`. The environment is
        inferred from the branch when omitted.
      tags:
        - Deployments
      security:
        - projectToken: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                commit:
                  description: The commit SHA
                  $ref: "#/components/schemas/Sha1Hash"
                branch:
                  description: The branch name
                  $ref: "#/components/schemas/GitBranch"
                prNumber:
                  description: The pull request number
                  anyOf:
                    - type: integer
                      minimum: 1
                      maximum: 9007199254740991
                    - type: "null"
                environment:
                  description: "The deployment environment. When omitted, it is inferred from
                    `branch`: branches matching the configured production-branch
                    glob are treated as `production`; all others default to
                    `preview`."
                  type: string
                  enum:
                    - preview
                    - production
                files:
                  minItems: 1
                  type: array
                  items:
                    type: object
                    properties:
                      path:
                        type: string
                        minLength: 1
                      hash:
                        $ref: "#/components/schemas/Sha256Hash"
                      size:
                        type: integer
                        exclusiveMinimum: 0
                        maximum: 9007199254740991
                      contentType:
                        type: string
                        minLength: 1
                    required:
                      - path
                      - hash
                      - size
                      - contentType
                  description: List of files to deploy
              required:
                - commit
                - branch
                - files
      responses:
        "201":
          description: Deployment created
          content:
            application/json:
              schema:
                type: object
                properties:
                  deploymentId:
                    type: string
                  uploadFiles:
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                        hash:
                          type: string
                        uploadUrl:
                          type: string
                          format: uri
                      required:
                        - path
                        - hash
                        - uploadUrl
                      additionalProperties: false
                required:
                  - deploymentId
                  - uploadFiles
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /deployments/{deploymentId}:
    get:
      operationId: getDeployment
      summary: Get a deployment
      description: Retrieve a single deployment by its ID.
      tags:
        - Deployments
      security:
        - projectToken: []
      parameters:
        - in: path
          name: deploymentId
          schema:
            type: string
            description: The deployment ID
          required: true
          description: The deployment ID
      responses:
        "200":
          description: Deployment details
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  status:
                    type: string
                    enum:
                      - pending
                      - ready
                      - error
                  environment:
                    type: string
                    enum:
                      - preview
                      - production
                  branch:
                    $ref: "#/components/schemas/GitBranch"
                  commitSha:
                    $ref: "#/components/schemas/Sha256Hash"
                  url:
                    type: string
                    format: uri
                  createdAt:
                    type: string
                required:
                  - id
                  - status
                  - environment
                  - branch
                  - commitSha
                  - url
                  - createdAt
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /deployments/{deploymentId}/finalize:
    post:
      operationId: finalizeDeployment
      summary: Finalize a deployment
      description: Mark a deployment as ready once all of its files have been
        uploaded. Argos assigns the deployment's aliases and starts serving it.
      tags:
        - Deployments
      security:
        - projectToken: []
      parameters:
        - in: path
          name: deploymentId
          schema:
            type: string
            description: The deployment ID
          required: true
          description: The deployment ID
      responses:
        "200":
          description: Deployment finalized
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  status:
                    type: string
                    enum:
                      - pending
                      - ready
                      - error
                  environment:
                    type: string
                    enum:
                      - preview
                      - production
                  branch:
                    $ref: "#/components/schemas/GitBranch"
                  commitSha:
                    $ref: "#/components/schemas/Sha256Hash"
                  url:
                    type: string
                    format: uri
                  createdAt:
                    type: string
                required:
                  - id
                  - status
                  - environment
                  - branch
                  - commitSha
                  - url
                  - createdAt
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /deployments/resolve/{domain}:
    get:
      operationId: resolveDeploymentDomain
      summary: Resolve a deployment domain
      description: Resolve a deployment domain or URL to the deployment it currently
        serves. This endpoint is public and does not require authentication.
      tags:
        - Deployments
      security: []
      parameters:
        - in: path
          name: domain
          schema:
            type: string
            description: A deployment domain or URL
          required: true
          description: A deployment domain or URL
      responses:
        "200":
          description: Deployment domain resolved
          content:
            application/json:
              schema:
                type: object
                properties:
                  deploymentId:
                    type: string
                  projectId:
                    type: string
                  environment:
                    type: string
                    enum:
                      - preview
                      - production
                  visibility:
                    type: string
                    enum:
                      - private
                      - public
                required:
                  - deploymentId
                  - projectId
                  - environment
                  - visibility
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /builds/finalize:
    post:
      operationId: finalizeBuilds
      summary: Finalize parallel builds
      description: Mark every parallel shard sharing the given `parallelNonce` as
        complete. Once finalized, Argos compares the aggregated screenshots and
        starts processing the build.
      tags:
        - Builds
      security:
        - projectToken: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                parallelNonce:
                  type: string
                  minLength: 1
              required:
                - parallelNonce
      responses:
        "200":
          description: Result of build finalization
          content:
            application/json:
              schema:
                type: object
                properties:
                  builds:
                    type: array
                    items:
                      $ref: "#/components/schemas/Build"
                required:
                  - builds
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "409":
          description: Conflict
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /baseline:
    post:
      operationId: findBaseline
      summary: Find an eligible baseline from a list of commits
      description: "Find the build eligible to be used as a baseline among a list of
        commits. Useful when no Git provider is connected: the CLI can send the
        candidate ancestor commits and let Argos pick the closest one that has
        an eligible (complete, valid, approved and not rejected) baseline
        build."
      tags:
        - Builds
      security:
        - projectToken: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                commits:
                  minItems: 1
                  type: array
                  items:
                    $ref: "#/components/schemas/Sha1Hash"
                  description: The commits to look for an eligible baseline, ordered from the
                    closest to the furthest ancestor. The first commit with an
                    eligible baseline wins.
                name:
                  default: default
                  description: The name of the build to find a baseline for.
                  type: string
                  minLength: 1
                mode:
                  default: ci
                  description: The mode of the build to find a baseline for.
                  type: string
                  enum:
                    - ci
                    - monitoring
              required:
                - commits
      responses:
        "200":
          description: The eligible baseline build, or null when none is found
          content:
            application/json:
              schema:
                type: object
                properties:
                  baseline:
                    anyOf:
                      - $ref: "#/components/schemas/Build"
                      - type: "null"
                    description: The eligible baseline build found among the commits, or null when
                      none is found.
                required:
                  - baseline
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /auth/cli/token:
    post:
      operationId: exchangeCliToken
      summary: Exchange a CLI authorization code for a token
      tags:
        - Authentication
      x-internal: true
      security: []
      description: Called by the CLI to exchange a PKCE authorization code for an API token.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: PKCE authorization code from the login flow
                code_verifier:
                  type: string
                  description: PKCE code verifier matching the code challenge
              required:
                - code
                - code_verifier
      responses:
        "200":
          description: Token exchange successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                    type: string
                    description: Argos API token for CLI use
                required:
                  - token
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /auth/github-actions/oidc/exchange:
    post:
      operationId: exchangeGitHubActionsOidcToken
      summary: Exchange a GitHub Actions OIDC token for an Argos token
      tags:
        - Authentication
      x-internal: true
      description: Called by GitHub Actions to exchange an OIDC token for a
        short-lived Argos project token.
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                oidcToken:
                  type: string
                  minLength: 1
                  description: GitHub Actions OIDC token
                repository:
                  description: GitHub repository in owner/name format
                  type: string
                  pattern: ^[^/]+\/[^/]+$
                commit:
                  description: Expected commit SHA
                  $ref: "#/components/schemas/Sha1Hash"
              required:
                - oidcToken
      responses:
        "200":
          description: Token exchange successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                    type: string
                    description: Short-lived Argos project token
                  expiresAt:
                    type: string
                    description: Token expiration date as an ISO string
                required:
                  - token
                  - expiresAt
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /auth/github-actions/tokenless/exchange:
    post:
      operationId: exchangeGitHubActionsTokenlessToken
      summary: Exchange a tokenless GitHub Actions token for an Argos token
      tags:
        - Authentication
      x-internal: true
      description: Called by GitHub Actions to exchange a tokenless bearer token for a
        short-lived Argos project token. The provided commit and branch must
        match the GitHub workflow run.
      security: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                tokenlessToken:
                  type: string
                  minLength: 1
                  description: Argos tokenless GitHub Actions bearer token
                commit:
                  description: Expected commit SHA
                  $ref: "#/components/schemas/Sha1Hash"
                branch:
                  type: string
                  minLength: 1
                  description: Expected branch name
              required:
                - tokenlessToken
                - commit
                - branch
      responses:
        "200":
          description: Token exchange successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                    type: string
                    description: Short-lived Argos project token
                  expiresAt:
                    type: string
                    description: Token expiration date as an ISO string
                required:
                  - token
                  - expiresAt
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "503":
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /me:
    get:
      operationId: getMe
      summary: Get the current user
      description: Retrieve the user associated with the token used to authenticate
        the request, with the accounts (personal and teams) the token can
        access. Account slugs are the `owner` used in other API paths.
      tags:
        - Users
      security:
        - personalAccessToken: []
        - oauth2:
            - profile
      responses:
        "200":
          description: The authenticated user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Me"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /project:
    get:
      operationId: getAuthProject
      summary: Get the current project
      description: Retrieve the project associated with the project token used to
        authenticate the request.
      tags:
        - Projects
      security:
        - projectToken: []
      responses:
        "200":
          description: Project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /builds/{buildId}:
    put:
      operationId: updateBuild
      summary: Update a build
      description: Add screenshots to an existing build and update its metadata. Used
        to push the screenshots of a parallel shard, identified by
        `parallelIndex` and `parallelTotal`.
      tags:
        - Builds
      security:
        - projectToken: []
      parameters:
        - in: path
          name: buildId
          schema:
            $ref: "#/components/schemas/BuildId"
          required: true
          description: A unique identifier for the build
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                screenshots:
                  type: array
                  items:
                    $ref: "#/components/schemas/ScreenshotInput"
                parallel:
                  anyOf:
                    - type: boolean
                    - type: "null"
                parallelTotal:
                  anyOf:
                    - type: integer
                      minimum: -1
                      maximum: 9007199254740991
                    - type: "null"
                parallelIndex:
                  anyOf:
                    - type: integer
                      minimum: 1
                      maximum: 9007199254740991
                    - type: "null"
                final:
                  description: Only used for non-parallel builds. Indicates that this is the last
                    request of the build, so Argos can finalize it. A build
                    whose screenshots are too large to fit in a single request
                    can split them across several sequential requests, leaving
                    `final` falsy on every request but the last. Defaults to
                    `true`.
                  anyOf:
                    - type: boolean
                    - type: "null"
                metadata:
                  $ref: "#/components/schemas/BuildMetadata"
              required:
                - screenshots
      responses:
        "200":
          description: Result of build update
          content:
            application/json:
              schema:
                type: object
                properties:
                  build:
                    $ref: "#/components/schemas/Build"
                required:
                  - build
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "409":
          description: Conflict
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /projects:
    post:
      operationId: createProject
      summary: Create a project
      description: Create a new project in an account you administer. The
        authenticated personal access token must be scoped to the target
        account, and the acting user must be an administrator of it.
      tags:
        - Projects
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:write
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 100
                  pattern: ^[a-zA-Z0-9_\-.]+$
                  description: Name of the project to create. Must be unique within the account
                    (case-insensitive) and cannot be a reserved name.
                accountSlug:
                  type: string
                  minLength: 1
                  description: Slug of the account (personal or team) that will own the project.
                    The personal access token must be scoped to this account and
                    the acting user must be one of its administrators.
              required:
                - name
                - accountSlug
      responses:
        "201":
          description: Project created successfully — returns the project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}:
    get:
      operationId: getProject
      summary: Get a project
      description: Retrieve a project by its owner (account slug) and project name.
      tags:
        - Projects
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
      responses:
        "200":
          description: Project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    patch:
      operationId: updateProject
      summary: Update a project
      description: Update a project's settings. Only the fields present in the request
        are changed. Requires administrator access to the project.
      tags:
        - Projects
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  description: New name for the project. Must be unique within the owning account
                    (case-insensitive).
                defaultBaseBranch:
                  anyOf:
                    - type: string
                    - type: "null"
                  description: Branch used as the baseline when no better one applies. `null`
                    falls back to the repository's default branch.
                autoApprovedBranchGlob:
                  anyOf:
                    - type: string
                    - type: "null"
                  description: Glob matching the branches whose builds are approved automatically.
                    `null` falls back to the default base branch.
                deploymentProductionBranchGlob:
                  anyOf:
                    - type: string
                    - type: "null"
                  description: Glob matching the branches whose deployments count as production.
                    `null` falls back to the repository's default branch.
                private:
                  anyOf:
                    - type: boolean
                    - type: "null"
                  description: Force the project's privacy. `null` inherits it from the linked
                    repository.
                summaryCheck:
                  $ref: "#/components/schemas/SummaryCheck"
                defaultUserLevel:
                  anyOf:
                    - $ref: "#/components/schemas/ProjectUserLevel"
                    - type: "null"
                  description: Access given to team members that are not contributors on this
                    project. `null` gives them none.
                ignoreConfig:
                  $ref: "#/components/schemas/IgnoreConfig"
                deploymentEnabled:
                  type: boolean
                deploymentAuth:
                  $ref: "#/components/schemas/DeploymentAuth"
                githubActionsOidcEnabled:
                  type: boolean
                tokenlessAuthEnabled:
                  type: boolean
      responses:
        "200":
          description: The updated project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/automation-rules:
    get:
      operationId: listAutomationRules
      summary: List a project's automation rules
      description: List the automation rules of a project, most recent first. Requires
        administrator access to the project.
      tags:
        - Automations
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
        - in: query
          name: active
          schema:
            description: Restrict to rules that still fire (`true`) or to deactivated ones
              (`false`). Omit for both.
            type: string
            enum:
              - "true"
              - "false"
          description: Restrict to rules that still fire (`true`) or to deactivated ones
            (`false`). Omit for both.
      responses:
        "200":
          description: List of automation rules
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/AutomationRule"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    post:
      operationId: createAutomationRule
      summary: Create an automation rule
      description: Create an automation rule on a project. Requires administrator
        access to the project. Action targets must belong to the project's
        account.
      tags:
        - Automations
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 3
                  maxLength: 100
                events:
                  minItems: 1
                  type: array
                  items:
                    $ref: "#/components/schemas/AutomationEvent"
                conditions:
                  default: []
                  type: array
                  items:
                    $ref: "#/components/schemas/AutomationCondition"
                actions:
                  minItems: 1
                  type: array
                  items:
                    $ref: "#/components/schemas/AutomationActionInput"
              required:
                - name
                - events
                - actions
      responses:
        "201":
          description: The created rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AutomationRule"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/automation-rules/{ruleId}:
    get:
      operationId: getAutomationRule
      summary: Get an automation rule
      description: Retrieve a single automation rule. Requires administrator access to
        the project.
      tags:
        - Automations
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: ruleId
          schema:
            type: string
            description: Identifier of the automation rule.
          required: true
          description: Identifier of the automation rule.
      responses:
        "200":
          description: The automation rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AutomationRule"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    put:
      operationId: updateAutomationRule
      summary: Update an automation rule
      description: Replace an automation rule's definition. Requires administrator
        access to the project. The whole definition is replaced, so send the
        events, conditions and actions you want the rule to end up with.
      tags:
        - Automations
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: ruleId
          schema:
            type: string
            description: Identifier of the automation rule.
          required: true
          description: Identifier of the automation rule.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 3
                  maxLength: 100
                events:
                  minItems: 1
                  type: array
                  items:
                    $ref: "#/components/schemas/AutomationEvent"
                conditions:
                  default: []
                  type: array
                  items:
                    $ref: "#/components/schemas/AutomationCondition"
                actions:
                  minItems: 1
                  type: array
                  items:
                    $ref: "#/components/schemas/AutomationActionInput"
              required:
                - name
                - events
                - actions
      responses:
        "200":
          description: The updated rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AutomationRule"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/automation-rules/{ruleId}/deactivate:
    post:
      operationId: deactivateAutomationRule
      summary: Deactivate an automation rule
      description: Stop a rule from firing. Rules are never deleted — a deactivated
        one keeps its run history, which is what tells you why something fired.
        Requires administrator access to the project.
      tags:
        - Automations
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: ruleId
          schema:
            type: string
            description: Identifier of the automation rule.
          required: true
          description: Identifier of the automation rule.
      responses:
        "200":
          description: The deactivated rule
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AutomationRule"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/contributors:
    get:
      operationId: listProjectContributors
      summary: List a project's contributors
      description: List the users explicitly granted access to a project, with their
        level. Team owners and members are not listed — they reach every project
        through their team role. The authenticated user comes first when they
        are one of them.
      tags:
        - Projects
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
      responses:
        "200":
          description: List of contributors
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/ProjectContributor"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/contributors/{userId}:
    put:
      operationId: setProjectContributor
      summary: Grant a contributor access to a project
      description: "Grant a user access to a project, or change the level they already
        hold. Requires administrator access to the project. Only meaningful for
        team contributors: owners and members already reach every project."
      tags:
        - Projects
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: userId
          schema:
            type: string
            description: Identifier of the user — the `user.id` returned by
              `listAccountMembers` or `listProjectContributors`.
          required: true
          description: Identifier of the user — the `user.id` returned by
            `listAccountMembers` or `listProjectContributors`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                level:
                  $ref: "#/components/schemas/ProjectUserLevel"
              required:
                - level
      responses:
        "200":
          description: The granted access
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectContributor"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: removeProjectContributor
      summary: Revoke a contributor's access
      description: Revoke a user's access to a project. Requires administrator access
        to the project, except when removing yourself — a contributor can always
        walk away from a project.
      tags:
        - Projects
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: userId
          schema:
            type: string
            description: Identifier of the user — the `user.id` returned by
              `listAccountMembers` or `listProjectContributors`.
          required: true
          description: Identifier of the user — the `user.id` returned by
            `listAccountMembers` or `listProjectContributors`.
      responses:
        "204":
          description: Access revoked
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/transfer:
    post:
      operationId: transferProject
      summary: Transfer a project
      description: Move a project to another account, optionally renaming it. The
        token must be scoped to both accounts, and the acting user must
        administer the project as well as the account receiving it.
      tags:
        - Projects
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                targetAccountSlug:
                  type: string
                  minLength: 1
                  description: Slug of the account that will own the project.
                name:
                  description: Name to give the project on the target account. Defaults to its
                    current name, which must be free there.
                  type: string
                  minLength: 1
              required:
                - targetAccountSlug
      responses:
        "200":
          description: The transferred project
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Project"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/media:
    get:
      operationId: listMedia
      summary: List a project's media
      description: >-
        List the standalone images and videos uploaded to a project, most recent
        first.


        `branch` and `prNumber` are what this is usually for: everything
        uploaded for the work in hand, whether or not a pull request exists yet.
        `branch` covers both — a media keeps its branch after publishing — so it
        stays a single query across the moment the pull request opens.
      tags:
        - Media
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - media:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
        - in: query
          name: branch
          schema:
            description: Only media uploaded for this branch, staged and published alike.
            examples:
              - feat/checkout
            type: string
            minLength: 1
          description: Only media uploaded for this branch, staged and published alike.
        - in: query
          name: prNumber
          schema:
            description: Only media published to this pull request.
            type: integer
            minimum: 1
            maximum: 9007199254740991
          description: Only media published to this pull request.
        - in: query
          name: stage
          schema:
            description: Restrict to staged media (no pull request yet) or to published
              media.
            type: string
            enum:
              - staged
              - published
          description: Restrict to staged media (no pull request yet) or to published media.
        - in: query
          name: search
          schema:
            description: Match media on their file name or slug.
            type: string
          description: Match media on their file name or slug.
        - in: query
          name: type
          schema:
            description: Restrict to images or to videos.
            type: string
            enum:
              - image
              - video
          description: Restrict to images or to videos.
      responses:
        "200":
          description: List of media
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/Media"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds:
    get:
      operationId: listBuilds
      summary: List a project's builds
      description: List the builds of a project, most recent first. Results are
        paginated. Use `search` to match builds by name, branch or commit, and
        `distinctName` to return only the latest build per name and commit.
      tags:
        - Builds
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
        - in: query
          name: head
          schema:
            type: string
            minLength: 1
        - in: query
          name: headSha
          schema:
            $ref: "#/components/schemas/Sha1Hash"
        - in: query
          name: search
          schema:
            description: Search builds by name, branch (substring) or commit (prefix).
            type: string
            minLength: 1
          description: Search builds by name, branch (substring) or commit (prefix).
        - in: query
          name: distinctName
          schema:
            description: Only return the latest builds created, unique by name and commit.
            type: string
          description: Only return the latest builds created, unique by name and commit.
      responses:
        "200":
          description: List of builds
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/Build"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}:
    get:
      operationId: getBuild
      summary: Get a build
      description: Retrieve a single build by its number within a project, including
        its status and metadata.
      tags:
        - Builds
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      responses:
        "200":
          description: Build
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Build"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/diffs:
    get:
      operationId: listBuildDiffs
      summary: List a build's screenshot diffs
      description: List the screenshot diffs of a build, with pagination. Each diff
        compares a baseline screenshot to the one captured by the build. Each
        diff also carries its test's flakiness metrics and, when it is a change,
        its ignore state and occurrence count — so you can tell whether a change
        is worth reviewing or is just a flaky one. Use `needsReview` to return
        only the diffs that require review.
      tags:
        - Builds
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
        - in: query
          name: needsReview
          schema:
            description: Only return diffs that require review. Matches `changed`, `added`,
              and `removed`, except `removed` is excluded for subset builds.
            type: string
          description: Only return diffs that require review. Matches `changed`, `added`,
            and `removed`, except `removed` is excluded for subset builds.
        - in: query
          name: metricsPeriod
          schema:
            default: LAST_7_DAYS
            description: Period over which the test flakiness metrics are computed.
            type: string
            enum:
              - LAST_24_HOURS
              - LAST_3_DAYS
              - LAST_7_DAYS
              - LAST_30_DAYS
              - LAST_90_DAYS
          description: Period over which the test flakiness metrics are computed.
      responses:
        "200":
          description: List of screenshot diffs
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/SnapshotDiff"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/changes/{changeId}/ignore:
    post:
      operationId: ignoreChange
      summary: Ignore a test change
      description: Ignore a test change so its diffs no longer require review and are
        automatically approved on future builds. Use it to silence a change that
        has been identified as flaky.
      tags:
        - Tests
      security:
        - personalAccessToken: []
        - oauth2:
            - reviews:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: changeId
          schema:
            type: string
            description: Identifier of the change to update, as returned in a diff's
              `change.id`.
          required: true
          description: Identifier of the change to update, as returned in a diff's
            `change.id`.
        - in: query
          name: metricsPeriod
          schema:
            default: LAST_7_DAYS
            description: Period over which the test flakiness metrics are computed.
            type: string
            enum:
              - LAST_24_HOURS
              - LAST_3_DAYS
              - LAST_7_DAYS
              - LAST_30_DAYS
              - LAST_90_DAYS
          description: Period over which the test flakiness metrics are computed.
      responses:
        "200":
          description: Change ignored — returns the updated change
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Change"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/changes/{changeId}/unignore:
    post:
      operationId: unignoreChange
      summary: Unignore a test change
      description: Stop ignoring a test change so its diffs require review again on
        future builds.
      tags:
        - Tests
      security:
        - personalAccessToken: []
        - oauth2:
            - reviews:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: changeId
          schema:
            type: string
            description: Identifier of the change to update, as returned in a diff's
              `change.id`.
          required: true
          description: Identifier of the change to update, as returned in a diff's
            `change.id`.
        - in: query
          name: metricsPeriod
          schema:
            default: LAST_7_DAYS
            description: Period over which the test flakiness metrics are computed.
            type: string
            enum:
              - LAST_24_HOURS
              - LAST_3_DAYS
              - LAST_7_DAYS
              - LAST_30_DAYS
              - LAST_90_DAYS
          description: Period over which the test flakiness metrics are computed.
      responses:
        "200":
          description: Change unignored — returns the updated change
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Change"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/reviews:
    get:
      operationId: listReviews
      summary: List the reviews submitted on a build
      description: List the reviews submitted on a build, with pagination.
      tags:
        - Reviews
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      responses:
        "200":
          description: Build reviews
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/BuildReview"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    post:
      operationId: createReview
      summary: Create a review on a build
      description: Submit a review on a build to approve or reject the changes it captured.
      tags:
        - Reviews
      security:
        - personalAccessToken: []
        - oauth2:
            - reviews:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                event:
                  description: 'Review event to apply to the build: "APPROVE", "REJECT" or
                    "COMMENT". Required when `conclusion` is not provided.'
                  type: string
                  enum:
                    - APPROVE
                    - REJECT
                    - COMMENT
                conclusion:
                  deprecated: true
                  description: 'Deprecated: use `event` instead. Overall review conclusion for the
                    build: "APPROVE" or "REQUEST_CHANGES".'
                  type: string
                  enum:
                    - APPROVE
                    - REQUEST_CHANGES
                body:
                  description: Optional comment to attach to the review. Either Markdown text or
                    the JSON representation of a rich-text document.
                snapshots:
                  default: []
                  description: Optional per-snapshot review decisions. When omitted, only the
                    build-level review is recorded.
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The ID of the snapshot to review
                      conclusion:
                        type: string
                        enum:
                          - APPROVE
                          - REQUEST_CHANGES
                        description: 'Review conclusion for this individual snapshot: "APPROVE" or
                          "REQUEST_CHANGES"'
                    required:
                      - id
                      - conclusion
      responses:
        "200":
          description: Review submitted successfully — returns the review
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BuildReview"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/reviewers:
    get:
      operationId: listBuildReviewers
      summary: List a build's requested reviewers
      description: List the users currently requested to review a build.
      tags:
        - Reviews
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      responses:
        "200":
          description: The users requested to review the build
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BuildReviewers"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    post:
      operationId: addBuildReviewers
      summary: Request reviewers on a build
      description: "Ask users to review a build. Each newly-requested reviewer is
        notified. Idempotent: users already requested are left untouched and not
        notified again. Users without access to the project are ignored, and you
        cannot request yourself."
      tags:
        - Reviews
      security:
        - personalAccessToken: []
        - oauth2:
            - reviews:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userIds:
                  minItems: 1
                  maxItems: 100
                  type: array
                  items:
                    type: string
                  description: Identifiers of the users to act on — the `id` of a user as returned
                    by `listBuildReviewers` or `getMe`.
              required:
                - userIds
      responses:
        "200":
          description: The users requested to review the build
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BuildReviewers"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: removeBuildReviewers
      summary: Cancel review requests on a build
      description: Cancel the review requests standing on a build. Removing a user
        that was not requested is a no-op.
      tags:
        - Reviews
      security:
        - personalAccessToken: []
        - oauth2:
            - reviews:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userIds:
                  minItems: 1
                  maxItems: 100
                  type: array
                  items:
                    type: string
                  description: Identifiers of the users to act on — the `id` of a user as returned
                    by `listBuildReviewers` or `getMe`.
              required:
                - userIds
      responses:
        "200":
          description: The users still requested to review the build
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BuildReviewers"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/subscription:
    post:
      operationId: subscribeBuild
      summary: Subscribe to a build
      description: Start receiving notifications about a build — new comments,
        reviews, and status changes. Clears a previous explicit unsubscription.
      tags:
        - Builds
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      responses:
        "200":
          description: Subscribed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationSubscription"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: unsubscribeBuild
      summary: Unsubscribe from a build
      description: Stop receiving notifications about a build. Recorded as an
        intentional unsubscription, so Argos will not auto-subscribe you to it
        again.
      tags:
        - Builds
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      responses:
        "200":
          description: Unsubscribed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationSubscription"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests/{testId}/subscription:
    post:
      operationId: subscribeTest
      summary: Subscribe to a test
      description: Start receiving notifications about a test — new comments and the
        changes it produces. Clears a previous explicit unsubscription.
      tags:
        - Tests
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
      responses:
        "200":
          description: Subscribed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationSubscription"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: unsubscribeTest
      summary: Unsubscribe from a test
      description: Stop receiving notifications about a test. Recorded as an
        intentional unsubscription, so Argos will not auto-subscribe you to it
        again.
      tags:
        - Tests
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
      responses:
        "200":
          description: Unsubscribed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NotificationSubscription"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/reviews/{reviewId}/dismiss:
    post:
      operationId: dismissReview
      summary: Dismiss a submitted review on a build
      description: Dismiss a previously submitted review on a build, clearing its
        effect on the build's review status.
      tags:
        - Reviews
      security:
        - personalAccessToken: []
        - oauth2:
            - reviews:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: reviewId
          schema:
            type: string
            description: The ID of the review
          required: true
          description: The ID of the review
      responses:
        "200":
          description: Review dismissed successfully — returns the review
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BuildReview"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/comments:
    get:
      operationId: listBuildComments
      summary: List the comments on a build
      description: List the comments on a build.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      responses:
        "200":
          description: Comments, oldest first. Replies carry a threadId pointing at their
            root comment.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    post:
      operationId: createBuildComment
      summary: Post a comment (or reply) on a build
      description: Post a comment on a build. Start a new thread, reply to an existing
        one with `threadId`, optionally anchor the comment to a screenshot diff,
        or attach it to your pending review with `addToReview`.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                body:
                  anyOf:
                    - type: string
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                  description: Comment content. Either Markdown text or the JSON representation of
                    a rich-text document.
                threadId:
                  description: Public ID of the root comment to reply to (e.g. `comment-xf23d`).
                  type: string
                screenshotDiffId:
                  description: Screenshot diff to anchor the comment to. Required when anchor is
                    set.
                  type: string
                anchor:
                  oneOf:
                    - type: object
                      properties:
                        type:
                          type: string
                          const: point
                        x:
                          type: number
                        y:
                          type: number
                      required:
                        - type
                        - x
                        - y
                    - type: object
                      properties:
                        type:
                          type: string
                          const: lines
                        from:
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                        to:
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                      required:
                        - type
                        - from
                        - to
                  description: Where on the referenced screenshot diff the comment points. A point
                    uses normalized (0–1) coordinates; lines is a 1-based
                    inclusive range.
                  type: object
                addToReview:
                  description: Attach the comment to your pending review (created if needed)
                    instead of posting it immediately. Ignored for replies,
                    which inherit their thread's review.
                  type: boolean
              required:
                - body
      responses:
        "201":
          description: Comment created successfully — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}:
    get:
      operationId: getBuildComment
      summary: Get a single comment on a build
      description: Retrieve a single comment on a build by its ID.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    patch:
      operationId: updateBuildComment
      summary: Update a comment on a build
      description: Update the body of a comment on a build. Only the comment's author
        can edit it.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                body:
                  anyOf:
                    - type: string
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                  description: Comment content. Either Markdown text or the JSON representation of
                    a rich-text document.
              required:
                - body
      responses:
        "200":
          description: Comment updated successfully — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: deleteBuildComment
      summary: Delete a comment on a build
      description: Delete a comment on a build. Only the comment's author can delete it.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Comment deleted successfully — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/reactions:
    post:
      operationId: addBuildCommentReaction
      summary: Add an emoji reaction to a comment on a build
      description: Add an emoji reaction to a comment on a build, on behalf of the
        authenticated user.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                emoji:
                  type: string
                  description: The emoji to react with.
              required:
                - emoji
      responses:
        "200":
          description: Reaction added — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: removeBuildCommentReaction
      summary: Remove an emoji reaction from a comment on a build
      description: Remove an emoji reaction previously added by the authenticated user
        from a comment on a build.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
        - in: query
          name: emoji
          schema:
            type: string
            description: The emoji reaction to remove.
          required: true
          description: The emoji reaction to remove.
      responses:
        "200":
          description: Reaction removed — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/resolve:
    post:
      operationId: resolveBuildCommentThread
      summary: Mark a build comment thread as resolved
      description: Mark a comment thread on a build as resolved.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Thread resolved — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/unresolve:
    post:
      operationId: unresolveBuildCommentThread
      summary: Reopen a resolved build comment thread
      description: Reopen a previously resolved comment thread on a build.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Thread reopened — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/subscription:
    post:
      operationId: subscribeBuildCommentThread
      summary: Subscribe to a build comment thread's notifications
      description: Subscribe the authenticated user to a comment thread on a build to
        receive notifications about new replies.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Subscribed — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: unsubscribeBuildCommentThread
      summary: Unsubscribe from a build comment thread's notifications
      description: Unsubscribe the authenticated user from a build comment thread's
        notifications.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: buildNumber
          schema:
            $ref: "#/components/schemas/BuildNumber"
          required: true
          description: The build number
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Unsubscribed — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests:
    get:
      operationId: listTests
      summary: List a project's tests
      description: "List the tests currently running in a project, flakiest first. A
        test is listed when it appeared in the latest reference build of its
        build name — tests that were deleted, renamed or skipped drop out. Use
        it to find what to stabilise: the first page is the project's flakiness
        backlog."
      tags:
        - Tests
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
        - in: query
          name: metricsPeriod
          schema:
            default: LAST_7_DAYS
            description: Period over which the test flakiness metrics are computed.
            type: string
            enum:
              - LAST_24_HOURS
              - LAST_3_DAYS
              - LAST_7_DAYS
              - LAST_30_DAYS
              - LAST_90_DAYS
          description: Period over which the test flakiness metrics are computed.
        - in: query
          name: buildName
          schema:
            description: Restrict to the tests of a single build name.
            type: string
          description: Restrict to the tests of a single build name.
        - in: query
          name: search
          schema:
            description: Match tests on their name.
            type: string
          description: Match tests on their name.
      responses:
        "200":
          description: List of the project's tests, flakiest first
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/TestSummary"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/deployments:
    get:
      operationId: listProjectDeployments
      summary: List a project's deployments
      description: List a project's deployments, most recent first. Use `environment`
        to keep only the production ones — the deployments that answer "what is
        live right now?".
      tags:
        - Deployments
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
        - in: query
          name: environment
          schema:
            description: Restrict to one environment.
            type: string
            enum:
              - preview
              - production
          description: Restrict to one environment.
      responses:
        "200":
          description: List of deployments
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        status:
                          type: string
                          enum:
                            - pending
                            - ready
                            - error
                        environment:
                          type: string
                          enum:
                            - preview
                            - production
                        branch:
                          $ref: "#/components/schemas/GitBranch"
                        commitSha:
                          $ref: "#/components/schemas/Sha256Hash"
                        url:
                          type: string
                          format: uri
                        createdAt:
                          type: string
                      required:
                        - id
                        - status
                        - environment
                        - branch
                        - commitSha
                        - url
                        - createdAt
                      additionalProperties: false
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/domain:
    get:
      operationId: getProjectDomain
      summary: Get a project's deployment domain
      description: Retrieve the domain the project's production deployments are served on.
      tags:
        - Deployments
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
      responses:
        "200":
          description: The production deployment domain
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectDomain"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    put:
      operationId: updateProjectDomain
      summary: Set a project's deployment domain
      description: Set the domain the project's production deployments are served on.
        Requires administrator access to the project. Only domains under the
        Argos deployments domain are accepted, and reserved slugs are refused.
      tags:
        - Deployments
      security:
        - personalAccessToken: []
        - oauth2:
            - projects:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                domain:
                  type: string
                  minLength: 1
                  description: The full domain to serve production deployments on, under the Argos
                    deployments domain — e.g. `acme-web.argos-ci.live`.
                  example: acme-web.argos-ci.live
              required:
                - domain
      responses:
        "200":
          description: The updated production deployment domain
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectDomain"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/ignored-changes:
    get:
      operationId: listIgnoredChanges
      summary: List a project's ignored changes
      description: List the changes currently ignored in a project, most recently
        ignored first. Use it to audit what has been silenced and to unignore
        anything that should be reviewed again.
      tags:
        - Tests
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
      responses:
        "200":
          description: List of the project's ignored changes
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/IgnoredChange"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests/{testId}:
    get:
      operationId: getTest
      summary: Get a test and its flakiness metrics
      description: "Get a test with its flakiness metrics over a period: how many
        builds ran it, how many times it changed, and how stable and consistent
        those changes were. The metrics also come bucketed over time, so you can
        tell a test that has always been flaky from one that started recently.
        Pair it with `listTestChanges` to see what actually keeps changing."
      tags:
        - Tests
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: query
          name: metricsPeriod
          schema:
            default: LAST_7_DAYS
            description: Period over which the test flakiness metrics are computed.
            type: string
            enum:
              - LAST_24_HOURS
              - LAST_3_DAYS
              - LAST_7_DAYS
              - LAST_30_DAYS
              - LAST_90_DAYS
          description: Period over which the test flakiness metrics are computed.
      responses:
        "200":
          description: The test and its flakiness metrics
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TestDetails"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests/{testId}/changes:
    get:
      operationId: listTestChanges
      summary: List a test's changes
      description: "List the distinct changes a test produced over a period, the ones
        that came back most often first. Each change is one exact visual
        difference, with how many times it reappeared, whether it is ignored,
        and the diff of its latest occurrence — so you can look at what moved. A
        change that keeps reappearing while nothing in the UI changed is a flaky
        one: fix what makes it unstable, or silence it with `ignoreChange`."
      tags:
        - Tests
      security:
        - projectToken: []
        - personalAccessToken: []
        - oauth2:
            - projects:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: query
          name: perPage
          schema:
            description: Number of items per page (max 100)
            type: string
          description: Number of items per page (max 100)
        - in: query
          name: page
          schema:
            description: Page number
            type: string
          description: Page number
        - in: query
          name: metricsPeriod
          schema:
            default: LAST_7_DAYS
            description: Period over which the test flakiness metrics are computed.
            type: string
            enum:
              - LAST_24_HOURS
              - LAST_3_DAYS
              - LAST_7_DAYS
              - LAST_30_DAYS
              - LAST_90_DAYS
          description: Period over which the test flakiness metrics are computed.
        - in: query
          name: ignored
          schema:
            description: Restrict the changes to the ones currently ignored (`true`) or to
              the ones still under review (`false`). Omit it to get both.
            type: string
            enum:
              - "true"
              - "false"
          description: Restrict the changes to the ones currently ignored (`true`) or to
            the ones still under review (`false`). Omit it to get both.
      responses:
        "200":
          description: List of the test's changes
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: "#/components/schemas/PageInfo"
                  results:
                    type: array
                    items:
                      $ref: "#/components/schemas/TestChange"
                required:
                  - pageInfo
                  - results
                additionalProperties: false
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests/{testId}/comments:
    get:
      operationId: listTestComments
      summary: List the comments on a test
      description: List the comments on a test.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
      responses:
        "200":
          description: Comments, oldest first. Replies carry a threadId pointing at their
            root comment.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    post:
      operationId: createTestComment
      summary: Post a comment (or reply) on a test
      description: Post a comment on a test. Start a new thread, or reply to an
        existing one with `threadId`.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                body:
                  anyOf:
                    - type: string
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                  description: Comment content. Either Markdown text or the JSON representation of
                    a rich-text document.
                threadId:
                  description: Public ID of the root comment to reply to (e.g. `comment-xf23d`).
                  type: string
              required:
                - body
      responses:
        "201":
          description: Comment created successfully — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests/{testId}/comments/{commentId}:
    get:
      operationId: getTestComment
      summary: Get a single comment on a test
      description: Retrieve a single comment on a test by its ID.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:read
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    patch:
      operationId: updateTestComment
      summary: Update a comment on a test
      description: Update the body of a comment on a test. Only the comment's author
        can edit it.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                body:
                  anyOf:
                    - type: string
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                  description: Comment content. Either Markdown text or the JSON representation of
                    a rich-text document.
              required:
                - body
      responses:
        "200":
          description: Comment updated successfully — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: deleteTestComment
      summary: Delete a comment on a test
      description: Delete a comment on a test. Only the comment's author can delete it.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Comment deleted successfully — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests/{testId}/comments/{commentId}/reactions:
    post:
      operationId: addTestCommentReaction
      summary: Add an emoji reaction to a comment on a test
      description: Add an emoji reaction to a comment on a test, on behalf of the
        authenticated user.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                emoji:
                  type: string
                  description: The emoji to react with.
              required:
                - emoji
      responses:
        "200":
          description: Reaction added — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: removeTestCommentReaction
      summary: Remove an emoji reaction from a comment on a test
      description: Remove an emoji reaction previously added by the authenticated user
        from a comment on a test.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/CommentId"
          required: true
          description: The public ID of the comment (e.g. `comment-xf23d`)
        - in: query
          name: emoji
          schema:
            type: string
            description: The emoji reaction to remove.
          required: true
          description: The emoji reaction to remove.
      responses:
        "200":
          description: Reaction removed — returns the comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests/{testId}/comments/{commentId}/resolve:
    post:
      operationId: resolveTestCommentThread
      summary: Mark a test comment thread as resolved
      description: Mark a comment thread on a test as resolved.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Thread resolved — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests/{testId}/comments/{commentId}/unresolve:
    post:
      operationId: unresolveTestCommentThread
      summary: Reopen a resolved test comment thread
      description: Reopen a previously resolved comment thread on a test.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Thread reopened — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
  /projects/{owner}/{project}/tests/{testId}/comments/{commentId}/subscription:
    post:
      operationId: subscribeTestCommentThread
      summary: Subscribe to a test comment thread's notifications
      description: Subscribe the authenticated user to a comment thread on a test to
        receive notifications about new replies.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Subscribed — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
    delete:
      operationId: unsubscribeTestCommentThread
      summary: Unsubscribe from a test comment thread's notifications
      description: Unsubscribe the authenticated user from a test comment thread's
        notifications.
      tags:
        - Comments
      security:
        - personalAccessToken: []
        - oauth2:
            - comments:write
      parameters:
        - in: path
          name: owner
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: project
          schema:
            type: string
            minLength: 1
          required: true
        - in: path
          name: testId
          schema:
            $ref: "#/components/schemas/TestId"
          required: true
          description: The test identifier, as returned in a diff's `test.id`
        - in: path
          name: commentId
          schema:
            $ref: "#/components/schemas/ThreadCommentId"
          required: true
          description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
      responses:
        "200":
          description: Unsubscribed — returns the root comment
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Comment"
        "400":
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
      x-gitbook-mcp: true
components:
  schemas:
    TeamDefaultUserLevel:
      type: string
      enum:
        - member
        - contributor
      description: Role given to users that join a team through its invite link or a
        verified email domain.
    TeamUserLevel:
      type: string
      enum:
        - owner
        - member
        - contributor
      description: Role of a user on a team. Owners administer the team, members see
        every project, contributors only the projects they are added to.
    CommentId:
      type: string
      description: The public ID of the comment (e.g. `comment-xf23d`)
    ThreadCommentId:
      type: string
      description: Public ID of any comment in the thread (e.g. `comment-xf23d`)
    Sha1Hash:
      type: string
      pattern: ^[0-9a-f]{40}$
      description: SHA1 hash
    GitBranch:
      type: string
      minLength: 1
    Sha256Hash:
      type: string
      pattern: ^[A-Fa-f0-9]{64}$
      description: SHA256 hash
    ScreenshotUploadRequest:
      type: object
      properties:
        key:
          $ref: "#/components/schemas/Sha256Hash"
        contentType:
          description: Content type of the snapshot file
          type: string
      required:
        - key
        - contentType
      description: Screenshot file to upload
    BuildId:
      type: string
      description: A unique identifier for the build
      example: "12345"
    ScreenshotInput:
      type: object
      properties:
        key:
          type: string
          pattern: ^[A-Fa-f0-9]{64}$
        name:
          type: string
        baseName:
          description: "Name(s) to compare this screenshot against, instead of its own
            name. An array is tried in order: the first name that exists in the
            baseline wins, which lets a new screenshot fall back to an existing
            one."
          examples:
            - home.png
            - - home-variant-b.png
              - home.png
          anyOf:
            - anyOf:
                - type: string
                - minItems: 1
                  type: array
                  items:
                    type: string
            - type: "null"
        parentName:
          anyOf:
            - type: string
            - type: "null"
        metadata:
          anyOf:
            - type: object
              properties:
                $schema:
                  description: Ignored. Can be set to get completions, validations and
                    documentation in some editors.
                  examples:
                    - https://api.argos-ci.com/v2/screenshot-metadata.json
                  type: string
                url:
                  description: The URL of the page that was screenshotted
                  anyOf:
                    - type: string
                    - type: "null"
                previewUrl:
                  description: An URL to an accessible preview of the screenshot
                  anyOf:
                    - type: string
                    - type: "null"
                viewport:
                  anyOf:
                    - type: object
                      properties:
                        width:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                          description: The width of the viewport
                        height:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                          description: The height of the viewport
                      required:
                        - width
                        - height
                      description: The viewport dimensions when the screenshot was taken
                    - type: "null"
                colorScheme:
                  description: The color scheme when the screenshot was taken
                  anyOf:
                    - type: string
                      enum:
                        - light
                        - dark
                    - type: "null"
                mediaType:
                  description: The media type when the screenshot was taken
                  anyOf:
                    - type: string
                      enum:
                        - screen
                        - print
                    - type: "null"
                test:
                  anyOf:
                    - type: object
                      properties:
                        id:
                          description: The unique identifier of the test
                          anyOf:
                            - type: string
                            - type: "null"
                        title:
                          type: string
                          description: The title of the test
                        titlePath:
                          type: array
                          items:
                            type: string
                          description: The path of titles leading to the test
                        retries:
                          description: The number of retries for the test
                          anyOf:
                            - type: integer
                              minimum: 0
                              maximum: 9007199254740991
                            - type: "null"
                        retry:
                          description: The current retry count
                          anyOf:
                            - type: integer
                              minimum: 0
                              maximum: 9007199254740991
                            - type: "null"
                        repeat:
                          description: The repeat count for the test
                          anyOf:
                            - type: integer
                              minimum: 0
                              maximum: 9007199254740991
                            - type: "null"
                        location:
                          description: The location of the test in the source code
                          type: object
                          properties:
                            file:
                              type: string
                              description: The located file
                            line:
                              type: integer
                              minimum: 0
                              maximum: 9007199254740991
                              description: The line number in the file
                            column:
                              type: integer
                              minimum: 0
                              maximum: 9007199254740991
                              description: The column number in the file
                          required:
                            - file
                            - line
                            - column
                        annotations:
                          description: Annotations associated to the test
                          type: array
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                                description: The type of annotation
                              description:
                                description: The description of the annotation
                                type: string
                              location:
                                description: The location of the annotation in the source code
                                type: object
                                properties:
                                  file:
                                    type: string
                                    description: The located file
                                  line:
                                    type: integer
                                    minimum: 0
                                    maximum: 9007199254740991
                                    description: The line number in the file
                                  column:
                                    type: integer
                                    minimum: 0
                                    maximum: 9007199254740991
                                    description: The column number in the file
                                required:
                                  - file
                                  - line
                                  - column
                            required:
                              - type
                            description: A test annotation
                        tags:
                          description: Tags associated to the test
                          type: array
                          items:
                            type: string
                      required:
                        - title
                        - titlePath
                      description: The test that generated the screenshot
                    - type: "null"
                browser:
                  anyOf:
                    - type: object
                      properties:
                        name:
                          type: string
                          description: The name of the browser
                        version:
                          type: string
                          description: The version of the browser
                      required:
                        - name
                        - version
                      description: The browser that generated the screenshot
                    - type: "null"
                automationLibrary:
                  type: object
                  properties:
                    name:
                      type: string
                      description: The name of the automation library
                    version:
                      type: string
                      description: The version of the automation library
                  required:
                    - name
                    - version
                  description: The automation library that generated the screenshot
                sdk:
                  type: object
                  properties:
                    name:
                      type: string
                      description: The name of the Argos SDK
                    version:
                      type: string
                      description: The version of the Argos SDK
                  required:
                    - name
                    - version
                  description: The Argos SDK that generated the screenshot
                story:
                  description: Storybook story metadata
                  anyOf:
                    - type: object
                      properties:
                        id:
                          type: string
                          description: Unique ID of the story
                        tags:
                          description: Tags attached to the story
                          type: array
                          items:
                            type: string
                        mode:
                          description: Story mode
                          type: string
                        play:
                          description: True if the story has a play function
                          type: boolean
                      required:
                        - id
                      description: Storybook story metadata
                    - type: "null"
                tags:
                  description: Tags associated to the screenshot
                  type: array
                  items:
                    type: string
              required:
                - automationLibrary
                - sdk
              description: Metadata about a screenshot
            - type: "null"
        pwTraceKey:
          anyOf:
            - type: string
              pattern: ^[A-Fa-f0-9]{64}$
            - type: "null"
        threshold:
          anyOf:
            - type: number
              minimum: 0
              maximum: 1
            - type: "null"
        contentType:
          description: Content type of the snapshot file
          type: string
      required:
        - key
        - name
      description: Screenshot input
    BuildMetadata:
      description: Build metadata
      type: object
      properties:
        testReport:
          description: Test suite report
          type: object
          properties:
            status:
              type: string
              enum:
                - passed
                - failed
                - timedout
                - interrupted
              description: Status of the test suite
            stats:
              type: object
              properties:
                startTime:
                  description: Date when the test suite started
                  type: string
                duration:
                  description: Duration of the test suite in milliseconds
                  type: number
          required:
            - status
    SummaryCheck:
      type: string
      enum:
        - always
        - never
        - auto
      description: "When to post the summary check on a pull request: `always`,
        `never`, or `auto` (only once the project has a baseline)."
    ProjectUserLevel:
      type: string
      enum:
        - admin
        - reviewer
        - viewer
      description: Access level given to team members that are not explicit
        contributors on the project. `null` means they get no access.
    IgnoreConfig:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether changes can be ignored on this project.
        autoIgnore:
          anyOf:
            - type: object
              properties:
                changes:
                  type: integer
                  minimum: 1
                  maximum: 9007199254740991
                  description: Number of times a change must reappear before it is ignored
                    automatically.
              required:
                - changes
            - type: "null"
          description: Auto-ignore settings, `null` when auto-ignore is off.
      required:
        - enabled
        - autoIgnore
      description: How flaky changes are ignored on a project.
    DeploymentAuth:
      type: string
      enum:
        - public
        - domain-private
        - private
      description: "Who can reach the project's deployments: anyone (`public`), anyone
        with the domain (`domain-private`), or team members only (`private`,
        teams only)."
    AutomationEvent:
      type: string
      enum:
        - build.completed
        - build.reviewed
      description: An event an automation rule can react to.
    AutomationCondition:
      anyOf:
        - anyOf:
            - oneOf:
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-branch
                    value:
                      type: string
                      minLength: 1
                  required:
                    - type
                    - value
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-conclusion
                    value:
                      anyOf:
                        - type: string
                          enum:
                            - no-changes
                            - changes-detected
                        - type: "null"
                  required:
                    - type
                    - value
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-mode
                    value:
                      anyOf:
                        - type: string
                          enum:
                            - ci
                            - monitoring
                        - type: "null"
                  required:
                    - type
                    - value
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-name
                    value:
                      type: string
                      minLength: 1
                  required:
                    - type
                    - value
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-type
                    value:
                      anyOf:
                        - type: string
                          enum:
                            - reference
                            - check
                            - orphan
                            - skipped
                        - type: "null"
                  required:
                    - type
                    - value
              type: object
            - type: object
              properties:
                glob:
                  type: object
                  properties:
                    type:
                      type: string
                      const: build-branch
                    value:
                      type: string
                      minLength: 1
                  required:
                    - type
                    - value
              required:
                - glob
        - type: object
          properties:
            not:
              anyOf:
                - oneOf:
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-branch
                        value:
                          type: string
                          minLength: 1
                      required:
                        - type
                        - value
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-conclusion
                        value:
                          anyOf:
                            - type: string
                              enum:
                                - no-changes
                                - changes-detected
                            - type: "null"
                      required:
                        - type
                        - value
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-mode
                        value:
                          anyOf:
                            - type: string
                              enum:
                                - ci
                                - monitoring
                            - type: "null"
                      required:
                        - type
                        - value
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-name
                        value:
                          type: string
                          minLength: 1
                      required:
                        - type
                        - value
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-type
                        value:
                          anyOf:
                            - type: string
                              enum:
                                - reference
                                - check
                                - orphan
                                - skipped
                            - type: "null"
                      required:
                        - type
                        - value
                  type: object
                - type: object
                  properties:
                    glob:
                      type: object
                      properties:
                        type:
                          type: string
                          const: build-branch
                        value:
                          type: string
                          minLength: 1
                      required:
                        - type
                        - value
                  required:
                    - glob
          required:
            - not
      description: "A condition narrowing when a rule fires. Conditions are combined
        with AND; wrap one in `{ not: … }` to negate it, or `{ glob: … }` to
        match a branch by pattern."
    AutomationActionInput:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              const: sendSlackMessage
            payload:
              type: object
              properties:
                slackId:
                  default: ""
                  type: string
                  maxLength: 256
                name:
                  type: string
                  minLength: 1
                  maxLength: 256
              required:
                - name
          required:
            - type
            - payload
        - type: object
          properties:
            type:
              type: string
              const: sendMsTeamsMessage
            payload:
              type: object
              properties:
                webhookId:
                  type: string
                  minLength: 1
              required:
                - webhookId
          required:
            - type
            - payload
        - type: object
          properties:
            type:
              type: string
              const: sendDiscordMessage
            payload:
              type: object
              properties:
                webhookId:
                  type: string
                  minLength: 1
              required:
                - webhookId
          required:
            - type
            - payload
      description: An action to run. Slack channels are addressed by `slackId` when
        known, otherwise by `name`; Teams and Discord by the id of a webhook
        registered on the project's account.
      type: object
    BuildNumber:
      description: The build number
      example: 42
      type: string
    TestId:
      type: string
      description: The test identifier, as returned in a diff's `test.id`
      example: WEB-xf23d
    AccountDetails:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
          minLength: 1
        name:
          anyOf:
            - type: string
            - type: "null"
        type:
          type: string
          enum:
            - user
            - team
        plan:
          anyOf:
            - type: object
              properties:
                name:
                  type: string
                includedScreenshots:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
              required:
                - name
                - includedScreenshots
              additionalProperties: false
            - type: "null"
          description: The account's plan, `null` when it has none.
        periodStartDate:
          anyOf:
            - type: string
              format: date-time
              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
            - type: "null"
          description: Start of the current billing period.
        periodEndDate:
          anyOf:
            - type: string
              format: date-time
              pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
            - type: "null"
          description: End of the current billing period.
        currentPeriodScreenshots:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Screenshots used since the start of the current period.
        includedScreenshots:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Screenshots included in the plan for a period.
        consumptionRatio:
          type: number
          description: Used screenshots over included screenshots. Above `1` the account
            is over its plan and pays for the extra.
        additionalScreenshotsCost:
          type: number
          description: Cost accrued so far this period for screenshots beyond the plan, in
            the subscription's currency.
        defaultUserLevel:
          anyOf:
            - $ref: "#/components/schemas/TeamDefaultUserLevel"
            - type: "null"
          description: Role given to users joining through the invite link or a verified
            domain. `null` on a personal account.
      required:
        - id
        - slug
        - name
        - type
        - plan
        - periodStartDate
        - periodEndDate
        - currentPeriodScreenshots
        - includedScreenshots
        - consumptionRatio
        - additionalScreenshotsCost
        - defaultUserLevel
      additionalProperties: false
      description: An account with its plan and current-period usage, to watch
        consumption against the plan.
    Error:
      type: object
      properties:
        error:
          type: string
        details:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: Error response
    AccountAnalytics:
      type: object
      properties:
        screenshots:
          type: object
          properties:
            series:
              type: array
              items:
                type: object
                properties:
                  total:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  projects:
                    type: object
                    propertyNames:
                      type: string
                    additionalProperties:
                      type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    description: Counts keyed by project ID. Use the sibling `projects` array to
                      resolve each project name.
                  ts:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                    description: Unix timestamp in milliseconds at the start of the period.
                required:
                  - total
                  - projects
                  - ts
                additionalProperties: false
            all:
              type: object
              properties:
                total:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                projects:
                  type: object
                  propertyNames:
                    type: string
                  additionalProperties:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  description: Counts keyed by project ID. Use the sibling `projects` array to
                    resolve each project name.
              required:
                - total
                - projects
              additionalProperties: false
            projects:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                    minLength: 1
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_\-.]+$
                required:
                  - id
                  - name
                additionalProperties: false
          required:
            - series
            - all
            - projects
          additionalProperties: false
        builds:
          type: object
          properties:
            series:
              type: array
              items:
                type: object
                properties:
                  total:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  projects:
                    type: object
                    propertyNames:
                      type: string
                    additionalProperties:
                      type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    description: Counts keyed by project ID. Use the sibling `projects` array to
                      resolve each project name.
                  changesDetected:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  noChanges:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  accepted:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  rejected:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  ts:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                    description: Unix timestamp in milliseconds at the start of the period.
                required:
                  - total
                  - projects
                  - changesDetected
                  - noChanges
                  - accepted
                  - rejected
                  - ts
                additionalProperties: false
            all:
              type: object
              properties:
                total:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                projects:
                  type: object
                  propertyNames:
                    type: string
                  additionalProperties:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  description: Counts keyed by project ID. Use the sibling `projects` array to
                    resolve each project name.
                changesDetected:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                noChanges:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                accepted:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                rejected:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
              required:
                - total
                - projects
                - changesDetected
                - noChanges
                - accepted
                - rejected
              additionalProperties: false
            projects:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                    minLength: 1
                    maxLength: 100
                    pattern: ^[a-zA-Z0-9_\-.]+$
                required:
                  - id
                  - name
                additionalProperties: false
          required:
            - series
            - all
            - projects
          additionalProperties: false
      required:
        - screenshots
        - builds
      additionalProperties: false
    PageInfo:
      type: object
      properties:
        total:
          type: number
          description: Total number of items
        page:
          type: number
          description: Current page number
        perPage:
          type: number
          description: Number of items per page
      required:
        - total
        - page
        - perPage
      additionalProperties: false
      description: Page information
    Project:
      type: object
      properties:
        id:
          type: string
        account:
          $ref: "#/components/schemas/Account"
        name:
          type: string
          minLength: 1
        defaultBaseBranch:
          type: string
        hasRemoteContentAccess:
          type: boolean
        autoApprovedBranchGlob:
          type: string
          description: Glob matching the branches whose builds are approved automatically.
        deploymentProductionBranchGlob:
          type: string
          description: Glob matching the branches whose deployments are treated as
            production.
        private:
          type: boolean
          description: Whether the project is private. Resolved from the linked repository
            unless overridden.
        summaryCheck:
          $ref: "#/components/schemas/SummaryCheck"
        prCommentEnabled:
          type: boolean
          description: Whether Argos comments on pull requests.
        githubActionsOidcEnabled:
          type: boolean
          description: Whether builds can authenticate with a GitHub Actions OIDC token
            instead of a project token.
        tokenlessAuthEnabled:
          type: boolean
          description: Whether builds from forked pull requests can be uploaded without a
            token.
        deploymentEnabled:
          type: boolean
          description: Whether deployments are served for this project.
        deploymentAuth:
          $ref: "#/components/schemas/DeploymentAuth"
        defaultUserLevel:
          anyOf:
            - $ref: "#/components/schemas/ProjectUserLevel"
            - type: "null"
        ignoreConfig:
          $ref: "#/components/schemas/IgnoreConfigOutput"
      required:
        - id
        - account
        - name
        - defaultBaseBranch
        - hasRemoteContentAccess
        - autoApprovedBranchGlob
        - deploymentProductionBranchGlob
        - private
        - summaryCheck
        - prCommentEnabled
        - githubActionsOidcEnabled
        - tokenlessAuthEnabled
        - deploymentEnabled
        - deploymentAuth
        - defaultUserLevel
        - ignoreConfig
      additionalProperties: false
      description: Project
    Account:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
          minLength: 1
      required:
        - id
        - slug
      additionalProperties: false
      description: Account
    TeamMember:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the membership, not of the user.
        user:
          $ref: "#/components/schemas/User"
        level:
          $ref: "#/components/schemas/TeamUserLevel"
      required:
        - id
        - user
        - level
      additionalProperties: false
      description: A member of a team.
    User:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
        name:
          anyOf:
            - type: string
            - type: "null"
      required:
        - id
        - slug
        - name
      additionalProperties: false
      description: A user.
    TeamInvite:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
          format: email
          pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
        level:
          $ref: "#/components/schemas/TeamUserLevel"
        createdAt:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
        expiresAt:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
        expired:
          type: boolean
          description: Whether the invite is past its expiry date. Expired invites stay
            listed until they are cancelled or re-sent.
      required:
        - id
        - email
        - level
        - createdAt
        - expiresAt
        - expired
      additionalProperties: false
      description: A pending invitation to join a team.
    TeamDomain:
      type: object
      properties:
        domain:
          type: string
        createdAt:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
      required:
        - domain
        - createdAt
      additionalProperties: false
      description: "An email domain the team is open to: anyone signing up with a
        verified address on it joins automatically, at the team's default role."
    InviteLink:
      type: object
      properties:
        inviteLink:
          type: string
          format: uri
          description: The team's new shared invite link. Anyone with it joins at the
            team's default role.
      required:
        - inviteLink
      additionalProperties: false
    Media:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the media
        name:
          type: string
          description: The media's name, and its identity within its pull request.
            Uploading the same name again adds a version.
        state:
          anyOf:
            - type: string
              enum:
                - before
                - after
              description: Which half of a before/after pair this media is, so the two can be
                shown side by side and compared. Inferred from a file name
                ending in `-before` or `-after`.
            - type: "null"
        description:
          anyOf:
            - type: string
            - type: "null"
          description: Prose shown under the media in the pull request comment.
        stage:
          type: string
          enum:
            - staged
            - published
          description: "`staged` while the media is only attached to a branch, `published`
            once a pull request is attached and Argos lists it in that pull
            request's comment. A media attached to neither is `staged`."
        branch:
          anyOf:
            - type: string
            - type: "null"
          description: Branch this media was uploaded for. Kept after publishing, as a
            record of where it came from.
        prNumber:
          anyOf:
            - type: number
            - type: "null"
          description: Pull request this media is published to, or `null` while it is
            staged.
        url:
          type: string
          format: uri
          description: Share page URL. This is the link to put in a pull request or a chat
            message, and it keeps working across versions — it always shows the
            newest one.
        markdown:
          type: string
          description: "Ready-to-paste Markdown: the picture — the image itself, or a
            video's poster frame — embedded from the CDN and linked to the share
            page. Embed this rather than building your own from `url`: that is
            an HTML page, and an image embed pointing at it renders as a broken
            image."
        version:
          type: number
          description: "Which version this response describes: 1 for a first upload,
            incrementing each time the same name is uploaded again."
        versionCount:
          type: number
          description: How many uploaded versions this media has. Above 1, `GET
            /media/{mediaId}/versions` lists them — which is how a comment's
            `mediaVersionId` resolves to the file it was written against.
        fileUrl:
          type: string
          format: uri
          description: URL of the image or video itself, for an agent that wants to look
            at it.
        posterUrl:
          anyOf:
            - type: string
              format: uri
            - type: "null"
          description: Poster frame of a video, derived by the image CDN. Always `null`
            for images.
        contentType:
          type: string
          description: Content type of the media
        sizeBytes:
          type: number
          description: Size of the media, in bytes
        width:
          anyOf:
            - type: number
            - type: "null"
          description: Width, in pixels
        height:
          anyOf:
            - type: number
            - type: "null"
          description: Height, in pixels
        visibility:
          type: string
          enum:
            - team
            - public
          description: Who can open the media share page. `team` requires an Argos session
            with access to the owning account; `public` only requires the share
            URL.
        status:
          type: string
          enum:
            - pending
            - ready
          description: "`pending` until the bytes are uploaded, then `ready`. There is no
            processing step — Argos serves the bytes it was given."
        expiresAt:
          anyOf:
            - type: string
            - type: "null"
          description: When this version is deleted. Set from your plan's retention,
            counted from the upload rather than from the last view.
        createdAt:
          type: string
      required:
        - id
        - name
        - state
        - description
        - stage
        - branch
        - prNumber
        - url
        - markdown
        - version
        - versionCount
        - fileUrl
        - posterUrl
        - contentType
        - sizeBytes
        - width
        - height
        - visibility
        - status
        - expiresAt
        - createdAt
      additionalProperties: false
      description: A standalone image or video uploaded to Argos
    MediaUploadTarget:
      type: object
      properties:
        url:
          type: string
          format: uri
          description: URL to POST the file to, as `multipart/form-data`.
        fields:
          type: object
          propertyNames:
            type: string
          additionalProperties:
            type: string
          description: Form fields that must be appended **before** the file part, in
            order, for the upload to be accepted.
      required:
        - url
        - fields
      additionalProperties: false
      description: Signed upload target
    MediaVersion:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of this version — what a comment's
            `mediaVersionId` points at.
        number:
          type: number
          description: 1-based, and what the UI calls the version. Increments each time
            the same name is uploaded again.
        fileUrl:
          type: string
          format: uri
          description: URL of the image or video as it was at this version.
        posterUrl:
          anyOf:
            - type: string
              format: uri
            - type: "null"
          description: Poster frame of a video. Always `null` for images.
        contentType:
          type: string
        sizeBytes:
          type: number
        width:
          anyOf:
            - type: number
            - type: "null"
        height:
          anyOf:
            - type: number
            - type: "null"
        expiresAt:
          anyOf:
            - type: string
            - type: "null"
          description: When this version is deleted. Retention applies per version, so an
            old one ages out while the media and its share URL live on.
        createdAt:
          type: string
      required:
        - id
        - number
        - fileUrl
        - posterUrl
        - contentType
        - sizeBytes
        - width
        - height
        - expiresAt
        - createdAt
      additionalProperties: false
      description: One uploaded version of a media
    Comment:
      type: object
      properties:
        id:
          type: string
          description: Public ID of the comment (e.g. `comment-xf23d`) — the one the app
            links to, and the one every endpoint taking a comment ID expects.
        buildId:
          anyOf:
            - type: string
            - type: "null"
          description: Build this comment is posted on, null when it is posted on a test.
        testId:
          anyOf:
            - type: string
            - type: "null"
          description: Test this comment is posted on, null when it is posted on a build.
        mediaId:
          anyOf:
            - type: string
            - type: "null"
          description: Media this comment is posted on, null when it is posted on a build
            or a test.
        mediaVersionId:
          anyOf:
            - type: string
            - type: "null"
          description: Version of the media the comment was written against. A pin
            describes a spot on the bytes its author was looking at, so feedback
            on an older upload has to be read against that upload — match this
            id against `GET /media/{mediaId}/versions` to get the right file.
        threadId:
          anyOf:
            - type: string
            - type: "null"
          description: Root comment ID when this comment is a reply.
        body:
          description: Rich-text JSON content of the comment.
        text:
          type: string
          description: Plain-text rendering of the comment content.
        author:
          anyOf:
            - $ref: "#/components/schemas/User"
            - type: "null"
        screenshotDiffId:
          anyOf:
            - type: string
            - type: "null"
          description: Screenshot diff this comment is anchored to, if any.
        anchor:
          anyOf:
            - oneOf:
                - type: object
                  properties:
                    type:
                      type: string
                      const: point
                    x:
                      type: number
                    y:
                      type: number
                  required:
                    - type
                    - x
                    - y
                  additionalProperties: false
                - type: object
                  properties:
                    type:
                      type: string
                      const: lines
                    from:
                      type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    to:
                      type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                  required:
                    - type
                    - from
                    - to
                  additionalProperties: false
              description: Where on the referenced screenshot diff the comment points. A point
                uses normalized (0–1) coordinates; lines is a 1-based inclusive
                range.
              type: object
            - type: "null"
          description: Where the comment points on its screenshot diff. Null means the
            whole diff.
        pending:
          type: boolean
          description: Whether the comment belongs to a pending (unsubmitted) review and
            is only visible to its author.
        resolvedAt:
          anyOf:
            - type: string
            - type: "null"
          description: Date the thread was resolved, null if not resolved. Only set on a
            root comment.
        editedAt:
          anyOf:
            - type: string
            - type: "null"
          description: Date the comment was last edited, null if never edited.
        createdAt:
          type: string
          description: Date the comment was posted.
        reactions:
          type: array
          items:
            type: object
            properties:
              emoji:
                type: string
                description: The emoji used for the reaction.
              count:
                type: number
                description: Number of users who reacted with this emoji.
              users:
                type: array
                items:
                  $ref: "#/components/schemas/User"
                description: The users who reacted with this emoji.
            required:
              - emoji
              - count
              - users
            additionalProperties: false
            description: Reactions of a single emoji on a comment.
      required:
        - id
        - buildId
        - testId
        - mediaId
        - mediaVersionId
        - threadId
        - body
        - text
        - author
        - screenshotDiffId
        - anchor
        - pending
        - resolvedAt
        - editedAt
        - createdAt
        - reactions
      additionalProperties: false
      description: A comment posted on a build or on a test.
    Build:
      type: object
      properties:
        id:
          $ref: "#/components/schemas/BuildId"
        number:
          type: integer
          minimum: 1
          maximum: 9007199254740991
          description: The build number
          example: 42
        head:
          description: The head reference of the build
          $ref: "#/components/schemas/BuildGitReference"
        base:
          anyOf:
            - $ref: "#/components/schemas/BuildGitReference"
            - type: "null"
          description: The base reference of the build
        status:
          anyOf:
            - type: string
              enum:
                - accepted
                - rejected
            - type: string
              enum:
                - no-changes
                - changes-detected
            - type: string
              enum:
                - expired
                - pending
                - progress
                - error
                - aborted
          description: The status of the build
        conclusion:
          anyOf:
            - type: string
              enum:
                - no-changes
                - changes-detected
            - type: "null"
          description: The conclusion of the build
        stats:
          anyOf:
            - type: object
              properties:
                added:
                  type: number
                  description: Added snapshots
                removed:
                  type: number
                  description: Removed snapshots
                unchanged:
                  type: number
                  description: Unchanged snapshots
                changed:
                  type: number
                  description: Changed snapshots
                ignored:
                  type: number
                  description: Ignored snapshots
                failure:
                  type: number
                  description: Failure screenshots
                retryFailure:
                  type: number
                  description: Retry failure screenshots
                total:
                  type: number
                  description: Total number of snapshots
              required:
                - added
                - removed
                - unchanged
                - changed
                - ignored
                - failure
                - retryFailure
                - total
              additionalProperties: false
            - type: "null"
          description: Stats of the diffs present in the build
        metadata:
          anyOf:
            - type: object
              properties:
                testReport:
                  description: Test suite report
                  type: object
                  properties:
                    status:
                      type: string
                      enum:
                        - passed
                        - failed
                        - timedout
                        - interrupted
                      description: Status of the test suite
                    stats:
                      type: object
                      properties:
                        startTime:
                          description: Date when the test suite started
                          type: string
                        duration:
                          description: Duration of the test suite in milliseconds
                          type: number
                      additionalProperties: false
                  required:
                    - status
                  additionalProperties: false
              additionalProperties: false
              description: Metadata associated to the build
            - type: "null"
        url:
          type: string
          format: uri
          description: The URL of the build
        notification:
          anyOf:
            - type: object
              properties:
                description:
                  type: string
                context:
                  type: string
                github:
                  type: object
                  properties:
                    state:
                      type: string
                      enum:
                        - pending
                        - success
                        - error
                        - failure
                  required:
                    - state
                  additionalProperties: false
                gitlab:
                  type: object
                  properties:
                    state:
                      type: string
                      enum:
                        - pending
                        - running
                        - success
                        - failed
                        - canceled
                  required:
                    - state
                  additionalProperties: false
                url:
                  type: string
                  format: uri
              required:
                - description
                - context
                - github
                - gitlab
                - url
              additionalProperties: false
            - type: "null"
          description: The notification payload for the build
      required:
        - id
        - number
        - head
        - base
        - status
        - conclusion
        - stats
        - metadata
        - url
        - notification
      additionalProperties: false
      description: Build
    BuildGitReference:
      type: object
      properties:
        sha:
          description: The commit SHA
          $ref: "#/components/schemas/Sha1Hash"
        branch:
          type: string
          description: The branch name
      required:
        - sha
        - branch
      additionalProperties: false
      description: Git reference
    Me:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
        name:
          anyOf:
            - type: string
            - type: "null"
        accounts:
          type: array
          items:
            $ref: "#/components/schemas/MeAccount"
          description: "The accounts this token can access: the personal account and the
            teams selected when the token was created or authorized."
      required:
        - id
        - slug
        - name
        - accounts
      additionalProperties: false
      description: The authenticated user.
    MeAccount:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
          description: Account slug, used as the `owner` in API paths.
        name:
          anyOf:
            - type: string
            - type: "null"
        type:
          type: string
          enum:
            - user
            - team
      required:
        - id
        - slug
        - name
        - type
      additionalProperties: false
      description: An account (personal or team) accessible to the token.
    AutomationRule:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        active:
          type: boolean
          description: Whether the rule still fires. Deactivated rules keep their run
            history.
        events:
          type: array
          items:
            $ref: "#/components/schemas/AutomationEvent"
        conditions:
          type: array
          items:
            $ref: "#/components/schemas/AutomationConditionOutput"
        actions:
          type: array
          items:
            type: object
            properties:
              action:
                type: string
              actionPayload:
                type: object
                propertyNames:
                  type: string
                additionalProperties: {}
            required:
              - action
              - actionPayload
            additionalProperties: false
          description: The actions as stored, with their targets already resolved (a Slack
            channel id, a webhook id).
        createdAt:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
        updatedAt:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
      required:
        - id
        - name
        - active
        - events
        - conditions
        - actions
        - createdAt
        - updatedAt
      additionalProperties: false
      description: A rule that runs actions when a build event matches its conditions.
    ProjectContributor:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the grant, not of the user.
        user:
          $ref: "#/components/schemas/User"
        level:
          $ref: "#/components/schemas/ProjectUserLevel"
      required:
        - id
        - user
        - level
      additionalProperties: false
      description: A contributor explicitly granted access to a project. Team owners
        and members reach every project without appearing here.
    SnapshotDiff:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the snapshot diff
        name:
          type: string
          description: Name of the snapshot diff
        status:
          type: string
          enum:
            - pending
            - removed
            - failure
            - added
            - changed
            - unchanged
            - retryFailure
            - ignored
          description: Status of the snapshot diff
        score:
          anyOf:
            - type: number
            - type: "null"
          description: Similarity score between snapshots
        group:
          anyOf:
            - type: string
            - type: "null"
          description: Grouping key for the snapshot diff
        parentName:
          anyOf:
            - type: string
            - type: "null"
          description: Parent name of the snapshot (usually the story id)
        url:
          anyOf:
            - type: string
              format: uri
            - type: "null"
          description: URL of the diff image
        base:
          anyOf:
            - type: object
              properties:
                id:
                  type: string
                  description: Unique identifier of the snapshot
                name:
                  type: string
                  description: Name of the snapshot
                metadata:
                  anyOf:
                    - type: object
                      properties:
                        $schema:
                          description: Ignored. Can be set to get completions, validations and
                            documentation in some editors.
                          examples:
                            - https://api.argos-ci.com/v2/screenshot-metadata.json
                          type: string
                        url:
                          description: The URL of the page that was screenshotted
                          anyOf:
                            - type: string
                            - type: "null"
                        previewUrl:
                          description: An URL to an accessible preview of the screenshot
                          anyOf:
                            - type: string
                            - type: "null"
                        viewport:
                          anyOf:
                            - type: object
                              properties:
                                width:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                  description: The width of the viewport
                                height:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                  description: The height of the viewport
                              required:
                                - width
                                - height
                              additionalProperties: false
                              description: The viewport dimensions when the screenshot was taken
                            - type: "null"
                        colorScheme:
                          description: The color scheme when the screenshot was taken
                          anyOf:
                            - type: string
                              enum:
                                - light
                                - dark
                            - type: "null"
                        mediaType:
                          description: The media type when the screenshot was taken
                          anyOf:
                            - type: string
                              enum:
                                - screen
                                - print
                            - type: "null"
                        test:
                          anyOf:
                            - type: object
                              properties:
                                id:
                                  description: The unique identifier of the test
                                  anyOf:
                                    - type: string
                                    - type: "null"
                                title:
                                  type: string
                                  description: The title of the test
                                titlePath:
                                  type: array
                                  items:
                                    type: string
                                  description: The path of titles leading to the test
                                retries:
                                  description: The number of retries for the test
                                  anyOf:
                                    - type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                    - type: "null"
                                retry:
                                  description: The current retry count
                                  anyOf:
                                    - type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                    - type: "null"
                                repeat:
                                  description: The repeat count for the test
                                  anyOf:
                                    - type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                    - type: "null"
                                location:
                                  description: The location of the test in the source code
                                  type: object
                                  properties:
                                    file:
                                      type: string
                                      description: The located file
                                    line:
                                      type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                      description: The line number in the file
                                    column:
                                      type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                      description: The column number in the file
                                  required:
                                    - file
                                    - line
                                    - column
                                  additionalProperties: false
                                annotations:
                                  description: Annotations associated to the test
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      type:
                                        type: string
                                        description: The type of annotation
                                      description:
                                        description: The description of the annotation
                                        type: string
                                      location:
                                        description: The location of the annotation in the source code
                                        type: object
                                        properties:
                                          file:
                                            type: string
                                            description: The located file
                                          line:
                                            type: integer
                                            minimum: 0
                                            maximum: 9007199254740991
                                            description: The line number in the file
                                          column:
                                            type: integer
                                            minimum: 0
                                            maximum: 9007199254740991
                                            description: The column number in the file
                                        required:
                                          - file
                                          - line
                                          - column
                                        additionalProperties: false
                                    required:
                                      - type
                                    additionalProperties: false
                                    description: A test annotation
                                tags:
                                  description: Tags associated to the test
                                  type: array
                                  items:
                                    type: string
                              required:
                                - title
                                - titlePath
                              additionalProperties: false
                              description: The test that generated the screenshot
                            - type: "null"
                        browser:
                          anyOf:
                            - type: object
                              properties:
                                name:
                                  type: string
                                  description: The name of the browser
                                version:
                                  type: string
                                  description: The version of the browser
                              required:
                                - name
                                - version
                              additionalProperties: false
                              description: The browser that generated the screenshot
                            - type: "null"
                        automationLibrary:
                          type: object
                          properties:
                            name:
                              type: string
                              description: The name of the automation library
                            version:
                              type: string
                              description: The version of the automation library
                          required:
                            - name
                            - version
                          additionalProperties: false
                          description: The automation library that generated the screenshot
                        sdk:
                          type: object
                          properties:
                            name:
                              type: string
                              description: The name of the Argos SDK
                            version:
                              type: string
                              description: The version of the Argos SDK
                          required:
                            - name
                            - version
                          additionalProperties: false
                          description: The Argos SDK that generated the screenshot
                        story:
                          description: Storybook story metadata
                          anyOf:
                            - type: object
                              properties:
                                id:
                                  type: string
                                  description: Unique ID of the story
                                tags:
                                  description: Tags attached to the story
                                  type: array
                                  items:
                                    type: string
                                mode:
                                  description: Story mode
                                  type: string
                                play:
                                  description: True if the story has a play function
                                  type: boolean
                              required:
                                - id
                              additionalProperties: false
                              description: Storybook story metadata
                            - type: "null"
                        tags:
                          description: Tags associated to the screenshot
                          type: array
                          items:
                            type: string
                      required:
                        - automationLibrary
                        - sdk
                      additionalProperties: false
                      description: Metadata about a screenshot
                    - type: "null"
                width:
                  anyOf:
                    - type: number
                    - type: "null"
                  description: Width of the screenshot in pixels
                height:
                  anyOf:
                    - type: number
                    - type: "null"
                  description: Height of the screenshot in pixels
                url:
                  type: string
                  format: uri
                  description: Public URL of the snapshot
                contentType:
                  type: string
                  description: Content type of the snapshot file
              required:
                - id
                - name
                - metadata
                - width
                - height
                - url
                - contentType
              additionalProperties: false
              description: Snapshot associated to a diff
            - type: "null"
        head:
          anyOf:
            - type: object
              properties:
                id:
                  type: string
                  description: Unique identifier of the snapshot
                name:
                  type: string
                  description: Name of the snapshot
                metadata:
                  anyOf:
                    - type: object
                      properties:
                        $schema:
                          description: Ignored. Can be set to get completions, validations and
                            documentation in some editors.
                          examples:
                            - https://api.argos-ci.com/v2/screenshot-metadata.json
                          type: string
                        url:
                          description: The URL of the page that was screenshotted
                          anyOf:
                            - type: string
                            - type: "null"
                        previewUrl:
                          description: An URL to an accessible preview of the screenshot
                          anyOf:
                            - type: string
                            - type: "null"
                        viewport:
                          anyOf:
                            - type: object
                              properties:
                                width:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                  description: The width of the viewport
                                height:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                  description: The height of the viewport
                              required:
                                - width
                                - height
                              additionalProperties: false
                              description: The viewport dimensions when the screenshot was taken
                            - type: "null"
                        colorScheme:
                          description: The color scheme when the screenshot was taken
                          anyOf:
                            - type: string
                              enum:
                                - light
                                - dark
                            - type: "null"
                        mediaType:
                          description: The media type when the screenshot was taken
                          anyOf:
                            - type: string
                              enum:
                                - screen
                                - print
                            - type: "null"
                        test:
                          anyOf:
                            - type: object
                              properties:
                                id:
                                  description: The unique identifier of the test
                                  anyOf:
                                    - type: string
                                    - type: "null"
                                title:
                                  type: string
                                  description: The title of the test
                                titlePath:
                                  type: array
                                  items:
                                    type: string
                                  description: The path of titles leading to the test
                                retries:
                                  description: The number of retries for the test
                                  anyOf:
                                    - type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                    - type: "null"
                                retry:
                                  description: The current retry count
                                  anyOf:
                                    - type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                    - type: "null"
                                repeat:
                                  description: The repeat count for the test
                                  anyOf:
                                    - type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                    - type: "null"
                                location:
                                  description: The location of the test in the source code
                                  type: object
                                  properties:
                                    file:
                                      type: string
                                      description: The located file
                                    line:
                                      type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                      description: The line number in the file
                                    column:
                                      type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                      description: The column number in the file
                                  required:
                                    - file
                                    - line
                                    - column
                                  additionalProperties: false
                                annotations:
                                  description: Annotations associated to the test
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      type:
                                        type: string
                                        description: The type of annotation
                                      description:
                                        description: The description of the annotation
                                        type: string
                                      location:
                                        description: The location of the annotation in the source code
                                        type: object
                                        properties:
                                          file:
                                            type: string
                                            description: The located file
                                          line:
                                            type: integer
                                            minimum: 0
                                            maximum: 9007199254740991
                                            description: The line number in the file
                                          column:
                                            type: integer
                                            minimum: 0
                                            maximum: 9007199254740991
                                            description: The column number in the file
                                        required:
                                          - file
                                          - line
                                          - column
                                        additionalProperties: false
                                    required:
                                      - type
                                    additionalProperties: false
                                    description: A test annotation
                                tags:
                                  description: Tags associated to the test
                                  type: array
                                  items:
                                    type: string
                              required:
                                - title
                                - titlePath
                              additionalProperties: false
                              description: The test that generated the screenshot
                            - type: "null"
                        browser:
                          anyOf:
                            - type: object
                              properties:
                                name:
                                  type: string
                                  description: The name of the browser
                                version:
                                  type: string
                                  description: The version of the browser
                              required:
                                - name
                                - version
                              additionalProperties: false
                              description: The browser that generated the screenshot
                            - type: "null"
                        automationLibrary:
                          type: object
                          properties:
                            name:
                              type: string
                              description: The name of the automation library
                            version:
                              type: string
                              description: The version of the automation library
                          required:
                            - name
                            - version
                          additionalProperties: false
                          description: The automation library that generated the screenshot
                        sdk:
                          type: object
                          properties:
                            name:
                              type: string
                              description: The name of the Argos SDK
                            version:
                              type: string
                              description: The version of the Argos SDK
                          required:
                            - name
                            - version
                          additionalProperties: false
                          description: The Argos SDK that generated the screenshot
                        story:
                          description: Storybook story metadata
                          anyOf:
                            - type: object
                              properties:
                                id:
                                  type: string
                                  description: Unique ID of the story
                                tags:
                                  description: Tags attached to the story
                                  type: array
                                  items:
                                    type: string
                                mode:
                                  description: Story mode
                                  type: string
                                play:
                                  description: True if the story has a play function
                                  type: boolean
                              required:
                                - id
                              additionalProperties: false
                              description: Storybook story metadata
                            - type: "null"
                        tags:
                          description: Tags associated to the screenshot
                          type: array
                          items:
                            type: string
                      required:
                        - automationLibrary
                        - sdk
                      additionalProperties: false
                      description: Metadata about a screenshot
                    - type: "null"
                width:
                  anyOf:
                    - type: number
                    - type: "null"
                  description: Width of the screenshot in pixels
                height:
                  anyOf:
                    - type: number
                    - type: "null"
                  description: Height of the screenshot in pixels
                url:
                  type: string
                  format: uri
                  description: Public URL of the snapshot
                contentType:
                  type: string
                  description: Content type of the snapshot file
              required:
                - id
                - name
                - metadata
                - width
                - height
                - url
                - contentType
              additionalProperties: false
              description: Snapshot associated to a diff
            - type: "null"
        test:
          anyOf:
            - $ref: "#/components/schemas/Test"
            - type: "null"
        change:
          anyOf:
            - $ref: "#/components/schemas/Change"
            - type: "null"
      required:
        - id
        - name
        - status
        - score
        - group
        - parentName
        - url
        - base
        - head
        - test
        - change
      additionalProperties: false
      description: Snapshot diff
    Test:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the test
        name:
          type: string
          description: Name of the test
        buildName:
          type: string
          description: Name of the build the test belongs to
        metrics:
          $ref: "#/components/schemas/TestMetrics"
      required:
        - id
        - name
        - buildName
        - metrics
      additionalProperties: false
      description: Test associated to a diff, with flakiness metrics to help decide
        whether a change is worth reviewing.
    TestMetrics:
      type: object
      properties:
        total:
          type: number
          description: Number of builds in which this test ran over the metrics period.
        changes:
          type: number
          description: Number of times the test changed (produced a diff) over the metrics
            period.
        uniqueChanges:
          type: number
          description: Number of changes that were seen only once over the metrics period.
            A high ratio of unique changes is a strong flakiness signal.
        stability:
          type: number
          description: Ratio of builds without a change, between 0 and 1. `1` means the
            test never changed.
        consistency:
          type: number
          description: How consistent the changes are, between 0 and 1. `1` means changes
            repeat the same way; a low value means changes are erratic.
        flakiness:
          type: number
          description: Overall flakiness score between 0 and 1, derived from stability and
            consistency. `0` means stable, `1` means highly flaky.
      required:
        - total
        - changes
        - uniqueChanges
        - stability
        - consistency
        - flakiness
      additionalProperties: false
      description: Flakiness metrics of a test over the requested period.
    Change:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the change (a test + fingerprint pair). Use it
            with the ignore/unignore endpoints.
        ignored:
          type: boolean
          description: Whether this change is currently ignored. Ignored changes no longer
            require review and are automatically approved.
        occurrences:
          type: number
          description: Number of times this change has been seen over the metrics period.
            A high count for a recurring change is a strong flakiness signal.
      required:
        - id
        - ignored
        - occurrences
      additionalProperties: false
      description: "A test change: a specific visual difference (fingerprint) of a
        test that can be ignored to silence flaky changes."
    BuildReview:
      type: object
      properties:
        id:
          type: string
        buildId:
          type: string
        state:
          type: string
          enum:
            - approved
            - rejected
            - commented
            - pending
          description: "State of a build review: approved, rejected, commented (neutral)
            or pending (an unsubmitted draft)."
        user:
          anyOf:
            - $ref: "#/components/schemas/User"
            - type: "null"
          description: The user who submitted the review.
        dismissedAt:
          anyOf:
            - type: string
            - type: "null"
          description: Date the review was dismissed, null if not dismissed.
        dismissedBy:
          anyOf:
            - $ref: "#/components/schemas/User"
            - type: "null"
          description: The user who dismissed the review, if any.
        date:
          type: string
          description: Date the review was created.
      required:
        - id
        - buildId
        - state
        - user
        - dismissedAt
        - dismissedBy
        - date
      additionalProperties: false
      description: Build review
    BuildReviewers:
      type: object
      properties:
        reviewers:
          type: array
          items:
            $ref: "#/components/schemas/User"
          description: The users currently requested to review the build.
      required:
        - reviewers
      additionalProperties: false
      description: The review requests standing on a build.
    NotificationSubscription:
      type: object
      properties:
        subscribed:
          type: boolean
          description: Whether the authenticated user now receives notifications for this
            resource.
      required:
        - subscribed
      additionalProperties: false
      description: A notification subscription.
    TestSummary:
      description: A test with its flakiness metrics over the requested period. Fetch
        the test itself for its history and the changes behind the score.
      $ref: "#/components/schemas/Test"
    ProjectDomain:
      type: object
      properties:
        domain:
          anyOf:
            - type: string
            - type: "null"
          description: The project's production deployment domain, `null` when deployments
            are disabled or no domain is set.
      required:
        - domain
      additionalProperties: false
      description: A project's production deployment domain.
    IgnoredChange:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the ignored change, accepted by the unignore endpoint.
        test:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            buildName:
              type: string
          required:
            - id
            - name
            - buildName
          additionalProperties: false
          description: The test the ignored change belongs to.
      required:
        - id
        - test
      additionalProperties: false
      description: "A change currently ignored in a project: it no longer requires
        review and is approved automatically."
    TestDetails:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the test
        name:
          type: string
          description: Name of the test
        buildName:
          type: string
          description: Name of the build the test belongs to
        metrics:
          $ref: "#/components/schemas/TestMetrics"
        status:
          $ref: "#/components/schemas/TestStatus"
        createdAt:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
          description: When Argos first saw this test.
        url:
          type: string
          format: uri
          description: URL of the test in Argos.
        series:
          type: array
          items:
            $ref: "#/components/schemas/TestMetricsDataPoint"
          description: The test's metrics bucketed over the requested period, oldest
            first. Use it to tell a test that has always been flaky from one
            that only started recently.
        firstSeenChange:
          anyOf:
            - $ref: "#/components/schemas/TestChangeOccurrence"
            - type: "null"
          description: The first time this test ever changed, whatever the period. Null
            when it never changed.
        lastSeenChange:
          anyOf:
            - $ref: "#/components/schemas/TestChangeOccurrence"
            - type: "null"
          description: The last time this test changed, whatever the period. Null when it
            never changed.
      required:
        - id
        - name
        - buildName
        - metrics
        - status
        - createdAt
        - url
        - series
        - firstSeenChange
        - lastSeenChange
      additionalProperties: false
      description: A test with its flakiness metrics, both aggregated and over time,
        and when it first and last changed.
    TestStatus:
      type: string
      enum:
        - ongoing
        - removed
      description: "`ongoing` when the test still runs — it showed up in the latest
        build of its build name. `removed` when it did not, so it was deleted,
        renamed or skipped."
    TestMetricsDataPoint:
      type: object
      properties:
        date:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
          description: Start of the time bucket.
        total:
          type: number
          description: Number of builds in which the test ran in this bucket.
        changes:
          type: number
          description: Number of times the test changed in this bucket.
        uniqueChanges:
          type: number
          description: Number of those changes that were seen only once.
      required:
        - date
        - total
        - changes
        - uniqueChanges
      additionalProperties: false
      description: One bucket of a test's metrics over time. The bucket size is
        derived from the requested period.
    TestChangeOccurrence:
      type: object
      properties:
        date:
          type: string
          format: date-time
          pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
          description: When the diff was captured.
        url:
          anyOf:
            - type: string
              format: uri
            - type: "null"
          description: Public URL of the diff image. Null when the image is no longer
            available.
        buildNumber:
          type: integer
          minimum: 1
          maximum: 9007199254740991
          description: Number of the build that captured the diff.
          example: 42
        buildUrl:
          type: string
          format: uri
          description: URL of that build in Argos.
      required:
        - date
        - url
        - buildNumber
        - buildUrl
      additionalProperties: false
      description: A single appearance of a change, in the build that saw it.
    TestChange:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the change (a test + fingerprint pair). Use it
            with the ignore/unignore endpoints.
        ignored:
          type: boolean
          description: Whether this change is currently ignored. Ignored changes no longer
            require review and are automatically approved.
        occurrences:
          type: number
          description: Number of times this change has been seen over the metrics period.
            A high count for a recurring change is a strong flakiness signal.
        firstSeen:
          description: The first time this change was seen over the period.
          $ref: "#/components/schemas/TestChangeOccurrence"
        lastSeen:
          description: The last time this change was seen over the period.
          $ref: "#/components/schemas/TestChangeOccurrence"
        diff:
          description: The diff captured the last time the change was seen, with the
            baseline and the captured snapshot, so you can look at what moved.
          $ref: "#/components/schemas/SnapshotDiff"
      required:
        - id
        - ignored
        - occurrences
        - firstSeen
        - lastSeen
        - diff
      additionalProperties: false
      description: "One distinct change of a test: an exact visual difference, with
        how often it came back over the period. A change that keeps reappearing
        while nothing in the UI changed is a flaky one."
    IgnoreConfigOutput:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether changes can be ignored on this project.
        autoIgnore:
          anyOf:
            - type: object
              properties:
                changes:
                  type: integer
                  minimum: 1
                  maximum: 9007199254740991
                  description: Number of times a change must reappear before it is ignored
                    automatically.
              required:
                - changes
              additionalProperties: false
            - type: "null"
          description: Auto-ignore settings, `null` when auto-ignore is off.
      required:
        - enabled
        - autoIgnore
      additionalProperties: false
      description: How flaky changes are ignored on a project.
    AutomationConditionOutput:
      anyOf:
        - anyOf:
            - oneOf:
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-branch
                    value:
                      type: string
                      minLength: 1
                  required:
                    - type
                    - value
                  additionalProperties: false
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-conclusion
                    value:
                      anyOf:
                        - type: string
                          enum:
                            - no-changes
                            - changes-detected
                        - type: "null"
                  required:
                    - type
                    - value
                  additionalProperties: false
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-mode
                    value:
                      anyOf:
                        - type: string
                          enum:
                            - ci
                            - monitoring
                        - type: "null"
                  required:
                    - type
                    - value
                  additionalProperties: false
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-name
                    value:
                      type: string
                      minLength: 1
                  required:
                    - type
                    - value
                  additionalProperties: false
                - type: object
                  properties:
                    type:
                      type: string
                      const: build-type
                    value:
                      anyOf:
                        - type: string
                          enum:
                            - reference
                            - check
                            - orphan
                            - skipped
                        - type: "null"
                  required:
                    - type
                    - value
                  additionalProperties: false
              type: object
            - type: object
              properties:
                glob:
                  type: object
                  properties:
                    type:
                      type: string
                      const: build-branch
                    value:
                      type: string
                      minLength: 1
                  required:
                    - type
                    - value
                  additionalProperties: false
              required:
                - glob
              additionalProperties: false
        - type: object
          properties:
            not:
              anyOf:
                - oneOf:
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-branch
                        value:
                          type: string
                          minLength: 1
                      required:
                        - type
                        - value
                      additionalProperties: false
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-conclusion
                        value:
                          anyOf:
                            - type: string
                              enum:
                                - no-changes
                                - changes-detected
                            - type: "null"
                      required:
                        - type
                        - value
                      additionalProperties: false
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-mode
                        value:
                          anyOf:
                            - type: string
                              enum:
                                - ci
                                - monitoring
                            - type: "null"
                      required:
                        - type
                        - value
                      additionalProperties: false
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-name
                        value:
                          type: string
                          minLength: 1
                      required:
                        - type
                        - value
                      additionalProperties: false
                    - type: object
                      properties:
                        type:
                          type: string
                          const: build-type
                        value:
                          anyOf:
                            - type: string
                              enum:
                                - reference
                                - check
                                - orphan
                                - skipped
                            - type: "null"
                      required:
                        - type
                        - value
                      additionalProperties: false
                  type: object
                - type: object
                  properties:
                    glob:
                      type: object
                      properties:
                        type:
                          type: string
                          const: build-branch
                        value:
                          type: string
                          minLength: 1
                      required:
                        - type
                        - value
                      additionalProperties: false
                  required:
                    - glob
                  additionalProperties: false
          required:
            - not
          additionalProperties: false
      description: "A condition narrowing when a rule fires. Conditions are combined
        with AND; wrap one in `{ not: … }` to negate it, or `{ glob: … }` to
        match a branch by pattern."
  securitySchemes:
    projectToken:
      type: http
      scheme: bearer
      bearerFormat: Project Token
      description: |-
        Authenticate as a **project** with a project token.

        Send it as a bearer token in the `Authorization` header:

        ```http
        Authorization: Bearer <project-token>
        ```

        You can find your project token in your Argos project settings.
        Project tokens are used by CI and the SDK to create builds and
        deployments.
    personalAccessToken:
      type: http
      scheme: bearer
      bearerFormat: Personal Access Token
      description: |-
        Authenticate as a **user** with a personal access token.

        Send it as a bearer token in the `Authorization` header:

        ```http
        Authorization: Bearer <personal-access-token>
        ```

        Personal access tokens act on behalf of the user that created them
        and are required by endpoints that perform user actions, such as
        reviewing builds and posting comments.
    oauth2:
      type: oauth2
      description: |-
        Authenticate as a **user** via an OAuth 2.1 access token obtained
        through the authorization-code (+ PKCE) flow. Used by the CLI and by
        MCP clients/agents. The token acts on behalf of the authorizing user,
        limited to the granted scopes and organizations.
      flows:
        authorizationCode:
          authorizationUrl: https://app.argos-ci.com/oauth/authorize
          tokenUrl: https://app.argos-ci.com/oauth/token
          refreshUrl: https://app.argos-ci.com/oauth/token
          scopes:
            profile: Read your Argos profile and the list of teams you belong to.
            projects:read: Read your projects, builds, screenshots, diffs, tests, and
              analytics.
            projects:write: Create and configure projects and their settings.
            builds:write: Create and upload builds and screenshots.
            reviews:write: Approve, reject, or dismiss build reviews and ignore changes.
            comments:read: Read build comments and threads.
            comments:write: Post, edit, and delete comments, add reactions, and manage
              subscriptions.
            media:read: Read the images and videos uploaded to your teams.
            media:write: Upload images and videos, and delete the ones already uploaded.
            account:admin: Manage organization settings and members.
