---
title: "Requests and pagination"
description: "Pages, raw requests, rate limits and URLs."
canonical_url: "https://forges.link/reference/requests"
---
# Requests and pagination

> Pages, raw requests, rate limits and URLs.

See [Page through results](https://forges.link/guides/pagination) for a walkthrough.

## Pagination

### `Page`

One page of a listing: its `items`, and the `cursor` to pass back for the next page. The cursor is absent on the
last page.

**type parameters:** `T`

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        items
      </code>
    </td>
    
    <td>
      <code>
        T[]
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        total?
      </code>
    </td>
    
    <td>
      <code>
        number
      </code>
    </td>
    
    <td>
      The forge's reported total for the whole listing, when it reports one. Absent when the forge reports no total, so an absent value is unknown and not zero.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        rateLimit?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/requests#ratelimit">
        <code>
          RateLimit
        </code>
      </a>
    </td>
    
    <td>
      From the response headers of the request behind this page.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        cursor?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/requests#cursor">
        <code>
          Cursor
        </code>
      </a>
    </td>
    
    <td>
      Absent when the listing is exhausted.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        etag?
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Validator of the first page, where the forge supports conditional requests. Pass it back as <code>
        cursor: { etag }
      </code>
      
       to read the first page again. Absent on later pages, and on listings that read more than one endpoint.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        notModified?
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      True when the forge reported no change since <code>
        cursor.etag
      </code>
      
      . The page then has no items and no <code>
        cursor
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        throttled?
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      True when the provider sent no request, because the forge asked to wait longer between reads of this feed. The page has no items and a <code>
        feed_throttled
      </code>
      
       warning; read it again later, or pass <code>
        force: true
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        nextPollAt?
      </code>
    </td>
    
    <td>
      <code>
        Date
      </code>
    </td>
    
    <td>
      The earliest time the forge allows the first page to be read again, as GitHub sets with <code>
        X-Poll-Interval
      </code>
      
      . Until then, a read of the first page returns a <code>
        throttled
      </code>
      
       page unless it passes <code>
        force: true
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        warnings?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/requests#forgewarning">
        <code>
          ForgeWarning[]
        </code>
      </a>
    </td>
    
    <td>
      The non-fatal problems that came up while reading the page.
    </td>
  </tr>
</tbody>
</table>

### `BaseOptions`

Options accepted by every operation that sends requests; the other options types extend it.

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        signal?
      </code>
    </td>
    
    <td>
      <code>
        AbortSignal
      </code>
    </td>
    
    <td>
      Aborts the operation's requests, and the operation rejects with the signal's reason. Writes the forge has already received are not undone.
    </td>
  </tr>
</tbody>
</table>

### `PageOptions`

Options for listings that take no filters: releases, installations, labels.

**extends:** [`BaseOptions`](https://forges.link/reference/requests#baseoptions)

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        perPage?
      </code>
    </td>
    
    <td>
      <code>
        number
      </code>
    </td>
    
    <td>
      How many items to ask for. The forge may return fewer.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        cursor?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/requests#cursor">
        <code>
          Cursor
        </code>
      </a>
    </td>
    
    <td>
      Resume after the page that returned this cursor.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        signal?
      </code>
    </td>
    
    <td>
      <code>
        AbortSignal
      </code>
    </td>
    
    <td>
      Aborts the operation's requests, and the operation rejects with the signal's reason. Writes the forge has already received are not undone. Inherited from <a href="https://forges.link/reference/requests#baseoptions">
        <code>
          BaseOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
</tbody>
</table>

### `ListOptions`

Options for listings that can start from a point in time: events, comments, reactions.

**extends:** [`PageOptions`](https://forges.link/reference/requests#pageoptions)

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        since?
      </code>
    </td>
    
    <td>
      <code>
        Date
      </code>
    </td>
    
    <td>
      Only items updated at or after this time.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        perPage?
      </code>
    </td>
    
    <td>
      <code>
        number
      </code>
    </td>
    
    <td>
      How many items to ask for. The forge may return fewer. Inherited from <a href="https://forges.link/reference/requests#pageoptions">
        <code>
          PageOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        cursor?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/requests#cursor">
        <code>
          Cursor
        </code>
      </a>
    </td>
    
    <td>
      Resume after the page that returned this cursor. Inherited from <a href="https://forges.link/reference/requests#pageoptions">
        <code>
          PageOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        signal?
      </code>
    </td>
    
    <td>
      <code>
        AbortSignal
      </code>
    </td>
    
    <td>
      Aborts the operation's requests, and the operation rejects with the signal's reason. Writes the forge has already received are not undone. Inherited from <a href="https://forges.link/reference/requests#baseoptions">
        <code>
          BaseOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
</tbody>
</table>

### `Cursor`

Opaque-ish resumption token. Fields are optional because forges differ in
what they support; callers should persist the whole object and hand it back.

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        nextUrl?
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Absolute URL of the next page, from a <code>
        Link
      </code>
      
       header or the body, on the requested origin.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        etag?
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The <code>
        etag
      </code>
      
       of a first page, sent as <code>
        If-None-Match
      </code>
      
       when the cursor has neither <code>
        nextUrl
      </code>
      
       nor <code>
        token
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        token?
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Opaque forge-native cursor, for example a GraphQL <code>
        endCursor
      </code>
      
      .
    </td>
  </tr>
</tbody>
</table>

### `ForgeIterable`

An async iterable that also collects non-fatal warnings as it runs. Read
`warnings` during or after iteration.

**type parameters:** `T`

**extends:** `AsyncIterable<T>`

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        warnings
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/requests#forgewarning">
        <code>
          ForgeWarning[]
        </code>
      </a>
    </td>
    
    <td>
      The non-fatal warnings collected so far. Read it during or after iteration.
    </td>
  </tr>
</tbody>
</table>

### `ForgeWarning`

A non-fatal problem encountered while producing a result.

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        code
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/requests#forgewarningcode">
        <code>
          ForgeWarningCode
        </code>
      </a>
    </td>
    
    <td>
      Stable machine-readable code.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        message
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      A description of the problem, for a person.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subject?
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Key or URI of the item the warning concerns, when it concerns one.
    </td>
  </tr>
</tbody>
</table>

### `ForgeWarningCode`

The warning codes providers emit; providers may add codes in a minor release.

**one of:**

- `'checks_unreadable'`
- `'collaborators_unreachable'`
- `'discussion_unresolved'`
- `'feed_throttled'`
- `'files_approximate'`
- `'filter_unsupported'`
- `'index_possibly_stale'`
- `'insufficient_scope'`
- `'kind_unsupported'`
- `'notifications_failed'`
- `'record_unreachable'`
- `'recursive_unsupported'`
- `'search_failed'`
- `'search_incomplete'`
- `'sort_unsupported'`
- `'state_record_unreachable'`
- `'thread_unreadable'`
- `'thread_unresolved'`
- `'tree_truncated'`
- `(string & {})`

### `RateLimit`

Request budget the forge reported on the response, where it reports one.

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        limit?
      </code>
    </td>
    
    <td>
      <code>
        number
      </code>
    </td>
    
    <td>
      The size of the request budget.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        remaining?
      </code>
    </td>
    
    <td>
      <code>
        number
      </code>
    </td>
    
    <td>
      The number of requests left in the budget.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        resetAt?
      </code>
    </td>
    
    <td>
      <code>
        Date
      </code>
    </td>
    
    <td>
      When <code>
        remaining
      </code>
      
       resets.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        resource?
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The name of the budget, where the forge has several and names them, such as GitHub's <code>
        core
      </code>
      
      , <code>
        search
      </code>
      
       or <code>
        graphql
      </code>
      
      , or GitLab's <code>
        throttle_authenticated_api
      </code>
      
      .
    </td>
  </tr>
</tbody>
</table>

## Raw requests

### `ForgeRequest`

`provider.request()`: sends a request with the provider's credentials, for endpoints that the model does not cover.

### `ForgeRequestOptions`

Options for `provider.request()`.

**extends:** [`BaseOptions`](https://forges.link/reference/requests#baseoptions)

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        query?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/contributing/provider-kit#requestoptions">
        <code>
          RequestOptions['query']
        </code>
      </a>
    </td>
    
    <td>
      Query parameters. Parameters that are <code>
        undefined
      </code>
      
       are left out.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        body?
      </code>
    </td>
    
    <td>
      <code>
        unknown
      </code>
    </td>
    
    <td>
      Native fetch bodies and strings are sent as-is; other values are sent as JSON.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        headers?
      </code>
    </td>
    
    <td>
      <code>
        Record<string, string>
      </code>
    </td>
    
    <td>
      Headers to send. They add to the provider's default headers.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        mutates?
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      Caller-declared mutation. Defaults to <code>
        false
      </code>
      
       for GET/HEAD/OPTIONS, otherwise <code>
        true
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        signal?
      </code>
    </td>
    
    <td>
      <code>
        AbortSignal
      </code>
    </td>
    
    <td>
      Aborts the operation's requests, and the operation rejects with the signal's reason. Writes the forge has already received are not undone. Inherited from <a href="https://forges.link/reference/requests#baseoptions">
        <code>
          BaseOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
</tbody>
</table>

### `ForgeRawRequestOptions`

`request()` with `raw`, for endpoints that respond with bytes rather than JSON.

**extends:** [`ForgeRequestOptions`](https://forges.link/reference/requests#forgerequestoptions)

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        raw
      </code>
    </td>
    
    <td>
      <code>
        true
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        query?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/contributing/provider-kit#requestoptions">
        <code>
          RequestOptions['query']
        </code>
      </a>
    </td>
    
    <td>
      Query parameters. Parameters that are <code>
        undefined
      </code>
      
       are left out. Inherited from <a href="https://forges.link/reference/requests#forgerequestoptions">
        <code>
          ForgeRequestOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        body?
      </code>
    </td>
    
    <td>
      <code>
        unknown
      </code>
    </td>
    
    <td>
      Native fetch bodies and strings are sent as-is; other values are sent as JSON. Inherited from <a href="https://forges.link/reference/requests#forgerequestoptions">
        <code>
          ForgeRequestOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        headers?
      </code>
    </td>
    
    <td>
      <code>
        Record<string, string>
      </code>
    </td>
    
    <td>
      Headers to send. They add to the provider's default headers. Inherited from <a href="https://forges.link/reference/requests#forgerequestoptions">
        <code>
          ForgeRequestOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        mutates?
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      Caller-declared mutation. Defaults to <code>
        false
      </code>
      
       for GET/HEAD/OPTIONS, otherwise <code>
        true
      </code>
      
      . Inherited from <a href="https://forges.link/reference/requests#forgerequestoptions">
        <code>
          ForgeRequestOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        signal?
      </code>
    </td>
    
    <td>
      <code>
        AbortSignal
      </code>
    </td>
    
    <td>
      Aborts the operation's requests, and the operation rejects with the signal's reason. Writes the forge has already received are not undone. Inherited from <a href="https://forges.link/reference/requests#baseoptions">
        <code>
          BaseOptions
        </code>
      </a>
      
      .
    </td>
  </tr>
</tbody>
</table>

### `ForgeResponse`

The result of `provider.request()`.

**type parameters:** `T`

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        status
      </code>
    </td>
    
    <td>
      <code>
        number
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data
      </code>
    </td>
    
    <td>
      <code>
        T
      </code>
    </td>
    
    <td>
      The parsed JSON body, or the text of a body that is not JSON.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        headers
      </code>
    </td>
    
    <td>
      <code>
        Headers
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        rateLimit?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/requests#ratelimit">
        <code>
          RateLimit
        </code>
      </a>
    </td>
    
    <td>
      The rate limit that the response headers report, when there is one.
    </td>
  </tr>
</tbody>
</table>

### `RawResponse`

A response whose body is read as it arrives rather than parsed.

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        status
      </code>
    </td>
    
    <td>
      <code>
        number
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        headers
      </code>
    </td>
    
    <td>
      <code>
        Headers
      </code>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        body
      </code>
    </td>
    
    <td>
      <code>
        ReadableStream<Uint8Array>
      </code>
    </td>
    
    <td>
      The body, read as it arrives.
    </td>
  </tr>
</tbody>
</table>

### `FetchLike`

The subset of `fetch` that forges needs, so a test or a runtime without a global `fetch` can supply its own.

**type:** `(input: string, init?: RequestInit) => Promise<Response>`

## URLs and references

### `UrlTarget`

Something with a web page. A revision (`at`, `base` or `head`) is a branch,
tag or commit sha; Azure DevOps reads anything but a full commit sha as a branch.

**one of:**

- [`{ repo: RepoRef }`](https://forges.link/reference/data-model#reporef)
- `{ repo: RepoRef, section: RepoSection }`
- [`{ thread: ThreadRef }`](https://forges.link/reference/data-model#threadref)
- [`{ comment: CommentRef }`](https://forges.link/reference/data-model#commentref)
- [`{ release: ReleaseRef }`](https://forges.link/reference/data-model#releaseref)
- [`{ file: { repo: RepoRef, path: string, at: string, line?: number } }`](https://forges.link/reference/data-model#reporef)
- [`{ raw: { repo: RepoRef, path: string, at: string } }`](https://forges.link/reference/data-model#reporef)
- [`{ commit: { repo: RepoRef, sha: string } }`](https://forges.link/reference/data-model#reporef)
- [`{ compare: { repo: RepoRef, base: string, head: string } }`](https://forges.link/reference/data-model#reporef)

### `ParsedForgeUrl`

What a forge web URL points at. `repo` is always set; the rest when the URL is that specific.

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        repo
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/data-model#reporef">
        <code>
          RepoRef
        </code>
      </a>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        thread?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/data-model#threadref">
        <code>
          ThreadRef
        </code>
      </a>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        comment?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/data-model#commentref">
        <code>
          CommentRef
        </code>
      </a>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        release?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/data-model#releaseref">
        <code>
          ReleaseRef
        </code>
      </a>
    </td>
    
    <td>
      
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        file?
      </code>
    </td>
    
    <td>
      
    </td>
    
    <td>
      A file page: the repository-relative <code>
        path
      </code>
      
      , the revision <code>
        at
      </code>
      
       and the first selected <code>
        line
      </code>
      
      . <code>
        at
      </code>
      
       is unset when the URL leaves the revision to the default branch. An unencoded <code>
        /
      </code>
      
       in a branch name reads as the start of <code>
        path
      </code>
      
      . Forges that address files and folders alike, such as Forgejo, Bitbucket and Azure DevOps, also set this for a folder.
    </td>
  </tr>
</tbody>
</table>

### `ReferenceOptions`

Options for `provider.referenceTo()`.

<table>
<thead>
  <tr>
    <th>
      Member
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        from?
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/data-model#reporef">
        <code>
          RepoRef
        </code>
      </a>
    </td>
    
    <td>
      Repository the reference is written in; a reference within it is the short form.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        expand?
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      Request the reference expanded to its title, where the forge supports it (GitLab's <code>
        +
      </code>
      
       suffix).
    </td>
  </tr>
</tbody>
</table>

### `parseForgeUrl()`

Reads `url` with whichever of `providers` serves it.

```ts
function parseForgeUrl(url: string | URL, providers: ReadonlyArray<{ parseUrl: (url: string | URL) => ParsedForgeUrl | undefined }>): ParsedForgeUrl | undefined
```

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        url
      </code>
    </td>
    
    <td>
      <code>
        string | URL
      </code>
    </td>
    
    <td>
      The web URL to read.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        providers
      </code>
    </td>
    
    <td>
      <a href="https://forges.link/reference/requests#parsedforgeurl">
        <code>
          ReadonlyArray<{ parseUrl: (url: string | URL) => ParsedForgeUrl | undefined }>
        </code>
      </a>
    </td>
    
    <td>
      The providers to ask. The first that serves the URL answers.
    </td>
  </tr>
</tbody>
</table>

**Returns:** [`ParsedForgeUrl | undefined`](https://forges.link/reference/requests#parsedforgeurl)

These exports are documented elsewhere: [`EventFeedOptions`](https://forges.link/reference/data-model#eventfeedoptions), [`RepoSection`](https://forges.link/reference/data-model#reposection).


## Sitemap

See the full [sitemap](https://forges.link/sitemap.md) for all pages.
