# List issues

Issues across the teams the CALLER IS IN (see listTeams for how that set is decided), ordered by position, then number, then id. Each row OMITS description: descriptions are unbounded markdown and no list renders one, so read it from getIssue instead. Filters combine with AND; q is a case-insensitive title substring match (LIKE wildcards in q are escaped and match literally), or with scope=all a full-text search over titles, descriptions and comments.

KEYSET PAGED. Send limit to choose a page size and pass the nextCursor from the previous response to continue. nextCursor is present only while more rows remain, so its absence means the end of the list rather than a truncation the caller was never told about. total counts every row the filters match, not the page, because counts and progress in the UI are drawn from it and a page cannot say how many there are.

Cursors are opaque and must not be constructed or parsed by clients: the sort key they encode is free to change. A malformed cursor is a 400 rather than a silent restart, which would re-deliver the whole list.

limit defaults to 50. The old behaviour of returning up to 1000 rows in one response is still available by asking for it.

An issue in a team the caller is not in is invisible everywhere, not just here: reading one by id is a 404, never a 403, so the response does not confirm that it exists.

Canonical: https://easerix.com/docs/developers/api/tasks/issues/listIssues

{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}

export default function Layout(props) {
  const { APIPage, OpenAPIPage } = props.components ?? {};
  // "APIPage" is the old name from v10, this allows both for backward compatibility
  const Comp = OpenAPIPage ?? APIPage;
  return (
    <>
      {props.children}
      <Comp document="tasks" operations={[{"path":"/v1/issues","method":"get"}]} />
    </>
  );
}
