> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trysiren.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Templates API

> Fetch all templates with filtering and pagination

## Header

<ParamField header="Authorization" type="string" required>
  Bearer token for API authentication. Format: `Bearer {{apiToken}}`
</ParamField>

## Query Parameters

<ParamField query="tagNames" type="string">
  Filter templates by tag names.
</ParamField>

<ParamField query="search" type="string">
  Search templates by field.
</ParamField>

<ParamField query="sort" type="string">
  Sort templates by field.
</ParamField>

<ParamField query="page" type="integer">
  Page number for pagination. Default: 0.
</ParamField>

<ParamField query="size" type="integer">
  Number of items per page. Default: 10.
</ParamField>

## Response

<ResponseField name="data" type="object">
  <ResponseField name="totalElements" type="integer">
    Total number of templates.
  </ResponseField>

  <ResponseField name="totalPages" type="integer">
    Total number of pages.
  </ResponseField>

  <ResponseField name="size" type="integer">
    Page size.
  </ResponseField>

  <ResponseField name="content" type="array">
    List of template objects.

    <ResponseField type="object">
      <ResponseField name="id" type="UUID">
        Template ID.
      </ResponseField>

      <ResponseField name="name" type="string">
        Template name.
      </ResponseField>

      <ResponseField name="description" type="string">
        Template description.
      </ResponseField>

      <ResponseField name="variables" type="array">
        List of template variables.

        <ResponseField type="object">
          <ResponseField name="name" type="string">
            Variable name.
          </ResponseField>

          <ResponseField name="defaultValue" type="string">
            Default value for the variable.
          </ResponseField>
        </ResponseField>
      </ResponseField>

      <ResponseField name="tags" type="array">
        List of template tags.
      </ResponseField>

      <ResponseField name="draftVersion" type="object">
        Draft version details.

        <ResponseField name="id" type="UUID">
          Version ID.
        </ResponseField>

        <ResponseField name="version" type="integer">
          Version number.
        </ResponseField>

        <ResponseField name="status" type="string">
          Version status (e.g., "PUBLISHED\_LATEST").
        </ResponseField>

        <ResponseField name="publishedAt" type="datetime">
          Timestamp of when the version was published.
        </ResponseField>
      </ResponseField>

      <ResponseField name="publishedVersion" type="object">
        Published version details.

        <ResponseField name="id" type="UUID">
          Version ID.
        </ResponseField>

        <ResponseField name="version" type="integer">
          Version number.
        </ResponseField>

        <ResponseField name="status" type="string">
          Version status (e.g., "PUBLISHED\_LATEST").
        </ResponseField>

        <ResponseField name="publishedAt" type="datetime">
          Timestamp of when the version was published.
        </ResponseField>
      </ResponseField>

      <ResponseField name="templateVersions" type="array">
        List of all template versions.

        <ResponseField type="object">
          <ResponseField name="id" type="UUID">
            Version ID.
          </ResponseField>

          <ResponseField name="version" type="integer">
            Version number.
          </ResponseField>

          <ResponseField name="status" type="string">
            Version status (e.g., "PUBLISHED\_LATEST").
          </ResponseField>

          <ResponseField name="publishedAt" type="datetime">
            Timestamp of when the version was published.
          </ResponseField>
        </ResponseField>
      </ResponseField>
    </ResponseField>
  </ResponseField>

  <ResponseField name="number" type="integer">
    Current page number.
  </ResponseField>

  <ResponseField name="sort" type="object">
    Sort information.

    <ResponseField name="empty" type="boolean">
      Whether the sort is empty.
    </ResponseField>

    <ResponseField name="unsorted" type="boolean">
      Whether the sort is unsorted.
    </ResponseField>

    <ResponseField name="sorted" type="boolean">
      Whether the sort is sorted.
    </ResponseField>
  </ResponseField>

  <ResponseField name="numberOfElements" type="integer">
    Number of elements on this page.
  </ResponseField>

  <ResponseField name="first" type="boolean">
    Whether this is the first page.
  </ResponseField>

  <ResponseField name="last" type="boolean">
    Whether this is the last page.
  </ResponseField>

  <ResponseField name="pageable" type="object">
    Pageable information.

    <ResponseField name="offset" type="integer">
      Page offset.
    </ResponseField>

    <ResponseField name="sort" type="object">
      Sort information.

      <ResponseField name="empty" type="boolean">
        Whether the sort is empty.
      </ResponseField>

      <ResponseField name="unsorted" type="boolean">
        Whether the sort is unsorted.
      </ResponseField>

      <ResponseField name="sorted" type="boolean">
        Whether the sort is sorted.
      </ResponseField>
    </ResponseField>

    <ResponseField name="pageNumber" type="integer">
      Page number.
    </ResponseField>

    <ResponseField name="paged" type="boolean">
      Whether pagination is enabled.
    </ResponseField>

    <ResponseField name="pageSize" type="integer">
      Page size.
    </ResponseField>

    <ResponseField name="unpaged" type="boolean">
      Whether pagination is disabled.
    </ResponseField>
  </ResponseField>

  <ResponseField name="empty" type="boolean">
    Whether the result is empty.
  </ResponseField>
</ResponseField>

<ResponseField name="error" type="object">
  <ResponseField name="errorCode" type="string">
    The error code (e.g., `BAD_REQUEST`).
  </ResponseField>

  <ResponseField name="message" type="string">
    A human-readable error message.
  </ResponseField>
</ResponseField>

<ResponseField name="errors" type="array">
  List of error objects.

  <ResponseField type="object">
    <ResponseField name="errorCode" type="string">
      Error code.
    </ResponseField>

    <ResponseField name="message" type="string">
      Error message.
    </ResponseField>
  </ResponseField>
</ResponseField>

<ResponseField name="meta" type="object">
  Metadata object.
</ResponseField>

<ResponseExample>
  ```json success (200) theme={null}
  {
    "data": {
      "totalElements": 0,
      "totalPages": 0,
      "size": 0,
      "content": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "name": "string",
          "description": "string",
          "variables": [
            {
              "name": "string",
              "defaultValue": "string"
            }
          ],
          "tags": [
            "string"
          ],
          "draftVersion": {
            "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "version": 0,
            "status": "PUBLISHED_LATEST",
            "publishedAt": "2024-08-30T07:31:07.380Z"
          },
          "publishedVersion": {
            "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "version": 0,
            "status": "PUBLISHED_LATEST",
            "publishedAt": "2024-08-30T07:31:07.380Z"
          },
          "templateVersions": [
            {
              "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
              "version": 0,
              "status": "PUBLISHED_LATEST",
              "publishedAt": "2024-08-30T07:31:07.380Z"
            }
          ]
        }
      ],
      "number": 0,
      "sort": {
        "empty": true,
        "unsorted": true,
        "sorted": true
      },
      "numberOfElements": 0,
      "first": true,
      "last": true,
      "pageable": {
        "offset": 0,
        "sort": {
          "empty": true,
          "unsorted": true,
          "sorted": true
        },
        "pageNumber": 0,
        "paged": true,
        "pageSize": 0,
        "unpaged": true
      },
      "empty": true
    },
    "error": null,
    "errors": null,
    "meta": null
  }
  ```

  ```json bad request (400) theme={null}
  {
    "data": null,
    "error": {
      "errorCode": "BAD_REQUEST",
      "message": "Bad request"
    },
    "errors": [
      {
        "errorCode": "BAD_REQUEST",
        "message": "Bad request"
      }
    ],
    "meta": null
  }
  ```

  ```json unauthorised (401) theme={null}
  {
    "data": null,
    "error": {
      "errorCode": "UNAUTHORISED",
      "message": "Unauthorised"
    },
    "errors": [
      {
        "errorCode": "UNAUTHORISED",
        "message": "Unauthorised"
      }
    ],
    "meta": null
  }
  ```

  ```json not found (404) theme={null}
  {
    "data": null,
    "error": {
      "errorCode": "NOT FOUND",
      "message": "Not found"
    },
    "errors": [
      {
        "errorCode": "NOT FOUND",
        "message": "Not found"
      }
    ],
    "meta": null
  }
  ```
</ResponseExample>

## Status Codes

* `200` - OK
* `400` - BAD REQUEST
* `401` - UNAUTHORISED
* `404` - NOT FOUND
