Fwozen Repositories API

The repositories Fwozen can see, and the ones you have enabled. Private repos are the billable unit, and Fwozen never enables one on its own.

GitHub OpenAPI

Operations 9

GET /v1/repos List repositories #
POST /v1/repos/sync Re-sync the repository mirror from GitHub #
POST /v1/repos/enable Enable repositories #
POST /v1/repos/disable Disable repositories #
POST /v1/repos/preview-glob Preview which repositories a glob matches #
GET /v1/repos/{repoId} Get a repository #
PATCH /v1/repos/{repoId} Update repository settings #
GET /v1/repos/{repoId}/pulls List tracked pull requests of a repository #
GET /v1/pulls/lookup Resolve a PR from a URL, owner/repo#123, or a number #

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for apis

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

Call it yourself

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

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

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

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

OpenAPI Specification

fwozen-com-repositories-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fwozen Com Repositories API
  version: 1.0.0
  contact:
    name: Fwozen support
    url: https://fwozen.com/docs
    email: hello@fwozen.com
  license:
    name: Fwozen Terms of Service
    url: https://fwozen.com/legal/terms
  description: 'Operations tagged Repositories across 2 of this provider''s published API definitions: fwozen-com-openapi.json, fwozen-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.fwozen.com
security:
- bearerApiKey: []
tags:
- name: Repositories
  description: The repositories Fwozen can see, and the ones you have enabled. Private repos are the billable unit, and Fwozen never enables one on its own.
paths:
  /v1/repos:
    get:
      operationId: listRepos
      summary: List repositories
      tags:
      - Repositories
      security:
      - bearerApiKey:
        - repo:read
      - bearerJwt: []
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          default: 50
          type: integer
          minimum: 1
          maximum: 200
      - name: cursor
        in: query
        required: false
        schema:
          type: string
          maxLength: 512
      - name: q
        in: query
        required: false
        schema:
          type: string
          maxLength: 120
      - name: enabled
        in: query
        required: false
        schema:
          type: string
      - name: visibility
        in: query
        required: false
        schema:
          default: all
          type: string
          enum:
          - public
          - private
          - all
      - name: archived
        in: query
        required: false
        schema:
          type: string
      - name: frozen
        in: query
        required: false
        schema:
          type: string
      - name: sort
        in: query
        required: false
        schema:
          default: name
          type: string
          enum:
          - name
          - updated
          - open_prs
      - name: installationId
        in: query
        required: false
        schema:
          type: string
          pattern: ^ins_[1-9A-HJ-NP-Za-km-z]{16}$
      responses:
        '200':
          description: List repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepoPage'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-fwozen-rate-cost: 1
      x-fwozen-scopes:
      - repo:read
    servers:
    - url: https://api.fwozen.com
  /v1/repos/sync:
    post:
      operationId: syncRepos
      summary: Re-sync the repository mirror from GitHub
      description: Session or `fwz_` key with `repo:write`. Enqueues a full reconcile for every active installation and returns immediately; poll `GET /v1/repos` for the result. Never enables a repository — enrollment is always an explicit `POST /v1/repos/enable`.
      tags:
      - Repositories
      security:
      - bearerApiKey:
        - repo:write
      - bearerJwt: []
      responses:
        '200':
          description: Re-sync the repository mirror from GitHub
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncReposResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-fwozen-rate-cost: 1
      x-fwozen-permissions:
      - repo:configure
      x-fwozen-scopes:
      - repo:write
    servers:
    - url: https://api.fwozen.com
  /v1/repos/enable:
    post:
      operationId: enableRepos
      summary: Enable repositories
      tags:
      - Repositories
      security:
      - bearerApiKey:
        - repo:write
      - bearerJwt: []
      responses:
        '200':
          description: Enable repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnableReposResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-fwozen-rate-cost: 1
      x-fwozen-permissions:
      - repo:configure
      x-fwozen-scopes:
      - repo:write
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableReposInputInput'
    servers:
    - url: https://api.fwozen.com
  /v1/repos/disable:
    post:
      operationId: disableRepos
      summary: Disable repositories
      tags:
      - Repositories
      security:
      - bearerApiKey:
        - repo:write
      - bearerJwt: []
      responses:
        '200':
          description: Disable repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnableReposResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-fwozen-rate-cost: 1
      x-fwozen-permissions:
      - repo:configure
      x-fwozen-scopes:
      - repo:write
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisableReposInputInput'
    servers:
    - url: https://api.fwozen.com
  /v1/repos/preview-glob:
    post:
      operationId: previewRepoGlob
      summary: Preview which repositories a glob matches
      tags:
      - Repositories
      security:
      - bearerApiKey:
        - repo:read
      - bearerJwt: []
      responses:
        '200':
          description: Preview which repositories a glob matches
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreviewGlobResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-fwozen-rate-cost: 1
      x-fwozen-scopes:
      - repo:read
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreviewGlobInputInput'
    servers:
    - url: https://api.fwozen.com
  /v1/repos/{repoId}:
    get:
      operationId: getRepo
      summary: Get a repository
      tags:
      - Repositories
      security:
      - bearerApiKey:
        - repo:read
      - bearerJwt: []
      parameters:
      - name: repoId
        in: path
        required: true
        schema:
          type: string
          pattern: ^repo_[1-9A-HJ-NP-Za-km-z]{16}$
      responses:
        '200':
          description: Get a repository
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Repo'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-fwozen-rate-cost: 1
      x-fwozen-scopes:
      - repo:read
    patch:
      operationId: updateRepo
      summary: Update repository settings
      description: 'Sets `iacManaged`: "this repository''s GitHub rules are managed as code". Fwozen never writes a ruleset to a repository marked this way — the setup surface reports `applyCapability: "iac_managed"` and keeps offering the guided path. Nothing infers this flag; it is only ever what somebody set here. SETTING it is `repo:write`; CLEARING it requires a first-party user session and answers 403 `credential_type_not_allowed` to an API key or a delegated token, because un-marking a repository re-arms the ruleset writer against one somebody deliberately fenced off.'
      tags:
      - Repositories
      security:
      - bearerApiKey:
        - repo:write
      - bearerJwt: []
      parameters:
      - name: repoId
        in: path
        required: true
        schema:
          type: string
          pattern: ^repo_[1-9A-HJ-NP-Za-km-z]{16}$
      responses:
        '200':
          description: Update repository settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Repo'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-fwozen-rate-cost: 1
      x-fwozen-permissions:
      - repo:configure
      x-fwozen-scopes:
      - repo:write
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRepoInputInput'
    servers:
    - url: https://api.fwozen.com
  /v1/repos/{repoId}/pulls:
    get:
      operationId: listRepoPulls
      summary: List tracked pull requests of a repository
      tags:
      - Repositories
      security:
      - bearerApiKey:
        - freeze:read
      - bearerJwt: []
      parameters:
      - name: repoId
        in: path
        required: true
        schema:
          type: string
          pattern: ^repo_[1-9A-HJ-NP-Za-km-z]{16}$
      - name: limit
        in: query
        required: false
        schema:
          default: 50
          type: integer
          minimum: 1
          maximum: 200
      - name: cursor
        in: query
        required: false
        schema:
          type: string
          maxLength: 512
      responses:
        '200':
          description: List tracked pull requests of a repository
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestPage'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-fwozen-rate-cost: 1
      x-fwozen-permissions:
      - freeze:read
      x-fwozen-scopes:
      - freeze:read
    servers:
    - url: https://api.fwozen.com
  /v1/pulls/lookup:
    get:
      operationId: lookupPull
      summary: Resolve a PR from a URL, owner/repo#123, or a number
      tags:
      - Repositories
      security:
      - bearerApiKey:
        - freeze:read
      - bearerJwt: []
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
          minLength: 1
          maxLength: 300
      - name: repoId
        in: query
        required: false
        schema:
          type: string
          pattern: ^repo_[1-9A-HJ-NP-Za-km-z]{16}$
      responses:
        '200':
          description: Resolve a PR from a URL, owner/repo#123, or a number
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
      x-fwozen-rate-cost: 1
      x-fwozen-permissions:
      - freeze:read
      x-fwozen-scopes:
      - freeze:read
    servers:
    - url: https://api.fwozen.com
components:
  schemas:
    RepoRef:
      type: object
      properties:
        id:
          type: string
          pattern: ^repo_[1-9A-HJ-NP-Za-km-z]{16}$
        fullName:
          type: string
        private:
          type: boolean
        archived:
          type: boolean
      required:
      - id
      - fullName
      - private
      - archived
      additionalProperties: false
    EnableReposInputInput:
      type: object
      properties:
        repoIds:
          default: []
          maxItems: 2000
          type: array
          items:
            type: string
            pattern: ^repo_[1-9A-HJ-NP-Za-km-z]{16}$
        patterns:
          default: []
          maxItems: 20
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 200
        excludePatterns:
          default: []
          maxItems: 20
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 200
        watchDefaultBranch:
          default: true
          type: boolean
        extraBranches:
          default: []
          maxItems: 20
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 255
        dryRun:
          default: false
          type: boolean
    DisableReposInputInput:
      type: object
      properties:
        repoIds:
          default: []
          maxItems: 2000
          type: array
          items:
            type: string
            pattern: ^repo_[1-9A-HJ-NP-Za-km-z]{16}$
        patterns:
          default: []
          maxItems: 20
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 200
        excludePatterns:
          default: []
          maxItems: 20
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 200
        dryRun:
          default: false
          type: boolean
    UpdateRepoInputInput:
      type: object
      properties:
        iacManaged:
          type: boolean
    PullRequestPage:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PullRequest'
        nextCursor:
          anyOf:
          - type: string
          - type: 'null'
      required:
      - data
      - nextCursor
      additionalProperties: false
    EnableReposResult:
      type: object
      properties:
        enabled:
          type: array
          items:
            $ref: '#/components/schemas/RepoRef'
        skipped:
          type: array
          items:
            type: object
            properties:
              repo:
                $ref: '#/components/schemas/RepoRef'
              code:
                type: string
                enum:
                - already_enabled
                - already_disabled
                - archived
                - no_access
            required:
            - repo
            - code
            additionalProperties: false
        billableRepoCount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        limit:
          anyOf:
          - type: integer
            minimum: -9007199254740991
            maximum: 9007199254740991
          - type: 'null'
        overLimit:
          type: boolean
        dryRun:
          type: boolean
      required:
      - enabled
      - skipped
      - billableRepoCount
      - limit
      - overLimit
      - dryRun
      additionalProperties: false
    SyncReposResult:
      type: object
      properties:
        queued:
          type: boolean
          const: true
        jobId:
          anyOf:
          - type: string
          - type: 'null'
      required:
      - queued
      - jobId
      additionalProperties: false
    PreviewGlobResult:
      type: object
      properties:
        matched:
          type: array
          items:
            $ref: '#/components/schemas/RepoRef'
        matchedCount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        truncated:
          type: boolean
      required:
      - matched
      - matchedCount
      - truncated
      additionalProperties: false
    PullRequestList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PullRequest'
      required:
      - data
      additionalProperties: false
    ErrorEnvelope:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
            code:
              type: string
            message:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  path:
                    type: string
                  message:
                    type: string
                required:
                - path
                - message
                additionalProperties: false
            docsUrl:
              type: string
            requestId:
              type: string
            warnings:
              type: array
              items:
                type: string
          required:
          - type
          - code
          - message
          - requestId
          additionalProperties: false
      required:
      - error
      additionalProperties: false
    Repo:
      type: object
      properties:
        id:
          type: string
          pattern: ^repo_[1-9A-HJ-NP-Za-km-z]{16}$
        githubRepoId:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        installationId:
          anyOf:
          - type: string
            pattern: ^ins_[1-9A-HJ-NP-Za-km-z]{16}$
          - type: 'null'
        accountLogin:
          anyOf:
          - type: string
          - type: 'null'
        owner:
          type: string
        name:
          type: string
        fullName:
          type: string
        private:
          type: boolean
        archived:
          type: boolean
        defaultBranch:
          type: string
        enabled:
          type: boolean
        enabledAt:
          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'
        iacManaged:
          type: boolean
        billable:
          type: boolean
        openPrCount:
          anyOf:
          - type: integer
            minimum: -9007199254740991
            maximum: 9007199254740991
          - type: 'null'
        watchedBranches:
          default: []
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                pattern: ^wbr_[1-9A-HJ-NP-Za-km-z]{16}$
              branch:
                type: string
              frozen:
                type: boolean
              enforcement:
                type: string
                enum:
                - green
                - yellow
                - red
                - unknown
              enforcementStatus:
                type: string
                enum:
                - enforcing
                - enrolled_not_enforcing
                - unknown
              freezeMethod:
                type: string
                enum:
                - check_run
                - commit_status
            required:
            - id
            - branch
            - frozen
            - enforcement
            - enforcementStatus
            - freezeMethod
            additionalProperties: false
        htmlUrl:
          type: string
          format: uri
      required:
      - id
      - githubRepoId
      - installationId
      - accountLogin
      - owner
      - name
      - fullName
      - private
      - archived
      - defaultBranch
      - enabled
      - enabledAt
      - iacManaged
      - billable
      - openPrCount
      - watchedBranches
      - htmlUrl
      additionalProperties: false
    PreviewGlobInputInput:
      type: object
      properties:
        patterns:
          minItems: 1
          maxItems: 20
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 200
        excludePatterns:
          default: []
          maxItems: 20
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 200
        includeArchived:
          default: false
          type: boolean
      required:
      - patterns
    RepoPage:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Repo'
        nextCursor:
          anyOf:
          - type: string
          - type: 'null'
      required:
      - data
      - nextCursor
      additionalProperties: false
    PullRequest:
      type: object
      properties:
        repoId:
          type: string
          pattern: ^repo_[1-9A-HJ-NP-Za-km-z]{16}$
        repoFullName:
          type: string
        number:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        title:
          anyOf:
          - type: string
          - type: 'null'
        authorLogin:
          anyOf:
          - type: string
          - type: 'null'
        state:
          type: string
          enum:
          - open
          - closed
          - merged
        isDraft:
          type: boolean
        baseRef:
          type: string
        headSha:
          anyOf:
          - type: string
            pattern: ^[0-9a-f]{40}$
          - type: 'null'
        htmlUrl:
          type: string
          format: uri
        blocked:
          type: boolean
        inMergeQueue:
          type: boolean
        exceptionId:
          anyOf:
          - type: string
            pattern: ^exc_[1-9A-HJ-NP-Za-km-z]{16}$
          - type: 'null'
        updatedAt:
          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'
      required:
      - repoId
      - repoFullName
      - number
      - title
      - authorLogin
      - state
      - isDraft
      - baseRef
      - headSha
      - htmlUrl
      - blocked
      - inMergeQueue
      - exceptionId
      - updatedAt
      additionalProperties: false
  responses:
    NotFound:
      description: No such resource — also returned for another organization's id.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Forbidden:
      description: Authenticated, but not permitted.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    RateLimited:
      description: Rate limit exceeded. Honour the `Retry-After` header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    ValidationFailed:
      description: The request failed schema validation; see `error.details`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    BadRequest:
      description: Malformed request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Unauthorized:
      description: Missing or invalid credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  securitySchemes:
    bearerApiKey:
      type: http
      scheme: bearer
      bearerFormat: fwz_<env>_<40 base58>
      description: 'Org-scoped, never user-scoped: the scope list IS the authorization. Calling a

        session-only route with a key returns **403 `credential_type_not_allowed`**, never 401,

        so scripts get an actionable message.


        **Where one comes from.** Sign in at

        [https://fwozen.com/app/settings/api-keys](https://fwozen.com/app/settings/api-keys) as an owner or an

        admin, press **Create key**, tick the narrowest scopes that do the job (`freeze:read`

        for a deploy gate, `freeze:write` to freeze and thaw), pick an expiry, and copy the

        secret, which is shown once. `POST /v1/api-keys` is the same thing programmatically and

        takes a **session** credential only, so a key can never mint another key. Scopes are

        fixed at creation and cannot be widened.


        - `freeze:read` — List freezes, freeze targets and freeze state, including GET /v1/freeze-state.

        - `freeze:write` — Start a freeze, lift one, extend one, create a thaw override, retry targets.

        - `schedule:read` — List schedules, occurrences and previews.

        - `schedule:write` — Create, edit, delete, skip and import schedules.

        - `exception:read` — List per-PR exceptions and exception requests.

        - `exception:write` — Grant, decide and revoke per-PR exceptions.

        - `repo:read` — List repositories, watched branches and enforcement state.

        - `repo:write` — Enable or disable repositories and change watched-branch settings.

        - `audit:read` — Read the audit log and stream the CSV export.

        - `billing:read` — Read the billing summary, plan, trial state and resolved entitlements.

        - `billing:write` — Start the 14-day no-card trial, and ask for a Stripe Checkout or Customer Portal link. It cannot pay for anything: those routes return a URL for a human to open and take no card details of any kind.'
    bearerJwt:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: A short-lived RS256 session token from `GET /api/auth/token` on the web origin. Used by the dashboard, the CLI and agents; audience-bound to this API.
x-refined-from:
- fwozen-com-openapi.json
- fwozen-com-openapi.yml
x-provenance:
  method: harvested
  publisher: Fwozen
  source: https://fwozen.com/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)