> ## Documentation Index
> Fetch the complete documentation index at: https://www.nestjs-query.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Endpoints

The [CRUDResolver](https://www.nestjs-query.dev/graphql/resolvers.md) automatically exposes two query endpoints. The endpoints names will be derived from
name provided to `@ObjectType` or the class name.

The following examples are based on the following `TodoItemDTO`

```ts title="todo-item.dto.ts" theme={null}
import { FilterableField } from '@ptc-org/nestjs-query-graphql'
import { ObjectType, ID, GraphQLISODateTime } from '@nestjs/graphql'

@ObjectType('TodoItem')
export class TodoItemDTO {

  @IDField(() => ID)
  id!: string

  @FilterableField()
  title!: string

  @FilterableField()
  completed!: boolean

  @FilterableField(() => GraphQLISODateTime)
  created!: Date

  @FilterableField(() => GraphQLISODateTime)
  updated!: Date
}
```

In the following examples you will see two endpoints referenced

* `todoItem` - graphql endpoint to find a record by id.
* `todoItems` - graphql endpoint to filter, page, and sort records,

## Find By Id

The following example finds a `TodoItem` by id.

> [tab] GraphQL
>
> ```graphql theme={null}
> {
>   todoItem(id: "1") {
>     id
>     title
>     completed
>     created
>     updated
>   }
> }
> ```

> [tab] Response
>
> ```json theme={null}
> {
>   "data": {
>     "todoItem": {
>       "id": "1",
>       "title": "Create One Todo Item",
>       "completed": false,
>       "created": "2020-01-14T07:00:31.763Z",
>       "updated": "2020-01-14T07:00:31.763Z"
>     }
>   }
> }
> ```

***

## Querying

As described above the `CRUDResolver` will expose a query method called `todoItems`. The result will be either
a [`connection`](https://relay.dev/graphql/connections.htm) or array depending on the [paging strategy you choose](https://www.nestjs-query.dev/graphql/queries/paging.md)

> [!NOTE]
>
> All examples below assume that a connection is returned but filtering and sorting work the same way for all paging strategies.
> To read how to page collections read the [paging docs](https://www.nestjs-query.dev/graphql/queries/paging.md)

By default if you do not provided an arguments it will uses a default value for [the page size](https://www.nestjs-query.dev/graphql/dtos.md#result-page-size) and for the [sorting](https://www.nestjs-query.dev/graphql/dtos.md#default-sort).

> [tab] GraphQL
>
> ```graphql theme={null}
> {
>   todoItems {
>     pageInfo {
>       hasNextPage
>       hasPreviousPage
>       startCursor
>       endCursor
>     }
>     edges {
>       node {
>         id
>         title
>         completed
>         created
>         updated
>       }
>       cursor
>     }
>   }
> }
> ```

> [tab] Response
>
> ```json theme={null}
> {
>   "data": {
>     "todoItems": {
>       "pageInfo": {
>         "hasNextPage": false,
>         "hasPreviousPage": false,
>         "startCursor": "YXJyYXljb25uZWN0aW9uOjA=",
>         "endCursor": "YXJyYXljb25uZWN0aW9uOjI="
>       },
>       "edges": [
>         {
>           "node": {
>             "id": "1",
>             "title": "Create One Todo Item",
>             "completed": false,
>             "created": "2020-01-01T00:43:16.000Z",
>             "updated": "2020-01-01T00:43:16.000Z"
>           },
>           "cursor": "YXJyYXljb25uZWN0aW9uOjA="
>         },
>         {
>           "node": {
>             "id": "2",
>             "title": "Create Many Todo Items - 1",
>             "completed": false,
>             "created": "2020-01-01T00:49:01.000Z",
>             "updated": "2020-01-01T00:49:01.000Z"
>           },
>           "cursor": "YXJyYXljb25uZWN0aW9uOjE="
>         },
>         {
>           "node": {
>             "id": "3",
>             "title": "Create Many Todo Items - 2",
>             "completed": true,
>             "created": "2020-01-01T00:49:01.000Z",
>             "updated": "2020-01-01T00:49:01.000Z"
>           },
>           "cursor": "YXJyYXljb25uZWN0aW9uOjI="
>         }
>       ]
>     }
>   }
> }
> ```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.