Homepage

PageInputType

Last edit: Oct 13, 2026

Attributes of a page, the same ones that can be set in a views/pages/*.liquid file

type PageInputType {
  authorization_policies: [String]
  authorization_policy_ids: [ID]
  content: String
  dynamic_cache_expire: Int
  dynamic_cache_key: String
  dynamic_cache_layout: Boolean
  format: PageFormat
  handler: PageHandler
  layout: String
  layout_name: String
  manually_managed: Boolean
  max_deep_level: Int
  metadata: HashObject
  physical_file_path: String!
  redirect_code: PageRedifectCode
  redirect_to: String
  request_method: PageRequestMethod
  response_headers: HashObject
  searchable: Boolean
  slug: String
  static_cache_expire: Int
  subdomain: String
}

Fields

authorization_policies (String)

Names of authorization policies checked before the page is rendered, the same
names as in the authorization_policies setting of a page file, for example
page_policy or modules/my_module/page_policy. Can be combined with
authorization_policy_ids; raises a validation error if any name does not exist

authorization_policy_ids (ID)

Ids of authorization policies checked before the page is rendered; replaces the current list

content (String)

Liquid code rendered as the page body

dynamic_cache_expire (Int)

Number of seconds the rendered page is cached for; authorization policies are still checked on every request

dynamic_cache_key (String)

Liquid code rendering to the cache key, for example {{ context.page.slug }}/{{ context.params.slug2 }}. When blank, the full URL is used

dynamic_cache_layout (Boolean)

When true, the layout is cached together with the page; usually not possible
when the layout shows user-specific data. Defaults to false

format (PageFormat)

Format of the page, for example html or json; the same slug can serve several formats. Defaults to html

handler (PageHandler)

Template language of the content. Currently ignored by this mutation

layout (String)

Name of the layout the page content is rendered into, for example
application; must be an existing layout unless it contains Liquid

layout_name (String)

Deprecated, use layout

manually_managed (Boolean)

When true, pos-cli deploy and sync never overwrite or delete it and pos-cli
pull skips it. When omitted, defaults to the track_manually_managed setting of
the instance (false unless enabled in app/config.yml)

max_deep_level (Int)

Maximum number of URL segments, counting the slug itself, the page responds
to. For example slug abc with max_deep_level 2 resolves /abc and /abc/1 but
not /abc/1/something. Defaults to 3

metadata (HashObject)

Arbitrary JSON data stored with the page

physical_file_path (String)

Path of the file the page is stored as, used by pos-cli pull and deploy. Must
be under views/pages/ (or pages/), optionally prefixed with
modules/<module_name>/public/ or modules/<module_name>/private/, for
example views/pages/hello/world.html.liquid

redirect_code (PageRedifectCode)

HTTP status of the redirect when redirect_to is set

redirect_to (String)

Liquid code rendering to the URL the request is redirected to instead of rendering the page

request_method (PageRequestMethod)

HTTP method the page responds to. Defaults to get

response_headers (HashObject)

Headers added to the response; values may contain Liquid

searchable (Boolean)

When true, the rendered content is stored with the page so it can be searched. Defaults to false

slug (String)

URL path the page is served at, for example hello/world for
https://example.com/hello/world. When omitted, it is derived from
physical_file_path, for example views/pages/hello/world.html.liquid gives hello/world

static_cache_expire (Int)

Number of seconds the page is cached for as static HTML. Currently ignored by this mutation

subdomain (String)

Subdomain the page is served on, for pages that should respond only on that subdomain

Questions?

We are always happy to help with any questions you may have.

contact us