> Documentation index: [Saleor](/llms.txt) · [This section](/api-reference/pages/llms.txt)
> Source: https://docs.saleor.io/api-reference/pages/objects/page-type

# PageType Object

Represents a type of page. It defines what attributes are available to pages of this type.

```graphql
type PageType implements Node, ObjectWithMetadata {
  id: ID!
  privateMetadata: [MetadataItem!]!
  privateMetafield(
    key: String!
  ): String
  privateMetafields(
    keys: [String!]
  ): Metadata
  metadata: [MetadataItem!]!
  metafield(
    key: String!
  ): String
  metafields(
    keys: [String!]
  ): Metadata
  name: String!
  slug: String!
  attributes: [Attribute!]
  availableAttributes(
    filter: AttributeFilterInput
    where: AttributeWhereInput
    search: String
    before: String
    after: String
    first: Int
    last: Int
  ): AttributeCountableConnection
  hasPages: Boolean
}
```

<a id="fields"></a>

### Fields

<a id="id"></a>

#### [`id`](#id) ● [`ID!`](/api-reference/miscellaneous/scalars/id.md)

ID of the page type.

<a id="private-metadata"></a>

#### [`privateMetadata`](#private-metadata) ● [`[MetadataItem!]!`](/api-reference/miscellaneous/objects/metadata-item.md)

List of private metadata items. Requires staff permissions to access.

<a id="private-metafield"></a>

#### [`privateMetafield`](#private-metafield) ● [`String`](/api-reference/miscellaneous/scalars/string.md)

A single key from private metadata. Requires staff permissions to access.

Tip: Use GraphQL aliases to fetch multiple keys.

<a id="page-type-private-metafield-key"></a>

##### [`key`](#page-type-private-metafield-key) ● [`String!`](/api-reference/miscellaneous/scalars/string.md)

<a id="private-metafields"></a>

#### [`privateMetafields`](#private-metafields) ● [`Metadata`](/api-reference/miscellaneous/scalars/metadata.md)

Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything.

<a id="page-type-private-metafields-keys"></a>

##### [`keys`](#page-type-private-metafields-keys) ● [`[String!]`](/api-reference/miscellaneous/scalars/string.md)

<a id="metadata"></a>

#### [`metadata`](#metadata) ● [`[MetadataItem!]!`](/api-reference/miscellaneous/objects/metadata-item.md)

List of public metadata items. Can be accessed without permissions.

<a id="metafield"></a>

#### [`metafield`](#metafield) ● [`String`](/api-reference/miscellaneous/scalars/string.md)

A single key from public metadata.

Tip: Use GraphQL aliases to fetch multiple keys.

<a id="page-type-metafield-key"></a>

##### [`key`](#page-type-metafield-key) ● [`String!`](/api-reference/miscellaneous/scalars/string.md)

<a id="metafields"></a>

#### [`metafields`](#metafields) ● [`Metadata`](/api-reference/miscellaneous/scalars/metadata.md)

Public metadata. Use `keys` to control which fields you want to include. The default is to include everything.

<a id="page-type-metafields-keys"></a>

##### [`keys`](#page-type-metafields-keys) ● [`[String!]`](/api-reference/miscellaneous/scalars/string.md)

<a id="name"></a>

#### [`name`](#name) ● [`String!`](/api-reference/miscellaneous/scalars/string.md)

Name of the page type.

<a id="slug"></a>

#### [`slug`](#slug) ● [`String!`](/api-reference/miscellaneous/scalars/string.md)

Slug of the page type.

<a id="attributes"></a>

#### [`attributes`](#attributes) ● [`[Attribute!]`](/api-reference/attributes/objects/attribute.md)

Page attributes of that page type.

<a id="available-attributes"></a>

#### [`availableAttributes`](#available-attributes) ● [`AttributeCountableConnection`](/api-reference/attributes/objects/attribute-countable-connection.md)

Attributes that can be assigned to the page type.

Requires one of the following permissions: MANAGE\_PAGES MANAGE\_PAGE\_TYPES\_AND\_ATTRIBUTES

<a id="page-type-available-attributes-filter"></a>

##### [`filter`](#page-type-available-attributes-filter) ● [`AttributeFilterInput`](/api-reference/attributes/inputs/attribute-filter-input.md)

DEPRECATED

Use `where` filter instead.

Filtering options for attributes.

<a id="page-type-available-attributes-where"></a>

##### [`where`](#page-type-available-attributes-where) ● [`AttributeWhereInput`](/api-reference/attributes/inputs/attribute-where-input.md)

Where filtering options for attributes.

<a id="page-type-available-attributes-search"></a>

##### [`search`](#page-type-available-attributes-search) ● [`String`](/api-reference/miscellaneous/scalars/string.md)

Search attributes.

<a id="page-type-available-attributes-before"></a>

##### [`before`](#page-type-available-attributes-before) ● [`String`](/api-reference/miscellaneous/scalars/string.md)

Return the elements in the list that come before the specified cursor.

<a id="page-type-available-attributes-after"></a>

##### [`after`](#page-type-available-attributes-after) ● [`String`](/api-reference/miscellaneous/scalars/string.md)

Return the elements in the list that come after the specified cursor.

<a id="page-type-available-attributes-first"></a>

##### [`first`](#page-type-available-attributes-first) ● [`Int`](/api-reference/miscellaneous/scalars/int.md)

Retrieve the first n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.

<a id="page-type-available-attributes-last"></a>

##### [`last`](#page-type-available-attributes-last) ● [`Int`](/api-reference/miscellaneous/scalars/int.md)

Retrieve the last n elements from the list. Note that the system only allows fetching a maximum of 100 objects in a single query.

<a id="has-pages"></a>

#### [`hasPages`](#has-pages) ● [`Boolean`](/api-reference/miscellaneous/scalars/boolean.md)

Whether page type has pages assigned.

Requires one of the following permissions: MANAGE\_PAGES MANAGE\_PAGE\_TYPES\_AND\_ATTRIBUTES

<a id="interfaces"></a>

### Interfaces

<a id="node"></a>

#### [`Node`](/api-reference/miscellaneous/interfaces/node.md)

An object with an ID

<a id="objectwithmetadata"></a>

#### [`ObjectWithMetadata`](/api-reference/miscellaneous/interfaces/object-with-metadata.md)

<a id="returned-by"></a>

### Returned By

[`pageType`](/api-reference/pages/queries/page-type.md) query

<a id="member-of"></a>

### Member Of

[`Page`](/api-reference/pages/objects/page.md) object  ● [`PageAttributeAssign`](/api-reference/pages/objects/page-attribute-assign.md) object  ● [`PageAttributeUnassign`](/api-reference/pages/objects/page-attribute-unassign.md) object  ● [`PageTypeCountableEdge`](/api-reference/pages/objects/page-type-countable-edge.md) object  ● [`PageTypeCreate`](/api-reference/pages/objects/page-type-create.md) object  ● [`PageTypeCreated`](/api-reference/pages/objects/page-type-created.md) object  ● [`PageTypeDelete`](/api-reference/pages/objects/page-type-delete.md) object  ● [`PageTypeDeleted`](/api-reference/pages/objects/page-type-deleted.md) object  ● [`PageTypeReorderAttributes`](/api-reference/pages/objects/page-type-reorder-attributes.md) object  ● [`PageTypeUpdate`](/api-reference/pages/objects/page-type-update.md) object  ● [`PageTypeUpdated`](/api-reference/pages/objects/page-type-updated.md) object  ● [`RefundSettings`](/api-reference/orders/objects/refund-settings.md) object  ● [`ReturnSettings`](/api-reference/orders/objects/return-settings.md) object

<a id="implemented-by"></a>

### Implemented By

[`_Entity`](/api-reference/miscellaneous/unions/entity.md) union  ● [`ReferenceType`](/api-reference/miscellaneous/unions/reference-type.md) union
