# Bobbin

> XRPC methods served by bobbin, the Tangled API.

Served by `bobbin` at `https://<bobbin host>/xrpc/<method>`. Ours is `https://api.tangled.org`.

## org.tangled.actor.getProfile

`GET`.

Params:

* `actor` (string, at-uri, required): AT-URI of the sh.tangled.actor.profile record to fetch.

Output:

* `uri` (string, at-uri, required)
* `cid` (string, cid)
* `value` (unknown, required): Embedded sh.tangled.actor.profile record.

## org.tangled.actor.getProfileActivity

`GET`. Get recent Tangled activity for an actor, grouped by calendar month.

Params:

* `actor` (string, did, required): Actor whose activity to return.
* `months` (integer, default `7`, 1 to 12): Number of UTC calendar months to include, including the current month.

Output:

* `months` (array of `activityMonth`, required)
* `truncated` (boolean, required): True when the result reached the server activity-item safety limit.

## org.tangled.actor.getProfiles

`GET`.

Params:

* `actors` (array of string, at-uri, required): AT-URIs of the sh.tangled.actor.profile records to fetch. At most 50 per request.

Output:

* `items` (array of `recordView`, required)

## org.tangled.actor.getTrending

`GET`. Get trending people and repositories.

Output:

* `people` (array of `org.tangled.actor.defs#profileViewDetailed`, required)
* `repos` (array of `org.tangled.repo.defs#repoViewBasic`, required)

## org.tangled.actor.searchActorsTypeahead

`GET`. Find actors by their verified handle.

Params:

* `q` (string, required): The beginning of a handle. A leading @ is optional.
* `limit` (integer, default `10`, 1 to 100)

Output:

* `actors` (array of `actor`, required)

## org.tangled.bobbin.awaitRecord

`GET`. Wait for a record written to a PDS to reach this bobbin instance, then report what happened to it.

Params:

* `uri` (string, at-uri, required): AT-URI of the record that was written.
* `cid` (string, cid): CID of the revision that was written, as returned by createRecord, putRecord or applyWrites. Omit it only when awaiting a delete, which has no CID. any other responds with whatever revision of the record settles first.

Output:

* `status` (string, required, known values `indexed`, `deleted`, `rejected`): What bobbin did with the record.
* `cid` (string, cid): CID of the revision this result is about.
* `reason` (string, known values `unknownCollection`, `undecodable`, `missingBody`, `notIndexed`): Why a rejected record will not appear.
* `detail` (string): Opaque error message which can be more detailed than the reason.

Errors:

* `NotSettled`: The record had not reached the appview before the wait ran out
* `Overloaded`: Too many callers are already waiting, retry later or poll the record instead

## org.tangled.bobbin.getCoverage

No lexicon in this repository.

## org.tangled.feed.countComments

`GET`.

Params:

* `subject` (string, at-uri, required): Record AT-URI the comments attach to.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.feed.countCommentsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose comment authorings to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.feed.countReactions

`GET`.

Params:

* `subject` (string, at-uri, required): Record AT-URI the reactions target.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.feed.countReactionsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose reaction authorings to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.feed.countStars

`GET`.

Params:

* `subject` (string, required): Repo DID to list star edges for.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.feed.countStarsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose star authorings to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.feed.getStar

`GET`.

Params:

* `actor` (string, did, required): DID of the potential stargazer.
* `subject` (string, required): Repo DID to check.

Output:

* `uri` (string, at-uri, required): Uri of actor’s star record for subject.

## org.tangled.feed.getTimeline

`GET`.

Params:

* `viewer` (string, did): TODO: deprecate this and use auth instead.
* `followingOnly` (boolean)
* `limit` (integer, default `50`, 1 to 100)
* `cursor` (string)

Output:

* `feed` (array of `timelineItem`, required)
* `cursor` (string)

## org.tangled.feed.listComments

`GET`.

Params:

* `subject` (string, at-uri, required): Record AT-URI the comments attach to.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `org.tangled.feed.defs#commentView`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.feed.listCommentsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose comment authorings to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `org.tangled.feed.listComments#listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.feed.listReactions

`GET`.

Params:

* `subject` (string, at-uri, required): Record AT-URI the reactions target.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.feed.listReactionsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose reaction authorings to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `org.tangled.feed.listReactions#listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.feed.listStars

`GET`.

Params:

* `subject` (string, required): Repo DID to list star edges for.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.feed.listStarsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose star authorings to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `org.tangled.feed.listStars#listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.feed.subscription.getForActor

No lexicon in this repository.

## org.tangled.graph.countFollows

`GET`.

Params:

* `subject` (string, did, required): Followee DID whose inbound follows to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.graph.countFollowsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose follow authorings to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.graph.getFollow

`GET`.

Params:

* `actor` (string, did, required): DID of the potential follower.
* `subject` (string, did, required): Followee DID to check.

Output:

* `uri` (string, at-uri, required): Uri of actor’s follow record for subject.

## org.tangled.graph.listFollows

`GET`.

Params:

* `subject` (string, did, required): Followee DID whose inbound follows to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.graph.listFollowsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose follow authorings to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `org.tangled.graph.listFollows#listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.graph.listNetworkVouches

`GET`. List vouches involving one or more actors as seen through a viewer’s vouch network: vouches the viewer’s network placed on an actor, and vouches an actor placed on the viewer’s network. Requires authentication.

Params:

* `actors` (array of string, did, required): DIDs of the profiles whose network vouches to list. At most 50 per request.
* `cursor` (string): Pagination cursor. Only accepted when a single actor is requested.
* `limit` (integer, default `50`, 1 to 100): Maximum number of vouches per actor.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)

## org.tangled.label.countDefinitions

`GET`.

Params:

* `subject` (string, required): DID of the repo whose label definitions to count.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.label.listDefinitions

`GET`.

Params:

* `subject` (string, required): DID of the repo whose label definitions to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.publicKey.countKeys

`GET`.

Params:

* `subject` (string, did, required): Owner DID whose public-key records to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.publicKey.getPublicKey

`GET`.

Params:

* `publicKey` (string, at-uri, required): AT-URI of the sh.tangled.publicKey record to fetch.

Output:

* `uri` (string, at-uri, required)
* `cid` (string, cid)
* `value` (unknown, required): Embedded sh.tangled.publicKey record.

## org.tangled.publicKey.listKeys

`GET`.

Params:

* `subject` (string, did, required): Owner DID whose public-key records to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.query.enrichResponse

`POST`. Run an XRPC query and hydrate its response with a data sidecar: typed payloads for every did / at-uri / strong-ref found in the response.

Input:

* `xrpc` (string, nsid, required): NSID of the inner query to run, e.g. org.tangled.repo.listRepos.
* `params` (unknown): Parameters for the inner query, exactly as it declares them.
* `enrich` (array of `linkDescriptor`, required): Payloads to compute for each found reference.
* `viewer` (string, did): DID whose own relation to each reference is looked up for viewer payloads and views. Required when any descriptor requests a viewer payload.

Output:

* `output` (unknown, required): The inner query’s response, unmodified.
* `data` (unknown, required): Reference (did or at-uri) -> link source -> payload type nsid -> payload. References no descriptor applies to are absent.

Errors:

* `UnknownQuery`: The xrpc parameter does not name a query this server can execute
* `InvalidTargetPath`: A targets entry is not a valid record path
* `InvalidLinkDescriptor`: An enrich entry names an unknown payload type, collection, or path

## org.tangled.repo.countArtifacts

`GET`.

Params:

* `subject` (string, required): Repo or release identifier whose artifacts to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.repo.countArtifactsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose artifact authorings to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.repo.countCollaborators

`GET`.

Params:

* `subject` (string, did, required): Repo DID whose collaborator records to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.repo.countCollaboratorsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose collaborator authorings to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.repo.countForks

`GET`.

Params:

* `subject` (string, did, required): Repo DID to count forks of.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.repo.countIssues

`GET`.

Params:

* `subject` (string, did, required): Repo DID to list issues for
* `author` (string, did): Restrict to issues authored by this user DID.
* `state` (string, known values `open`, `closed`): Restrict to issues whose latest derived state matches.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.repo.countPulls

`GET`.

Params:

* `subject` (string, did, required): Repo DID to list pulls for
* `author` (string, did): Restrict to pulls authored by this user DID.
* `status` (string, known values `open`, `closed`, `merged`): Restrict to pulls whose latest derived status matches.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.repo.countRepos

`GET`.

Params:

* `subject` (string, did, required): Owner DID whose repo records to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.repo.getRepo

`GET`.

Params:

* `repo` (string, at-uri, required): AT-URI of the sh.tangled.repo record to fetch.

Output:

* `uri` (string, at-uri, required)
* `cid` (string, cid)
* `value` (unknown, required): Embedded sh.tangled.repo record.
* `knot` (string): Host of the knot named by the #tangled\_knot service in the repo’s DID document. Absent when it names none.

## org.tangled.repo.getRepoByName

`GET`.

Params:

* `owner` (string, did, required): DID of the account that owns the repo.
* `name` (string, required): Name of the repo as it appears in its url.

Output:

* `uri` (string, at-uri, required)
* `cid` (string, cid)
* `value` (unknown, required): Embedded sh.tangled.repo record.
* `knot` (string): Host of the knot named by the #tangled\_knot service in the repo’s DID document. Absent when it names none.

## org.tangled.repo.getRepoByRepoDid

`GET`.

Params:

* `repoDid` (string, did, required): Repo DID whose sh.tangled.repo record to fetch.

Output:

* `uri` (string, at-uri, required)
* `cid` (string, cid)
* `value` (unknown, required): Embedded sh.tangled.repo record.
* `knot` (string): Host of the knot named by the #tangled\_knot service in the repo’s DID document. Absent when it names none.

## org.tangled.repo.getRepos

`GET`.

Params:

* `repos` (array of string, at-uri, required): AT-URIs of the sh.tangled.repo records to fetch. At most 50 per request.

Output:

* `items` (array of `recordView`, required)

## org.tangled.repo.getReposByRepoDids

`GET`.

Params:

* `dids` (array of string, did, required): Repo DIDs to fetch. DIDs that resolve to none are omitted from the response.

Output:

* `items` (array of `listItem`, required)

## org.tangled.repo.listArtifacts

`GET`.

Params:

* `subject` (string, required): Repo or release identifier whose artifacts to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.repo.listArtifactsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose artifact authorings to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `org.tangled.repo.listArtifacts#listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.repo.listCollaboratorInvitesBy

`GET`. Collaboration offers an actor DID has waiting for them. The inverse of sh.tangled.repo.listCollaboratorInvites, which knots serve only for their own repo.

Params:

* `subject` (string, did, required): Actor DID offered collaboration.

Output:

* `items` (array of `inviteItem`, required)
* `pending` (array of string, did, required): Knots that this index hasn’t read yet
* `truncated` (boolean, required): Per-subject dropped offers from items. If truncated is true, missing offers won’t say if they were withdrawn, same with pending knots.

## org.tangled.repo.listCollaborators

`GET`.

Params:

* `subject` (string, did, required): Repo DID whose collaborator records to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by effectiveSince.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.repo.listCollaboratorsBy

`GET`.

Params:

* `subject` (string, did, required): Actor DID whose collaborator authorings to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `org.tangled.repo.listCollaborators#listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.repo.listForks

`GET`.

Params:

* `subject` (string, did, required): Repo DID to list forks of.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.repo.listIssues

`GET`.

Params:

* `subject` (string, did, required): Repo DID to list issues for
* `author` (string, did): Restrict to issues authored by this user DID.
* `state` (string, known values `open`, `closed`): Restrict to issues whose latest derived state matches.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `issueListItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.repo.listPulls

`GET`.

Params:

* `subject` (string, did, required): Repo DID to list pulls for
* `author` (string, did): Restrict to pulls authored by this user DID.
* `status` (string, known values `open`, `closed`, `merged`): Restrict to pulls whose latest derived status matches.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `pullListItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.repo.listRepos

`GET`.

Params:

* `subject` (string, did, required): Owner DID whose repo records to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.search.query

`GET`. Full-text and faceted search over indexed records.

Params:

* `q` (string): Search query: free text plus key:value qualifiers. See the docs for more information.
* `nsid` (string, nsid): Restrict to records of this collection.
* `author` (string, did): Restrict to records authored by this DID.
* `repo` (string, did): Restrict to records under this repo DID.
* `since` (string, datetime): Restrict to records created at or after this time.
* `until` (string, datetime): Restrict to records created at or before this time.
* `kind` (string, known values `issue`, `pull`): Restrict tickets to issues or pull requests.
* `label` (array of string): Restrict tickets to those with all of these label names. Requires repo.
* `sort` (string, known values `relevance`, `created-desc`, `created-asc`): Result order.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for numbered pages. Mutually exclusive with cursor.
* `limit` (integer, default `50`, 1 to 1000)

Output:

* `hits` (array of `hit`, required)
* `cursor` (string)
* `total` (integer): Number of matches across all pages.
* `stateCounts` (`stateCounts`): Matches per ticket state, without the state filters.

Errors:

* `InvalidQuery`: The query failed to parse.

## org.tangled.string.countStrings

`GET`.

Params:

* `subject` (string, required): Scope identifier whose string records to list.

Output:

* `count` (integer, required): Total number of matching records.
* `distinctAuthors` (integer, required): Number of distinct authors among the matching records.

## org.tangled.string.getString

`GET`.

Params:

* `uri` (string, at-uri, required): AT-URI of the sh.tangled.string record to fetch.

Output:

* `uri` (string, at-uri, required)
* `cid` (string, cid)
* `value` (unknown, required): Embedded sh.tangled.string record.

## org.tangled.string.listStrings

`GET`.

Params:

* `subject` (string, required): Scope identifier whose string records to list.
* `cursor` (string): Pagination cursor
* `offset` (integer): Absolute offset for random-access pagination. Mutually exclusive with cursor; offsets drift under concurrent writes, so follow up with the returned cursor.
* `limit` (integer, default `50`, 1 to 1000)
* `order` (string, known values `asc`, `desc`, default `"desc"`): Sort direction by createdAt.

Output:

* `items` (array of `listItem`, required)
* `cursor` (string)
* `total` (integer): Total items in the full list; omitted for filtered or merged views

## org.tangled.track.getTicket

No lexicon in this repository.

## org.tangled.track.getTicketView

`GET`.

Params:

* `uri` (string, at-uri, required)

Output:

* `uri` (string, at-uri, required)
* `cid` (string, cid, required)
* `repo` (`org.tangled.repo.defs#repoViewBasic`, required)
* `author` (`org.tangled.actor.defs#profileViewBasic`, required): The account that opened the ticket, the editor of its first version. Not the account that last edited or closed it.
* `title` (`org.tangled.markup.markdown#inline`, required)
* `body` (`org.tangled.markup.markdown`)
* `state` (`ticketState`, required)
* `tangledLabels` (array of `org.tangled.label.defs#labelToken`)
* `targetBranch` (string): Present when the ticket is a pull request.
* `createdAt` (string, datetime, required)

## org.tangled.track.getTickets

No lexicon in this repository.