openapi: 3.0.0
info:
  version: 1.0.0
  description: >-
    Design, deploy, and manage experiences for all your digital storefronts with
    fabric XM, a headless e-commerce CMS. Design and develop components in your
    storefront to give your merchandisers and marketers the building blocks they
    need to create pages for products, promotions, and campaigns.
  title: Experiences v1 (XM v1)
  contact:
    email: support@fabric.inc
  license:
    name: fabric Inc
    url: https://fabric.inc/api-license
servers:
  - url: https://cdn.xm.fabric.inc/api
tags:
  - name: Pages
    description: >-
      XM Pages API allows you to fetch all the live pages, or a live page by a
      specific URL
  - name: Global Components
    description: >-
      XM Global Components API allows you to fetch all the live global component
      data
  - name: Menu
    description: XM Menu API allows you to fetch menus and their items
paths:
  /pages/live:
    get:
      summary: Retrieves Live Pages
      description: Returns a list of all the live pages
      operationId: getLivePages
      parameters:
        - $ref: '#/components/parameters/xSiteContent'
      tags:
        - Pages
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/TobyResponseObject'
                type: object
                description: 200 response object
                properties:
                  status:
                    type: integer
                    description: The response status code
                  data:
                    type: object
                    description: The data object holding the list of live page versions
                    properties:
                      livePages:
                        type: array
                        description: The array of live page versions
                        items:
                          type: object
                          description: The live page version details
                          allOf:
                            - $ref: '#/components/schemas/PageVersion'
                            - type: object
                              properties:
                                __v:
                                  type: integer
                                  description: The versionKey associated with the version
                                startDate:
                                  type: string
                                  format: date-time
                                  description: The date and time the version was published
                                page:
                                  allOf:
                                    - $ref: '#/components/schemas/Page'
                                    - type: object
                                      properties:
                                        typeId:
                                          type: string
                                          description: >-
                                            The database id for the page type that
                                            is linked to the page
              example:
                status: 200
                data:
                  livePages:
                    - _id: 60788b398fad06000899bdc4
                      isArchived: false
                      channel:
                        - 12
                      channels:
                        - '12'
                      status: SCHEDULED
                      endDate: '2099-12-31T00:00:00.000Z'
                      startDate: '2021-04-16T15:05:12.172Z'
                      pageId: 60788b39f59a96c12ce27460
                      name: KO v1
                      components:
                        - _id: 6079db97f395c800086a1ceb
                          id: Title
                          params:
                            title: FAQ
                            subtitle: >-
                              Questions you may have around our commerce apps,
                              getting started, security and compliance"
                            components: []
                            additionalProp1: {}
                          order: 1
                          additionalProp1: {}
                        - _id: 6079db97f395c800086a1cec
                          id: PopularQuestions
                          params:
                            title: POPULAR TOPICS
                            questions:
                              - title: Getting started
                                body: Question 1
                                linkText: Click here to view
                                linkUrl: https://fabric.inc/
                            components: []
                            additionalProp1: {}
                          order: 2
                          additionalProp1: {}
                      versionId: 36
                      createdAt: '2021-04-15T18:51:37.475Z'
                      updatedAt: '2021-04-26T16:40:24.212Z'
                      __v: 0
                      page:
                        _id: 60788b39f59a96c12ce27460
                        name: Popular FAQs
                        pageUrl: /faq
                        __v: 0
                        channels:
                          - '12'
                        createdAt: '2021-04-15T18:51:37.416Z'
                        isActive: true
                        isArchived: false
                        pageId: 114
                        typeId: 60788b0bf59a96c12ce27214
                        updatedAt: '2021-04-26T16:40:24.253Z'
                code: Ok
                message: List of Live Pages
                service: toby
                status_code: 200
                statusCode: 200
        '204':
          description: No live pages
          content:
            application/json:
              schema:
                type: object
                description: 204 response object
                properties:
                  status_code:
                    type: number
                    description: The response status code
                  message:
                    type: string
                    description: Status message
                  data:
                    type: object
                    description: The data object holding the list of live pages
                    properties:
                      livePages:
                        type: array
                        description: The array of live pages
                        items: {}
                        maxItems: 0
              example:
                status_code: 204
                message: There is no live page that exists in the database.
                data:
                  livePages: []
        '404':
          description: Tenant not found
          content:
            application/json:
              schema:
                type: object
                description: 404 response object
                properties:
                  status:
                    type: string
                    description: Status of response object
                  message:
                    type: string
                    description: Message describing response object
                  status_code:
                    type: integer
              example:
                status: PAGE_NOT_FOUND
                message: No Page Entry Found.
                statusCode: 404
        '500':
          description: The request was received but an internal error occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: INTERNAL_SERVER_ERROR
                message: >-
                  An internal error occurred. If the issue persists please
                  contact support@fabric.inc.
  /page/live:
    get:
      summary: Retrieves Live Page By URL
      description: Returns the live page for the specified page url
      operationId: getLivePage
      tags:
        - Pages
      parameters:
        - $ref: '#/components/parameters/xSiteContent'
        - in: query
          name: url
          description: The relative page url for which to retrieve the live page version
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                description: 200 response object
                properties:
                  status_code:
                    type: integer
                    description: The response status code
                  message:
                    type: string
                    description: Status message
                  data:
                    type: object
                    description: The data object holding the live page and version details
                    properties:
                      page:
                        type: object
                        description: The page details
                        allOf:
                          - $ref: '#/components/schemas/Page'
                          - type: object
                            properties:
                              pageType:
                                type: object
                                description: The page type object
                                properties:
                                  isDefault:
                                    type: boolean
                                    description: >-
                                      True if page type is marked as default;
                                      false otherwise
                                  name:
                                    type: string
                                    description: The page type name
                                  urlPrefix:
                                    type: string
                                    description: >-
                                      The URL prefix associated with the page
                                      type
                      version:
                        type: array
                        description: An array holding the live page version
                        items:
                          type: object
                          description: The live page version details
                          allOf:
                            - $ref: '#/components/schemas/PageVersion'
                            - type: object
                              properties:
                                __v:
                                  type: integer
                                  description: The versionKey associated with the version
                                startDate:
                                  type: string
                                  format: date-time
                                  description: The date and time the version was published
              example:
                status_code: 200
                message: 'Live version: 39 for page: /home.'
                data:
                  page:
                    _id: 6053609551ad48f797a786e8
                    name: Homepage
                    pageUrl: /home
                    __v: 0
                    channels:
                      - '12'
                    createdAt: '2021-03-18T14:15:49.410Z'
                    isActive: true
                    isArchived: false
                    pageId: 106
                    seoFields:
                      title: Knowledge Base Homepage
                      description: Welcome to our Knowledge Base!
                      _id: 60897c9d892fa80008fb8fea
                      metadata:
                        - _id: 60897c9d892fa80008fb8feb
                          name: canonical
                          content: https://docs.fabric.inc
                          updatedAt: '2021-04-28T15:17:49.027Z'
                          createdAt: '2021-04-28T15:17:49.027Z'
                      updatedAt: '2021-04-28T15:17:49.027Z'
                      createdAt: '2021-04-28T15:17:49.027Z'
                    updatedAt: '2021-04-30T18:21:38.022Z'
                    pageType:
                      isDefault: false
                      name: Homepage
                      urlPrefix: /home
                  version:
                    - _id: 60802b257900a3000905e4d0
                      isArchived: false
                      channel:
                        - 12
                      channels:
                        - '12'
                      status: SCHEDULED
                      endDate: '2099-12-31T00:00:00.000Z'
                      pageId: 6053609551ad48f797a786e8
                      name: Default v1
                      description: Default homepage
                      components:
                        - _id: 605ddce3068a620007becbb9
                          id: Title
                          params:
                            title: Knowledge Base
                            subtitle: >-
                              Explore our products and headless commerce
                              solutions
                            components: []
                            additionalProp1: {}
                          order: 1
                          additionalProp1: {}
                        - _id: 605de5dda877e000083bc851
                          id: Showcase
                          params:
                            items:
                              - title: Enterprise commerce
                                blockColor: blue
                                blockCustomColor: '#e3e5e9'
                                linkText: Learn more
                                linkUrl: /start/enterprise-commerce
                                components: []
                                additionalProp1: {}
                          order: 2
                          additionalProp1: {}
                      versionId: 39
                      createdAt: '2021-04-21T13:39:49.807Z'
                      updatedAt: '2021-04-30T18:21:37.993Z'
                      __v: 0
                      startDate: '2021-04-22T19:55:22.791Z'
        '204':
          description: Page is not live or is inactive
          content:
            application/json:
              schema:
                type: object
                description: 204 response object
                properties:
                  status_code:
                    type: integer
                    description: The response status code
                  status:
                    type: string
                    description: Message describing the request
                  message:
                    type: string
                    description: Message describing the result of the response
              examples:
                NoLiveVersion:
                  summary: No Live Versions
                  value:
                    status_code: 204
                    status: 'Live Page: /someUrl'
                    message: >-
                      No live version available for page: /someUrl, status:
                      SCHEDULED, Date: Tue Oct 19 2021 16:18:21 GMT-0400
                      (Eastern Daylight Time), Channel: 12.
                InactivePage:
                  summary: Inactive Page
                  value:
                    status_code: 204
                    status: 'Live Page: /someUrl'
                    message: >-
                      page: /someUrl is inactive or archived, so there will be
                      no live versions of page.
        '400':
          description: Page url not specified
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: REQUEST_VALIDATION
                message: 'Invalid data in query: must have required property ''url'''
        '404':
          description: Page not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: PAGE_NOT_FOUND
                message: No page entry found
        '500':
          description: The request was received but an internal error occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: INTERNAL_SERVER_ERROR
                message: >-
                  An internal error occurred. If the issue persists please
                  contact support@fabric.inc.
  /global-component/live:
    get:
      summary: Retrieves Live Global Components
      description: Returns a list of all the live global component data
      operationId: getLiveGlobalComponents
      tags:
        - Global Components
      parameters:
        - $ref: '#/components/parameters/xSiteContent'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Components'
              examples:
                LiveComponents:
                  $ref: '#/components/examples/globalComponentsExample'
                NoLiveComponents:
                  summary: No Live Components
                  value: []
        '500':
          description: The request was received but an internal error occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: INTERNAL_SERVER_ERROR
                message: >-
                  An internal error occurred. If the issue persists please
                  contact support@fabric.inc.
  /menu:
    get:
      summary: Retrieves Menu List
      description: Returns a list of all the menus and its immediate sub-menus
      operationId: getRootMenus
      tags:
        - Menu
      parameters:
        - name: x-site-context
          in: header
          description: >-
            The `x-site-context` header is a JSON object that contains
            information about the source you wish to pull from. The mandatory
            `account` is the 24 character identifier found in Copilot. The
            `channel` (Sales channel ID), `stage` (environment name), and `date`
            attributes can be used to further narrow the scope of your data
            source.
          required: true
          schema:
            type: string
            example: >-
              {"date": "2023-01-01T00:00:00.000Z", "channel": 12, "account":
              "1234abcd5678efgh9ijklmno","stage":"production"}
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                description: 200 response object
                properties:
                  status_code:
                    type: integer
                    description: The response status code
                  status:
                    type: string
                    description: Status message
                  data:
                    type: object
                    description: The data object holding the list of menus
                    properties:
                      menus:
                        type: array
                        description: The array of menus
                        items:
                          type: object
                          description: The menu object and its immediate sub-menus
                          allOf:
                            - $ref: '#/components/schemas/Menu'
                            - type: object
                              properties:
                                children:
                                  type: array
                                  description: >-
                                    The list of sub-menus associated with the
                                    menu
                                  items:
                                    $ref: '#/components/schemas/Menu'
              example:
                status_code: 200
                status: List of menus
                data:
                  menus:
                    - _id: 61110b8d3e136500082f5d42
                      channel:
                        - 12
                      channels: []
                      name: Gifts + Holiday
                      label: Gifts + Holiday
                      path: /c/gifts
                      isActive: true
                      images: []
                      videos: []
                      params:
                        - _id: 61110bba873a390008d3a2fe
                          kind: context
                          value: gifts
                      order: 1
                      createdAt: '2021-08-09T11:03:41.984Z'
                      updatedAt: '2021-10-05T17:28:39.582Z'
                      __v: 0
                      children:
                        - _id: 61110bcb3e136500082f5d48
                          channel:
                            - 12
                          channels: []
                          name: Gifts by Price
                          label: Gifts by Price
                          parent: 61110b8d3e136500082f5d42
                          path: /c/gifts/gifts-by-price
                          isActive: true
                          images: []
                          videos: []
                          params:
                            - _id: 61110bdd873a390008d3a303
                              kind: context
                              value: gifts_gifts-by-price
                          order: 1
                          createdAt: '2021-08-09T11:04:43.526Z'
                          updatedAt: '2021-08-09T11:11:57.833Z'
                          __v: 0
                    - _id: 61138c153f658a00085e2eba
                      channel:
                        - 12
                      channels: []
                      name: Bedroom
                      label: Bedroom
                      path: /
                      isActive: false
                      images: []
                      videos: []
                      params: []
                      order: 2
                      createdAt: '2021-08-11T08:36:37.823Z'
                      updatedAt: '2021-10-05T17:28:39.650Z'
                      __v: 0
                      children: []
        '500':
          description: The request was received but an internal error occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: INTERNAL_SERVER_ERROR
                message: >-
                  An internal error occurred. If the issue persists please
                  contact support@fabric.inc.
  /menu/items:
    get:
      summary: Retrieves All Menu Items
      description: Returns a list of all active menus all their menu items
      operationId: getAllActiveMenus
      tags:
        - Menu
      parameters:
        - $ref: '#/components/parameters/xSiteContent'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                description: 200 response object
                properties:
                  status_code:
                    type: integer
                    description: The response status code
                  status:
                    type: string
                    description: Status message
                  data:
                    type: object
                    description: The data object holding the list of menus and menu items
                    properties:
                      MenuList:
                        type: array
                        description: The array of menus and their items
                        items:
                          $ref: '#/components/schemas/MenuItem'
              example:
                status_code: 200
                status: List of active menus
                data:
                  MenuList:
                    - id: 61110b8d3e136500082f5d42
                      label: Gifts + Holiday
                      order: 1
                      isActive: true
                      channel:
                        - 12
                      path: /c/gifts
                      params:
                        - _id: 61110bba873a390008d3a2fe
                          kind: context
                          value: gifts
                      children:
                        - id: 61110bcb3e136500082f5d48
                          label: Gifts by Price
                          order: 1
                          isActive: true
                          channel:
                            - 12
                          path: /c/gifts/gifts-by-price
                          params:
                            - _id: 61110bdd873a390008d3a303
                              kind: context
                              value: gifts_gifts-by-price
                          children:
                            - id: 61110bf93e136500082f5d4d
                              label: Gifts Under $250
                              order: 1
                              isActive: true
                              channel:
                                - 12
                              path: /c/gifts/gifts-by-price/gifts-under-250
                              params:
                                - kind: context
                                  value: gifts_gifts-by-price_gifts-under-250
                              children: []
                            - id: 61110c1a3e136500082f5d52
                              label: Gifts Under $500
                              order: 2
                              isActive: false
                              channel:
                                - 12
                              path: /c/gifts/gifts-by-price/gifts-under-500
                              params:
                                - kind: context
                                  value: gifts_gifts-by-price_gifts-under-500
                              children: []
                        - id: 61110c3e3e136500082f5d56
                          label: Dining + Entertainment
                          order: 3
                          isActive: true
                          channel:
                            - 12
                          path: /
                          params: []
                          children:
                            - id: 61110c513e136500082f5d5b
                              label: All Dining + Entertainment
                              order: 1
                              isActive: true
                              channel:
                                - 12
                              path: /content/shop/dining-entertaining
                              params:
                                - kind: ''
                                  value: ''
                              children: []
        '404':
          description: Menu not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: MENU_NOT_FOUND
                message: No menu entry found.
        '500':
          description: The request was received but an internal error occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: INTERNAL_SERVER_ERROR
                message: >-
                  An internal error occurred. If the issue persists please
                  contact support@fabric.inc.
components:
  parameters:
    xSiteContent:
      name: x-site-context
      in: header
      description: >-
        The `x-site-context` header is a JSON object that contains information
        about the source you wish to pull from. The mandatory `account` is the
        24 character identifier found in Copilot. The `channel` (Sales channel
        ID), `stage` (environment name), and `date` attributes can be used to
        further narrow the scope of your data source.
      required: true
      schema:
        type: string
        example: >-
          {"date": "2023-01-01T00:00:00.000Z", "channel": 12, "account":
          "1234abcd5678efgh9ijklmno","stage":"production"}
  examples:
    globalComponentsExample:
      summary: Live Components Exist
      value:
        - _id: 60896f629aa7f1000744030b
          id: RailNavigation
          params:
            homeLinkText: Home
            sections:
              - sectionTitle: Get Started
                sectionLink: /start
                subsections:
                  - subSectionTitle: What is fabric?
                    subSectionLink: /what-is-fabric
                    components: []
                components: []
            title: Title
          order: 1
        - _id: 608ad8760536ac00074bec45
          id: CustomHeader
          params:
            developerSectionText: developerSectionText
            developerSectionLinks:
              - title: Knowledge Base
                description: Get started
                link: https://fabric.inc/knowledgebase
                components: []
              - title: API documentation
                description: Customize without limits
                link: https://api.fabric.inc/
                components: []
          order: 1
  schemas:
    Page:
      type: object
      description: The page object
      properties:
        name:
          type: string
          description: The page name
        pageUrl:
          type: string
          description: The relative page url
        createdAt:
          type: string
          format: date-time
          description: The date and time the page was created
        updatedAt:
          type: string
          format: date-time
          description: The date and time the page was updated
        isActive:
          type: boolean
          description: True if the page is active; false otherwise
        isArchived:
          type: boolean
          description: True if the page is archived; false otherwise
        pageId:
          type: integer
          description: An identifier used for the page
        channels:
          type: array
          description: The channel ids associated with the page
          items:
            type: string
            description: The channel id associated with the page
        seoFields:
          type: object
          description: The SEO fields
          properties:
            title:
              type: string
              description: SEO field title
            description:
              type: string
              description: SEO field description
            createdAt:
              type: string
              format: date-time
              description: The date and time the SEO field was created
            updatedAt:
              type: string
              format: date-time
              description: The date and time the SEO field was last updated
            metadata:
              type: array
              description: The list of metadata associated with the SEO field
              items:
                type: object
                description: The metadata associated with the SEO field
                properties:
                  name:
                    type: string
                    description: Metadata name
                  content:
                    type: string
                    description: Metadata content
                  _id:
                    type: string
                    description: The virutal id associated with the SEO field metadata
                  createdAt:
                    type: string
                    format: date-time
                    description: The date and time the metadata was created
                  updatedAt:
                    type: string
                    format: date-time
                    description: The date and time the metadata was last updated
            _id:
              type: string
              description: The virtual id associated with the SEO field
        typeName:
          type: string
          description: Name of the page type of page (optional)
        typeUrl:
          type: string
          description: URL of the page type of page (optional)
        _id:
          type: string
          description: The database id associated with the page
        __v:
          type: integer
          description: The versionKey associated with the page
        channel:
          type: array
          description: A deprecated field holding channel information
          items:
            type: integer
            description: The channel identifier
    TobyResponseObject:
      type: object
      description: Attributes that are returned with all responses from Multi-tenant system
      properties:
        code:
          type: string
          description: String message of response code
        message:
          type: string
          description: Description of response action
        service:
          type: string
          description: String specifying service returned this response
        status_code:
          type: integer
          description: Represents status code of response
        statusCode:
          type: integer
          description: Represents status code of response
    PageVersion:
      type: object
      description: The version object
      properties:
        _id:
          type: string
          description: The database id associated with the version
        isArchived:
          type: boolean
          description: True if the version is archived; false otherwise
        channel:
          type: array
          description: A deprecated field holding channel information
          items:
            type: integer
            description: The channel identifier
        channels:
          type: array
          description: The channel ids associated with the version
          items:
            type: string
            description: The channel id associated with the version
        status:
          type: string
          description: The current status of the version
        endDate:
          type: string
          description: The date when the version will no longer be live
          format: date-time
        pageId:
          type: string
          description: The database id of the page associated with the version
        name:
          type: string
          description: The version name
        description:
          type: string
          description: The description associated with the version
        components:
          $ref: '#/components/schemas/Components'
        versionId:
          type: integer
          description: An identifier used for the version
        createdAt:
          type: string
          format: date-time
          description: The date and time the version was created
        updatedAt:
          type: string
          format: date-time
          description: The date and time the version was last updated
    Components:
      type: array
      description: The list of components
      items:
        type: object
        description: The component data
        properties:
          _id:
            type: string
            description: The virtual id associated with the component
          id:
            type: string
            description: The identifier used in the UI by the component
          params:
            type: object
            description: The attached fields and values of the component
            additionalProperties: true
        additionalProperties: true
    Menu:
      type: object
      description: The menu object
      properties:
        _id:
          type: string
          description: The database id associated with the menu
        channel:
          type: array
          description: A deprecated field holding channel information
          items:
            type: integer
            description: The channel identifier
        channels:
          type: array
          description: The channel ids associated with the menu
          items:
            type: string
            description: The channel id associated with the menu
        name:
          type: string
          description: The menu name
        label:
          type: string
          description: The menu label
        path:
          type: string
          description: The relative menu url path
        isActive:
          type: boolean
          description: True if the menu is active; false otherwise
        images:
          type: array
          description: A list of image resources
          items:
            type: object
            description: The image resource details
            properties:
              order:
                type: integer
                description: The order in which the image was added/appears
              meta:
                type: string
                description: Information about the image
              label:
                type: string
                description: Text to be displayed as part of the image
              kind:
                type: string
                description: The type of image (thumbnail, zoomed, etc.)
              url:
                type: string
                description: The url to the image resource
        videos:
          type: array
          description: A list of video resources
          items:
            type: object
            description: The video resource details
            properties:
              label:
                type: string
                description: The label for the video
              order:
                type: integer
                description: The order in which the video was added/appears
              url:
                type: string
                description: The url to the video resource
              provider:
                type: string
                description: The video resource provider
              thumbnails:
                type: array
                description: List of thumbnails to use for the video
                items:
                  type: object
                  description: Thumbnail details
                  properties:
                    size:
                      type: string
                      description: The size of the thumbnail image
                    url:
                      type: string
                      description: The url for the thumbnail image
        params:
          type: array
          description: List of additional data associated with the menu
          items:
            type: object
            description: Additional data associated with the menu
            properties:
              _id:
                type: string
                description: The virtual id for the parameter
              kind:
                type: string
                description: A description for the parameter
              value:
                type: string
                description: The value for the parameter
        order:
          type: integer
          description: The position the menu appears in the UI
        createdAt:
          type: string
          format: date-time
          description: The date and time the menu was created
        updatedAt:
          type: string
          format: date-time
          description: The date and time the menu was last updated
        __v:
          type: integer
          description: The versionKey associated with the menu
    MenuItem:
      type: object
      description: The menu item object
      properties:
        id:
          type: string
          description: The database id associated with the menu item
        label:
          type: string
          description: The menu item label
        order:
          type: integer
          description: The position the menu item appears in the UI
        isActive:
          type: boolean
          description: True if the menu item is active; false otherwise
        channel:
          type: array
          description: A deprecated field holding channel information
          items:
            type: integer
            description: The channel identifier
        path:
          type: string
          description: The relative menu item url path
        params:
          type: array
          description: List of additional data associated with the menu item
          items:
            type: object
            description: Additional data associated with the menu item
            properties:
              kind:
                type: string
                description: A description for the parameter
              value:
                type: string
                description: The value for the parameter
        children:
          type: array
          description: The list of child menu items
          items:
            $ref: '#/components/schemas/MenuItem'
    BrowseMenuItem:
      type: object
      description: The browse menu item object
      properties:
        url:
          type: string
          description: The relative menu item url path
        name:
          type: string
          description: The menu item name
        order:
          type: integer
          description: The position the menu item appears in the UI
        images:
          type: array
          description: A list of image resources
          items:
            type: object
            description: The image resource details
            properties:
              _id:
                type: string
                description: The virtual id for the image resource
              order:
                type: integer
                description: The order in which the image was added/appears
              url:
                type: string
                description: The url to the image resource
              meta:
                type: string
                description: Information about the image
        params:
          type: array
          description: List of additional data associated with the menu item
          items:
            type: object
            description: Additional data associated with the menu item
            properties:
              _id:
                type: string
                description: The virtual id for the parameter
              kind:
                type: string
                description: A description for the parameter
              value:
                type: string
                description: The value for the parameter
        nodeId:
          type: string
          description: The database id for the menu item
        parentId:
          type: string
          description: The database id for the menu item parent
        children:
          $ref: '#/components/schemas/BrowseMenuItem'
    Error:
      type: object
      description: The server error response object
      properties:
        code:
          type: string
          description: The code associated with the type of server error
        message:
          type: string
          description: The message associated with the server error
      required:
        - code
        - message
