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

# Zaktualizuj wygląd sklepu (storefront)



## OpenAPI

````yaml /openapi.pl.json put /api/v2/shops/{shopId}/storefront
openapi: 3.0.0
info:
  title: ItemShop v2 API
  description: >-
    REST API platformy ItemShop v2 (NestJS + Fastify). Wszystkie ścieżki mają
    prefiks /api/v2.
  version: 2.0.0
  contact: {}
servers:
  - url: https://api.itemshop.dev
    description: Produkcja
  - url: http://localhost:3000
    description: Lokalnie
security: []
tags: []
paths:
  /api/v2/shops/{shopId}/storefront:
    put:
      tags:
        - Shops
      summary: Zaktualizuj wygląd sklepu (storefront)
      operationId: ShopController_updateStorefront
      parameters:
        - name: shopId
          required: true
          in: path
          schema:
            type: string
          description: ID sklepu (ObjectId)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateStorefrontDto'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/Shop'
                  message:
                    type: string
        '400':
          description: Błędne dane wejściowe
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Brak/niepoprawne uwierzytelnienie
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Brak uprawnień / dostępu
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Nie znaleziono
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Przekroczony limit żądań
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKeyAuth: []
        - bearerAuth: []
components:
  schemas:
    UpdateStorefrontDto:
      type: object
      properties:
        description:
          type: string
          minLength: 0
          maxLength: 500
          description: Opis w hero
        serverIp:
          type: string
          minLength: 0
          maxLength: 120
          description: IP serwera
          example: play.shop.pl
        discordInviteUrl:
          type: string
          minLength: 0
          maxLength: 300
          description: Zaproszenie Discord
        communitySize:
          type: number
          minimum: 0
          description: Wielkość społeczności
        announcement:
          type: string
          minLength: 0
          maxLength: 500
          description: Baner ogłoszenia
        languages:
          maxItems: 20
          description: Włączone języki (ISO)
          type: array
          items:
            type: string
        translations:
          type: object
          description: Tłumaczenia storefrontu per język
        socials:
          $ref: '#/components/schemas/SocialsDto'
        monthlyGoal:
          $ref: '#/components/schemas/MonthlyGoalDto'
        administration:
          maxItems: 50
          type: array
          items:
            $ref: '#/components/schemas/AdminEntryDto'
        theme:
          $ref: '#/components/schemas/ThemeDto'
        checkoutLayout:
          type: string
          enum:
            - split
            - inline
            - modal
          description: Checkout page layout
        hideCheckoutDiscount:
          type: boolean
          description: Hide the discount-code field in checkout
        hideCheckoutPaymentInfo:
          type: boolean
          description: Hide the payment-operator legal strip in checkout
        hideCheckoutSummary:
          type: boolean
          description: Hide the order-summary block in the 2-step modal checkout
        hero:
          $ref: '#/components/schemas/HeroDto'
        sections:
          $ref: '#/components/schemas/SectionsDto'
        publicData:
          $ref: '#/components/schemas/PublicDataDto'
        legal:
          $ref: '#/components/schemas/LegalDto'
        payments:
          $ref: '#/components/schemas/PaymentsDto'
        fontFamily:
          type: string
          minLength: 0
          maxLength: 60
          description: Czcionka storefrontu
        navHideHome:
          type: boolean
          description: Ukryj „Strona główna" w nawigacji
        logoUrl:
          type: string
          minLength: 0
          maxLength: 500
          pattern: ^(https?:\/\/|\/|$)
          description: URL logo w navbarze
        shopCtaLabel:
          type: string
          minLength: 0
          maxLength: 40
          description: Etykieta przycisku „Sklep"
        shopCtaHidden:
          type: boolean
          description: Ukryj przycisk „Sklep"
        chrome:
          description: Nadpisania navbar/stopki
          allOf:
            - $ref: '#/components/schemas/ChromeDto'
        layout:
          maxItems: 50
          description: Układ bloków strony
          type: array
          items:
            $ref: '#/components/schemas/LayoutBlockDto'
        pages:
          maxItems: 30
          description: Podstrony edytora
          type: array
          items:
            $ref: '#/components/schemas/PageDto'
    Shop:
      type: object
      properties:
        _id:
          type: string
          example: 664f1a2b3c4d5e6f7a8b9c0d
        uniqueName:
          type: string
          example: moj-sklep
        displayName:
          type: string
          example: Mój Sklep
        frontEndUrl:
          type: string
          example: https://moj-sklep.pl
        isActive:
          type: boolean
          example: true
        createdAt:
          type: string
          format: date-time
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        statusCode:
          type: integer
          example: 400
        error:
          type: string
          example: Komunikat błędu
        timestamp:
          type: string
          format: date-time
        path:
          type: string
          example: /api/v2/...
    SocialsDto:
      type: object
      properties:
        discord:
          type: string
          format: uri
        tiktok:
          type: string
          format: uri
        facebook:
          type: string
          format: uri
        youtube:
          type: string
          format: uri
        instagram:
          type: string
          format: uri
    MonthlyGoalDto:
      type: object
      properties:
        enabled:
          type: boolean
        target:
          type: number
          minimum: 0
    AdminEntryDto:
      type: object
      properties:
        nickname:
          type: string
          minLength: 1
          maxLength: 32
          example: Steve
        role:
          type: string
          minLength: 1
          maxLength: 40
          example: CEO
    ThemeDto:
      type: object
      properties:
        variant:
          type: string
          enum:
            - mcgry
            - krabmc
            - hybrid
            - playhc
            - clearmc
        brandColor:
          type: string
          example: '#ef592d'
        accentColor:
          type: string
          example: '#facc15'
    HeroDto:
      type: object
      properties:
        title:
          type: string
          minLength: 0
          maxLength: 120
        tagline:
          type: string
          minLength: 0
          maxLength: 300
        renderNicks:
          maxItems: 2
          type: array
          items:
            type: string
        ctaLabel:
          type: string
          minLength: 0
          maxLength: 40
        ctaHref:
          type: string
          minLength: 0
          maxLength: 300
    SectionsDto:
      type: object
      properties:
        showAnnouncement:
          type: boolean
        showMonthlyGoal:
          type: boolean
        showCatalog:
          type: boolean
        showRecentPurchases:
          type: boolean
        showTopSpenders:
          type: boolean
        showAdministration:
          type: boolean
    PublicDataDto:
      type: object
      properties:
        recentPurchases:
          type: boolean
          description: Expose the recent-purchases feed publicly
        topSpenders:
          type: boolean
          description: Expose the top-spenders ranking publicly
        monthlyGoal:
          type: boolean
          description: Expose the monthly-goal progress publicly
        onlinePlayers:
          type: boolean
          description: Expose the online-players list publicly
    LegalDto:
      type: object
      properties:
        termsHtml:
          type: string
          minLength: 0
          maxLength: 20000
          description: Regulamin (HTML, sanitized server-side)
        privacyHtml:
          type: string
          minLength: 0
          maxLength: 20000
          description: Polityka prywatności (HTML, sanitized server-side)
        companyInfo:
          type: string
          minLength: 0
          maxLength: 2000
          description: Blok informacji o firmie (stopka)
    PaymentsDto:
      type: object
      properties:
        showStrip:
          type: boolean
    ChromeDto:
      type: object
      properties:
        navbarTitle:
          type: string
          minLength: 0
          maxLength: 60
        navShowOnline:
          type: boolean
        navLinks:
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/NavLinkDto'
        navHidden:
          type: boolean
        footerHidden:
          type: boolean
        navHeight:
          type: number
          minimum: 0
          maximum: 400
        navMaxWidth:
          type: number
          minimum: 0
          maximum: 4000
        footerPadY:
          type: number
          minimum: 0
          maximum: 400
        footerMaxWidth:
          type: number
          minimum: 0
          maximum: 4000
        footerDiscordTitle:
          type: string
          minLength: 0
          maxLength: 80
        footerDiscordSubtitle:
          type: string
          minLength: 0
          maxLength: 120
        footerHideDiscord:
          type: boolean
        footerCopyright:
          type: string
          minLength: 0
          maxLength: 200
        footerBrand:
          type: string
          minLength: 0
          maxLength: 80
        footerLegalPl:
          type: string
          minLength: 0
          maxLength: 600
        footerLegalEn:
          type: string
          minLength: 0
          maxLength: 600
    LayoutBlockDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^[A-Za-z0-9_-]+$
        type:
          type: string
          enum:
            - hero
            - announcement
            - server-modes
            - monthly-goal
            - recent-purchases
            - top-spenders
            - administration
            - shop-catalog
            - servers
            - order-status
            - voucher
            - legal
            - text
            - heading
            - image
            - faq
            - cta
            - button
            - banner
            - html
            - react
            - spacer
            - section
            - row
            - column
        visible:
          type: boolean
        props:
          type: object
    PageDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^[A-Za-z0-9_-]+$
        slug:
          type: string
          minLength: 1
          maxLength: 60
          pattern: ^[a-z0-9-]+$
          description: URL-safe slug (a-z, 0-9, -)
        title:
          type: string
          minLength: 1
          maxLength: 80
        nav:
          type: boolean
        layout:
          maxItems: 50
          type: array
          items:
            $ref: '#/components/schemas/LayoutBlockDto'
    NavLinkDto:
      type: object
      properties:
        label:
          type: string
          minLength: 1
          maxLength: 40
        url:
          type: string
          minLength: 1
          maxLength: 500
        newTab:
          type: boolean
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
    bearerAuth:
      scheme: bearer
      bearerFormat: JWT
      type: http

````