openapi: 3.0.1
info:
  title: Sellasist API
  description: Korzystanie z Sellasist REST API wymaga podania klucza apiKey. Klucz można wygenerować po zalogowaniu do Sellasista w zakładce Integracje > Klucze API.<br><br><a href='/changelog' target='_blank'>CHANGELOG</a>
  version: 1.91.5
servers:
  - url: https://{account}.sellasist.pl/api/v1
    variables:
      account:
        default: demo
tags:
  - name: Atrybuty
    x-main-tag: products
    x-tags: [attributes, catalog]

  - name: Atrybuty - Grupy
    x-main-tag: products
    x-tags: [attributes, groups]

  - name: Atrybuty - Właściwości
    x-main-tag: products
    x-tags: [attributes, values]

  - name: Dokumenty - Faktury
    x-main-tag: inventory
    x-tags: [invoices, documents]

  - name: Dokumenty - Faktury korygujące
    x-main-tag: inventory
    x-tags: [invoices, corrections]

  - name: Dokumenty - Paragony
    x-main-tag: inventory
    x-tags: [receipts, documents]

  - name: Dokumenty - Paragony korygujące
    x-main-tag: inventory
    x-tags: [receipts, corrections]

  - name: Gospodarka magazynowa
    x-main-tag: inventory
    x-tags: [warehouse, stock]

  - name: Hurtownie
    x-main-tag: integrations
    x-tags: [wholesalers, integrations]

  - name: Informacyjne
    x-main-tag: settings
    x-tags: [system, info]

  - name: Kategorie
    x-main-tag: products
    x-tags: [categories, catalog]

  - name: Klienci
    x-main-tag: compliance
    x-tags: [customers, crm]

  - name: Konta w zewnętrznych serwisach
    x-main-tag: integrations
    x-tags: [integrations, channels]

  - name: Listy przewozowe
    x-main-tag: orders
    x-tags: [shipping, waybills]

  - name: Notatki
    x-main-tag: orders
    x-tags: [notes, orders]

  - name: Obrazy
    x-main-tag: products
    x-tags: [images, media]

  - name: Odpowiedzialni producenci
    x-main-tag: compliance
    x-tags: [manufacturers, compliance]

  - name: Opcje
    x-main-tag: products
    x-tags: [options, variants]

  - name: Opcje - Grupy
    x-main-tag: products
    x-tags: [options, groups]

  - name: Opcje - Właściwości
    x-main-tag: products
    x-tags: [options, values]

  - name: Osoby odpowiedzialne
    x-main-tag: compliance
    x-tags: [contacts, compliance]

  - name: Parametry
    x-main-tag: products
    x-tags: [parameters, catalog]

  - name: Parametry - Grupy
    x-main-tag: products
    x-tags: [parameters, groups]

  - name: Parametry - Wartości
    x-main-tag: products
    x-tags: [parameters, values]

  - name: Printerpoints
    x-main-tag: integrations
    x-tags: [printing, hardware]

  - name: Printfile
    x-main-tag: integrations
    x-tags: [printing, files]

  - name: Producenci
    x-main-tag: products
    x-tags: [manufacturers, brands]

  - name: Produkty
    x-main-tag: products
    x-tags: [products, catalog]

  - name: Produkty - Dodatkowe pola
    x-main-tag: products
    x-tags: [products, custom-fields]

  - name: Produkty - Magazyn
    x-main-tag: products
    x-tags: [products, stock]

  - name: Produkty - Oferty
    x-main-tag: products
    x-tags: [products, listings]

  - name: Produkty - Warianty
    x-main-tag: products
    x-tags: [products, variants]

  - name: Produkty - Zestawy produktowe
    x-main-tag: products
    x-tags: [products, bundles]

  - name: Reklamacje
    x-main-tag: orders
    x-tags: [ complaints, returns ]

  - name: Serie dokumentów
    x-main-tag: inventory
    x-tags: [documents, series]

  - name: Sposoby płatności
    x-main-tag: settings
    x-tags: [payments, checkout]

  - name: Sposoby wysyłki
    x-main-tag: settings
    x-tags: [shipping, delivery]

  - name: Statusy
    x-main-tag: orders
    x-tags: [status, orders]

  - name: Stawki VAT
    x-main-tag: settings
    x-tags: [taxes, vat]

  - name: Warianty
    x-main-tag: products
    x-tags: [variants, catalog]

  - name: Warianty - Grupy
    x-main-tag: products
    x-tags: [variants, groups]

  - name: Warianty - Właściwości
    x-main-tag: products
    x-tags: [variants, values]

  - name: Zamówienia
    x-main-tag: orders
    x-tags: [orders, sales]

  - name: Zamówienia - Dodatkowe pola
    x-main-tag: orders
    x-tags: [orders, custom-fields]

  - name: Zamówienia - Pozycje
    x-main-tag: orders
    x-tags: [orders, items]

  - name: Zintegrowane sklepy sellingo
    x-main-tag: integrations
    x-tags: [stores, channels]

  - name: Zwroty
    x-main-tag: orders
    x-tags: [returns, orders]

  - name: Źródła zamówień
    x-main-tag: settings
    x-tags: [orders, sources]

  # --- BETA ---
  - name: Dokumenty operacyjne [BETA]
    x-main-tag: inventory
    x-tags: [documents, beta]

  - name: Serie dokumentów operacyjnych [BETA]
    x-main-tag: inventory
    x-tags: [documents, beta]
paths:
  /alerts:
    get:
      tags: [ "Informacyjne" ]
      summary: Pobierz listę Twoich aktywnych komunikatów i alertów systemowych
      description: "Zwraca ustrukturyzowaną i stronicowaną listę wszystkich aktywnych komunikatów widocznych na pulpicie panelu."
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 1
          description: "Numer strony z wynikami alertów."
      responses:
        200:
          description: Sukces. Zwraca ustrukturyzowaną listę komunikatów z paginacją.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAlertsResponse'
  /attributes:
    get:
      summary: Pobierz listę atrybutów
      description: Zwraca listę atrybutów
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Grupa 1
                  - id: 2
                    name: Grupa 2
                  - id: 3
                    name: Grupa 3
                items:
                  format: int64
                  type: integer
                title: attributes
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty
    post:
      summary: Tworzy atrybut
      description: Tworzy atrybut
      requestBody:
        content:
          application/json:
            schema:
              properties:
                group_id:
                  description: Identyfikator grupy atrybutów
                  example: 1
                  type: integer
                name:
                  description: Nazwa grupy atrybutów
                  example: Odcienie zieleni
                  type: string
              type: object
        description: Struktura atrybutu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty
  /attributes/{attribute_id}:
    delete:
      summary: Usuwa dany atrybut
      description: Usuwa dany atrybut
      parameters:
        - description: Identyfikator atrybutu
          in: path
          name: attribute_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty
    get:
      summary: Pobierz szczegóły atrybutu
      description: Zwraca szczegóły atrybutu
      parameters:
        - description: Identyfikator atrybutu
          in: path
          name: attribute_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  group_id:
                    example: 1
                    type: integer
                  id:
                    example: 2
                    type: integer
                  name:
                    example: Nazwa atrybutu 1
                    type: string
                  properties:
                    example:
                      - id: 1
                        name: Właścwiość 1
                      - id: 2
                        name: Właścwiość 2
                    items:
                      format: int64
                      type: integer
                    type: array
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty
    put:
      summary: Aktualizuje atrybut
      description: Aktualizuje atrybut
      parameters:
        - description: Identyfikator atrybutu
          in: path
          name: attribute_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Nazwa atrybutu
                  example: Zielony
                  type: string
              type: object
        description: Struktura aktualizacji atrybutu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty
  /attributes_groups:
    get:
      summary: Pobierz listę grup atrybutów
      description: Zwraca listę grup atrybutów
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Grupa 1
                  - id: 2
                    name: Grupa 2
                  - id: 3
                    name: Grupa 3
                items:
                  format: int64
                  type: integer
                title: attributes_groups
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Grupy
    post:
      summary: Tworzy grupę atrybutów
      description: Tworzy grupę atrybutów
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Nazwa grupy atrybutów
                  example: Kolor
                  type: string
              type: object
        description: Struktura aktualizacji grupy atrybutów
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Grupy
  /attributes_groups/{group_id}:
    delete:
      summary: Usuwa daną grupę atrybutów
      description: Usuwa daną metodę dostawy
      parameters:
        - description: Identyfikator grupy atrybutów
          in: path
          name: group_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Grupy
    get:
      summary: Pobierz szczegóły grupy atrybutów
      description: Zwraca listę grup atrybutów
      parameters:
        - description: Identyfikator grupy atrybutów
          in: path
          name: group_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  attributes:
                    example:
                      - id: 1
                        name: Wariant 1
                      - id: 2
                        name: Wariant 2
                    items:
                      format: int64
                      type: integer
                    type: array
                  id:
                    example: 2
                    type: integer
                  name:
                    example: Nazwa grupy 1
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Grupy
    put:
      summary: Aktualizuje grupę atrybutów
      description: Aktualizuje grupę atrybutów
      parameters:
        - description: Identyfikator grupy atrybutów
          in: path
          name: group_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Nazwa grupy atrybutów
                  example: Kolor
                  type: string
              type: object
        description: Struktura aktualizacji grupy atrybutów
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Grupy
  /attributes_properties:
    get:
      summary: Pobierz listę właściwości atrybutów
      description: Zwraca listę właściwości atrybutów
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Właścwiość 1
                  - id: 2
                    name: Właścwiość 2
                  - id: 3
                    name: Właścwiość 3
                items:
                  format: int64
                  type: integer
                title: attributes_properties
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Właściwości
    post:
      summary: Tworzy właściwość atrybutu
      description: Tworzy właściwość atrybutu
      requestBody:
        content:
          application/json:
            schema:
              properties:
                attribute_id:
                  description: Identyfikator właściwości atrybutu
                  example: 1
                  type: integer
                name:
                  description: Nazwa właściwości atrybutu
                  example: Jasnozielony
                  type: string
              type: object
        description: Struktura właściwości atrybutu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Właściwości
  /attributes_properties/{attribute_property_id}:
    delete:
      summary: Usuwa dany atrybut
      description: Usuwa dany atrybut
      parameters:
        - description: Identyfikator atrybutu
          in: path
          name: attribute_property_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Właściwości
    get:
      summary: Pobierz szczegóły właściwości
      description: Zwraca szczegóły właściwości
      parameters:
        - description: Identyfikator atrybutu
          in: path
          name: attribute_property_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  attribute_id:
                    example: 1
                    type: integer
                  id:
                    example: 2
                    type: integer
                  name:
                    example: Nazwa właściwości 1
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Właściwości
    put:
      summary: Aktualizuje właściwość atrybutu
      description: Aktualizuje właściwość atrybutu
      parameters:
        - description: Identyfikator właściwości atrybutu
          in: path
          name: attribute_property_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: Nazwa właściwości
                  example: Jasnozielony
                  type: string
              type: object
        description: Struktura aktualizacji właściwości atrybutu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Atrybuty - Właściwości
  /categories:
    get:
      summary: Pobierz listę kategorii
      description: Zwraca listę kategorii
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    parent: ''
                    title: OdzieĹź
                  - id: 2
                    parent: 1
                    title: Kurtki
                  - id: 3
                    parent: 1
                    title: Bluzki
                items:
                  format: int64
                  type: integer
                title: categories
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Kategorie
    post:
      summary: Tworzy nową kategorię
      description: Tworzy nową kategorię
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/category_details'
        description: Szczegóły kategorii
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 1
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: 103
                    type: integer
                  message:
                    example: Podany identyfikator języka nie istnieje.
                    type: string
                type: object
          description: Błąd - jeden z elementów w zapytaniu nie został znaleziony w zbiorze
      tags:
        - Kategorie
  /categories/{category_id}:
    delete:
      summary: Usuwa daną kategorię
      description: Usuwa daną kategorię
      parameters:
        - description: Identyfikator kategorii
          in: path
          name: category_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Kategorie
    get:
      summary: Pobierz szczegóły kategorii
      description: Zwraca szczegóły kategorii
      parameters:
        - description: Identyfikator kategorii
          in: path
          name: category_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/category_details'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Kategorie
    put:
      summary: Aktualizuje kategorię
      description: Aktualizuje kategorię w oparciu o id
      parameters:
        - description: Identyfikator kategorii
          in: path
          name: category_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/category_details'
        description: Szczegóły kategorii
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 1
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: 104
                    type: integer
                  message:
                    example: Podany identyfikator pola danych nie istnieje.
                    type: string
                type: object
          description: Błąd - jeden z elementów w zapytaniu nie został znaleziony w zbiorze
      tags:
        - Kategorie
  /changelog:
    get:
      tags: [ "Informacyjne" ]
      summary: Pobierz changelog oprogramowania sellasist
      description: "Pobiera stronicowaną listę zmian i aktualizacji systemu Sellasist, pobieraną na bieżąco z zewnętrznego systemu CRM."
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 1
          description: "Numer strony z wynikami changeloga."
      responses:
        200:
          description: Sukces. Zwraca listę wersji i opis wprowadzonych zmian.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ChangelogItem'
              example:
                - version: "1.90.7"
                  date: "2026-03-15"
                  description: "Aktualizacja API, optymalizacja gospodarki magazynowej."
                  changes:
                    - type: "added"
                      text: "Dodano nowy punkt końcowy do obsługi pobierania załączników."
                    - type: "fixed"
                      text: "Poprawiono rzadki błąd walidacji podczas masowej aktualizacji stanów."
                - version: "1.90.6"
                  date: "2026-02-28"
                  description: "Wydanie konserwacyjne."
                  changes:
                    - type: "improved"
                      text: "Przyspieszono indeksowanie i wyszukiwanie po kodach EAN."
        422:
          description: Błąd walidacji parametru (np. podana strona nie jest liczbą)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse422'
        404:
          description: Nie znaleziono strony changeloga w systemie CRM
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse404'
        500:
          description: Błąd wewnętrzny serwera (np. problem z połączeniem do CRM)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FatalErrorResponse500'
  /complaints:
    get:
      tags:
        - Reklamacje
      summary: Pobierz listę reklamacji
      description: Zwraca listę reklamacji z możliwością filtrowania i paginacji.
      parameters:
        - name: date_from
          in: query
          description: Data początkowa (reklamacje utworzone od tej daty, format YYYY-MM-DD HH:ii:ss)
          required: false
          schema:
            type: string
        - name: date_to
          in: query
          description: Data końcowa (reklamacje utworzone do tej daty, format YYYY-MM-DD HH:ii:ss)
          required: false
          schema:
            type: string
        - name: order_id
          in: query
          description: Filtrowanie po numerze zamówienia
          required: false
          schema:
            type: string
        - name: source_id
          in: query
          description: ID źródła reklamacji
          required: false
          schema:
            type: integer
        - name: limit
          in: query
          description: Maksymalna liczba zwracanych rekordów (maksymalnie 100, domyślnie 100)
          required: false
          schema:
            type: integer
            default: 100
        - name: offset
          in: query
          description: Przesunięcie wyników (offset)
          required: false
          schema:
            type: integer
            default: 0
        - name: sort
          in: query
          description: Sortowanie po ID (asc - rosnąco, desc - malejąco)
          required: false
          schema:
            type: string
            enum: [ asc, desc ]
            default: desc
      responses:
        '200':
          description: Sukces. Zwraca listę reklamacji.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/complaints_list_item'
        '401':
          $ref: '#/components/responses/401Unauthorized'
    post:
      tags:
        - Reklamacje
      summary: Tworzy nową reklamację
      description: Rejestruje nową reklamację (RMA) w systemie na podstawie przekazanych danych adresowych, finansowych i źródłowych.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/complaint_request'
      responses:
        '200':
          description: Pomyślnie utworzono reklamację.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/complaint_response_success'
        '401':
          $ref: '#/components/responses/401Unauthorized'

  /complaints/{id}:
    get:
      tags:
        - Reklamacje
      summary: Pobierz szczegóły reklamacji
      description: Zwraca pełne szczegóły wybranej reklamacji wraz z danymi adresowymi oraz listą reklamowanych produktów.
      parameters:
        - name: id
          in: path
          required: true
          description: ID reklamacji w systemie Sellasist
          schema:
            type: integer
      responses:
        '200':
          description: Sukces. Zwraca szczegóły reklamacji.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/complaint_details'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: Nie znaleziono reklamacji.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse404'
    put:
      tags:
        - Reklamacje
      summary: Aktualizuje reklamację
      description: Zmienia wybrane parametry istniejącej reklamacji o podanym ID.
      parameters:
        - name: id
          in: path
          required: true
          description: ID reklamacji do aktualizacji
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/complaint_request'
      responses:
        '200':
          description: Pomyślnie zaktualizowano reklamację.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/complaint_response_success'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: Nie odnaleziono reklamacji o tym ID.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Nie znaleziono reklamacji
  /corrects:
    get:
      summary: Pobierz listę faktur korygujących
      description: Zwraca listę faktur
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: Numer zamówienia
          in: query
          name: order_id
          required: false
          schema:
            type: string
        - description: Sortowanie (asc/desc), domyślnie desc
          in: query
          name: sort
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/corrects_list'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury korygujące
    post:
      summary: Tworzy fakturę korygującą
      description: Tworzenie nowej faktury
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/correct_request'
        description: Struktura faktury
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury korygujące
      x-codegen-request-body-name: correct
  /corrects/{correct_id}:
    delete:
      summary: Usuwa daną fakturę korygującą
      description: Usunięcie faktury
      parameters:
        - description: Identyfikator faktury
          in: path
          name: correct_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Komunikat zwrotny
                    example: OK
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury korygujące
    get:
      summary: Pobierz szczegóły faktury korygującej
      description: Zwraca informacje o wybranej fakturze
      parameters:
        - description: Identyfikator faktury
          in: path
          name: correct_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/correct_details'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury korygujące
    put:
      summary: Aktualizuje fakturę korygującą
      description: Aktualizacja faktury
      parameters:
        - description: Identyfikator faktury
          in: path
          name: correct_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/correct_request'
        description: Aktualizacja faktury
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury korygujące
      x-codegen-request-body-name: invoice
  /corrects_lines:
    post:
      summary: Dodaje pozycję do faktury korygującej
      description: Tworzenie nowej pozycji na fakturze
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/correct_line_request'
        description: Struktura linii
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury korygujące
      x-codegen-request-body-name: invoice
  /corrects_lines/{line_id}:
    delete:
      summary: Usuwa pozycję faktury korygującej
      description: Usunięcie pozycji na fakturze
      parameters:
        - description: Identyfikator linii
          in: path
          name: line_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Komunikat zwrotny
                    example: OK
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury korygujące
    put:
      summary: Aktualizuje pozycję faktury korygującej
      description: Aktualizacja pozycji na fakturze
      parameters:
        - description: Identyfikator linii
          in: path
          name: line_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/correct_line_request'
        description: Struktura linii
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury korygujące
      x-codegen-request-body-name: invoice
  /countries:
    get:
      summary: Aktualna lista wszystkich państw obsługiwanych przez sellasist
      description: Aktualna lista wszystkich państw obsługiwanych przez sellasist
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - code: PL
                    id: 170
                    name: Poland
                  - code: BS
                    id: 16
                    name: Bahamas
                  - code: BO
                    id: 26
                    name: Bolivia
                title: countries
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Informacyjne
  /documents_series:
    get:
      summary: Pobierz listę serii dokumentów
      description: Lista dostępnych serii dokumentów
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    default:
                      description: Czy seria jest domyślna
                      example: true
                      type: bool
                    document_type:
                      description: Typ dokumentu
                      example: invoices
                      type: string
                    id:
                      description: Identyfikator płatności
                      example: 1
                      type: integer
                    name:
                      description: Nazwa serii
                      example: 'Prefix: RA (Rachunek)'
                      type: string
                    number_type:
                      description: Sposób numeracji
                      example: number_month_year
                      type: string
                    prefix:
                      description: Prefiks serii
                      example: RA
                      type: string
                    status:
                      description: Status serii
                      example: true
                      type: bool
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Serie dokumentów
  /external_accounts:
    get:
      summary: Pobierz listę kont w zewnętrznych serwisach
      description: Zwraca listę dostępnych kont.
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Identyfikator konta
                      example: 1
                      type: integer
                    login:
                      description: Login
                      example: biuro@esprzedaz.com
                      type: string
                    type:
                      description: Typ konta / nazwa serwisu
                      example: empik
                      type: string
                  type: object
                title: external_accounts
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Konta w zewnętrznych serwisach
  /images:
    post:
      summary: Dodaje obraz produktu
      description: Dodawanie nowego obrazu dla istniejącego produktu
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_image_request'
        description: Informacje o obrazie
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  fotolister_id:
                    description: Identyfikator obrazu w systemie fotolister.pl
                    example: 123332
                    type: integer
                  image_id:
                    description: Identyfikator obrazu
                    example: 1
                    type: integer
                  status:
                    example: success
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Obrazy
      x-codegen-request-body-name: images
  /images/{image_id}:
    delete:
      summary: Usuwa dany obraz
      description: Usuwa wskazany obrazek
      parameters:
        - description: Identyfikator obrazu
          in: path
          name: image_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Obrazy
    put:
      summary: Aktualizuje obraz
      description: Aktualizacja obrazu
      parameters:
        - description: Identyfikator obrazu
          in: path
          name: image_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update_image_request'
        description: Aktualizacja obrazu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  image_id:
                    example: 20
                    type: integer
                  status:
                    example: success
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Obrazy
      x-codegen-request-body-name: products
  /images/{product_id}:
    get:
      summary: Pobierz listę obrazów produktu
      description: Zwraca obrazy dla danego produktu
      parameters:
        - description: Identyfikator produktu
          in: path
          name: product_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/images_for_product_schema'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Obrazy
  /invoices:
    get:
      summary: Pobierz listę faktur
      description: Zwraca listę faktur
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: Numer zamówienia
          in: query
          name: order_id
          required: false
          schema:
            type: string
        - description: Data wystawienia od
          example: '2026-03-15'
          in: query
          name: date_from
          required: false
          schema:
            type: string
        - description: Data wystawienia do
          example: '2026-03-15'
          in: query
          name: date_to
          required: false
          schema:
            type: string
        - description: Sortowanie (asc/desc), domyślnie desc
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: Identyfikator serii
          in: query
          name: series_id
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invoices_list'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury
    post:
      summary: Tworzy fakturę
      description: Tworzenie nowej faktury
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/invoice_request'
        description: Struktura faktury
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury
      x-codegen-request-body-name: invoice
  /invoices/{invoice_id}:
    delete:
      summary: Usuwa daną fakturę
      description: Usunięcie faktury
      parameters:
        - description: Identyfikator faktury
          in: path
          name: invoice_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Komunikat zwrotny
                    example: OK
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury
    get:
      summary: Pobierz szczegóły faktury
      description: Zwraca informacje o wybranej fakturze
      parameters:
        - description: Identyfikator faktury
          in: path
          name: invoice_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invoice_details'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury
    put:
      summary: Aktualizuje fakturę
      description: Aktualizacja faktury
      parameters:
        - description: Identyfikator faktury
          in: path
          name: invoice_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/invoice_request'
        description: Aktualizacja faktury
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury
      x-codegen-request-body-name: invoice
  /invoices_lines:
    post:
      summary: Dodaje pozycję do faktury
      description: Tworzenie nowej pozycji na fakturze
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/invoice_line_request'
        description: Struktura linii
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury
      x-codegen-request-body-name: invoice
  /invoices_lines/{line_id}:
    delete:
      summary: Usuwa pozycję faktury
      description: Usunięcie pozycji na fakturze
      parameters:
        - description: Identyfikator linii
          in: path
          name: line_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Komunikat zwrotny
                    example: OK
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury
    put:
      summary: Aktualizuje pozycję faktury
      description: Aktualizacja pozycji na fakturze
      parameters:
        - description: Identyfikator linii
          in: path
          name: line_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/invoice_line_request'
        description: Struktura linii
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Faktury
      x-codegen-request-body-name: invoice
  /manufacturers:
    get:
      summary: Pobierz listę producentów
      description: Zwraca listę producentów
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    title: Microsoft
                  - id: 2
                    title: Asus
                  - id: 3
                    title: Acer
                items:
                  format: int64
                  type: integer
                title: manufacturers
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Producenci
  /notes:
    get:
      summary: Pobierz listę notatek
      description: Zwraca listę wszystkich notatek
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    author_id:
                      description: ID autora
                      type: integer
                    date:
                      description: Data utworzenia notatki
                      format: date-time
                      type: string
                    editor_id:
                      description: ID edytora
                      type: integer
                    id:
                      description: Identyfikator notatki
                      type: integer
                    text:
                      description: Treść notatki
                      type: string
                    visibility:
                      description: Ustawienia widoczności notatki (JSON)
                      type: string
                  type: object
                type: array
          description: success
        '404':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: Nie ma notatek
                    type: string
                  status:
                    example: error
                    type: string
                type: object
          description: Nie znaleziono notatek
      tags:
        - Notatki
    post:
      summary: Tworzy notatkę
      description: Tworzy nową notatkę
      requestBody:
        content:
          application/json:
            schema:
              properties:
                order_id:
                  description: ID zamówienia
                  type: integer
                text:
                  description: Treść notatki
                  type: string
                visibility:
                  description: Lista ustawień widoczności (opcjonalne)
                  items:
                    type: string
                  type: array
              required:
                - order_id
                - text
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    description: ID utworzonej notatki
                    type: integer
                  order_id:
                    description: ID zamówienia
                    type: integer
                  text:
                    description: Treść notatki
                    type: string
                type: object
          description: Notatka została utworzona
        '400':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: Nieprawidłowy format visibility
                    type: string
                  status:
                    example: error
                    type: string
                type: object
          description: Błąd walidacji
      tags:
        - Notatki
  /notes/{id}:
    delete:
      summary: Usuwa daną notatkę
      description: Usuwa notatkę
      parameters:
        - description: ID notatki do usunięcia
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: success
                    type: string
                type: object
          description: Notatka została usunięta
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: '404'
                    type: string
                  message:
                    example: Nie znaleziono podanej notatki
                    type: string
                type: object
          description: Nie znaleziono notatki
      tags:
        - Notatki
  /notes/{order_id}:
    get:
      summary: Pobierz listę notatek zamówienia
      description: Zwraca notatki dla konkretnego zamówienia
      parameters:
        - description: ID zamówienia
          in: path
          name: order_id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Note'
                type: array
          description: success
        '404':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: Dla podanego produktu nie znaleziono obrazkow
                    type: string
                  status:
                    example: error
                    type: string
                type: object
          description: Nie znaleziono notatek dla zamówienia
      tags:
        - Notatki
  /operationdocuments:
    get:
      description: >-
        Zwraca listę dokumentów operacyjnych z opcjonalnymi parametrami
        filtrowania.
      parameters:
        - description: Liczba wyników do zwrócenia (maksymalnie 100).
          in: query
          name: limit
          required: false
          schema:
            default: 100
            example: 50
            type: integer
        - description: Przesunięcie (offset) dla paginacji wyników.
          in: query
          name: offset
          required: false
          schema:
            default: 0
            example: 10
            type: integer
        - description: Filtruje według identyfikatora serii dokumentów.
          in: query
          name: series_id
          required: false
          schema:
            example: 3
            type: integer
        - description: Filtruje według typu dokumentu [`sale`, `stock`, `correct`].
          in: query
          name: type
          required: false
          schema:
            example: sale
            type: string
        - description: >-
            Filtruje według podtypu dokumentu [`invoice`, `receipt`, `proforma`,
            `bill`, `correction`, `reservation`, `release`, `internal_release`,
            `internal_admission`, `admission`, `mov`].
          in: query
          name: subtype
          required: false
          schema:
            example: invoice
            type: string
        - description: >-
            Data początkowa (od) dla filtrowania dokumentów (po polu
            `issue_date`).
          in: query
          name: date_from
          required: false
          schema:
            example: '2026-03-15'
            format: date
            type: string
        - description: Data końcowa (do) dla filtrowania dokumentów (po polu `issue_date`).
          in: query
          name: date_to
          required: false
          schema:
            example: '2026-03-15'
            format: date
            type: string
        - description: Filtruje dokumenty według ID zamówienia.
          in: query
          name: order_id
          required: false
          schema:
            example: 202
            type: integer
        - description: >-
            Filtruje według statusu wydruku. Prawidłowe wartości: `true` lub
            `false`.
          in: query
          name: is_printed
          required: false
          schema:
            example: true
            type: boolean
        - description: >-
            Filtruje według statusu wstrzymania wydruku. Prawidłowe wartości:
            `true` lub `false`.
          in: query
          name: print_suspended
          required: false
          schema:
            example: true
            type: boolean
        - description: >-
            Kolejność sortowania wyników. Wartości: `asc` (rosnąco) lub `desc`
            (malejąco).
          in: query
          name: sort
          required: false
          schema:
            default: desc
            enum:
              - asc
              - desc
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    custom_number:
                      example: DOC-2023/001
                      type: string
                    id:
                      example: 123
                      type: integer
                    is_printed:
                      example: true
                      type: boolean
                    issue_date:
                      example: '2026-07-20'
                      format: date
                      type: string
                    number:
                      example: INV-2023/01
                      type: string
                    print_suspended:
                      example: true
                      type: boolean
                    sale_date:
                      example: '2026-07-20'
                      format: date
                      type: string
                    series_id:
                      example: 3
                      type: integer
                    subtype:
                      example: sale
                      type: string
                    type:
                      example: invoice
                      type: string
                  type: object
                type: array
          description: Lista dokumentów operacyjnych pobrana pomyślnie.
        '400':
          description: Nieprawidłowe dane żądania.
        '404':
          description: Nie znaleziono dokumentów spełniających kryteria wyszukiwania.
      summary: Pobierz listę dokumentów operacyjnych
      tags:
        - Dokumenty operacyjne [BETA]
    post:
      description: Tworzy nowy dokument operacyjny na podstawie przekazanych danych.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OperationDocument'
        description: Dane nowego dokumentu operacyjnego.
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationDocument'
          description: Dokument został pomyślnie utworzony.
        '400':
          description: Nieprawidłowe dane żądania.
      summary: Dodaj nowy dokument operacyjny
      tags:
        - Dokumenty operacyjne [BETA]
  /operationdocuments/{id}:
    delete:
      description: Trwale usuwa dokument operacyjny o podanym ID.
      parameters:
        - description: ID dokumentu operacyjnego do usunięcia.
          in: path
          name: id
          required: true
          schema:
            example: 123
            type: integer
      responses:
        '204':
          description: Dokument został usunięty pomyślnie.
        '404':
          description: Dokument o podanym ID nie został odnaleziony.
      summary: Usuń dokument operacyjny
      tags:
        - Dokumenty operacyjne [BETA]
    get:
      description: Zwraca szczegółowe informacje o dokumencie operacyjnym.
      parameters:
        - description: ID dokumentu operacyjnego.
          in: path
          name: id
          required: true
          schema:
            example: 123
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationDocument'
          description: Sukces. Zwrócony dokument operacyjny.
      summary: Pobierz dokument operacyjny według ID
      tags:
        - Dokumenty operacyjne [BETA]
    put:
      description: Zaktualizuj istniejące dane dokumentu operacyjnego.
      parameters:
        - description: ID dokumentu operacyjnego do aktualizacji.
          in: path
          name: id
          required: true
          schema:
            example: 123
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OperationDocument'
        description: Dane dokumentu do aktualizacji.
        required: true
      responses:
        '200':
          description: Sukces. Dane dokumentu zostały zaktualizowane.
        '400':
          description: Nieprawidłowe dane żądania.
        '404':
          description: Dokument o podanym ID nie został odnaleziony.
      summary: Zaktualizuj dokument operacyjny
      tags:
        - Dokumenty operacyjne [BETA]
  /operationdocuments_series:
    get:
      description: Zwraca listę dostępnych serii dokumentów operacyjnych.
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      example: 1
                      type: integer
                    name:
                      example: Seria faktur sprzedażowych
                      type: string
                    prefix:
                      description: Prefiks stosowany w numeracji dokumentów w danej serii.
                      example: FV
                      type: string
                    subtype:
                      description: Podtyp dokumentu (np. sale, export).
                      example: sale
                      type: string
                    suffix:
                      description: Sufiks stosowany w numeracji dokumentów w danej serii.
                      example: /SU
                      type: string
                    type:
                      description: >-
                        Typ dokumentu operacyjnego (np. invoice, order,
                        receipt).
                      example: invoice
                      type: string
                  type: object
                type: array
          description: Lista serii dokumentów operacyjnych pobrana pomyślnie.
        '404':
          description: Nie znaleziono serii dokumentów operacyjnych.
      summary: Pobierz listę serii dokumentów operacyjnych
      tags:
        - Serie dokumentów operacyjnych [BETA]
  /options:
    get:
      summary: Pobierz listę opcji
      description: Zwraca listę opcji
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Grupa 1
                  - id: 2
                    name: Grupa 2
                  - id: 3
                    name: Grupa 3
                items:
                  format: int64
                  type: integer
                title: options
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Opcje
  /options/{option_id}:
    get:
      summary: Pobierz szczegóły opcji
      description: Zwraca szczegóły opcji
      parameters:
        - description: Identyfikator opcji
          in: path
          name: option_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  group_id:
                    example: 1
                    type: integer
                  id:
                    example: 2
                    type: integer
                  name:
                    example: Nazwa opcji 1
                    type: string
                  properties:
                    example:
                      - id: 1
                        name: Właścwiość 1
                      - id: 2
                        name: Właścwiość 2
                    items:
                      format: int64
                      type: integer
                    type: array
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Opcje
  /options_groups:
    get:
      summary: Pobierz listę grup opcji
      description: Zwraca listę grup opcji
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Grupa 1
                  - id: 2
                    name: Grupa 2
                  - id: 3
                    name: Grupa 3
                items:
                  format: int64
                  type: integer
                title: options_groups
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Opcje - Grupy
  /options_groups/{group_id}:
    get:
      summary: Pobierz szczegóły grupy opcji
      description: Zwraca listę grup opcji
      parameters:
        - description: Identyfikator grupy opcji
          in: path
          name: group_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 2
                    type: integer
                  name:
                    example: Nazwa grupy 1
                    type: string
                  options:
                    example:
                      - id: 1
                        name: Wariant 1
                      - id: 2
                        name: Wariant 2
                    items:
                      format: int64
                      type: integer
                    type: array
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Opcje - Grupy
  /options_properties:
    get:
      summary: Pobierz listę właściwości opcji
      description: Zwraca listę właściwości opcji
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Właścwiość 1
                  - id: 2
                    name: Właścwiość 2
                  - id: 3
                    name: Właścwiość 3
                items:
                  format: int64
                  type: integer
                title: options_properties
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Opcje - Właściwości
  /options_properties/{option_id}:
    get:
      summary: Pobierz szczegóły właściwości opcji
      description: Zwraca szczegóły właściwości
      parameters:
        - description: Identyfikator opcji
          in: path
          name: option_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 2
                    type: integer
                  name:
                    example: Nazwa właściwości 1
                    type: string
                  option_id:
                    example: 1
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Opcje - Właściwości
  /orders:
    get:
      summary: Pobierz listę zamówień
      tags:
        - Zamówienia
      description: Zwraca listę zamówień wraz z filtrowaniem i stronicowaniem
      parameters:
        - description: Offset (przesunięcie wyników)
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit zwracanych wyników (maksymalnie 100)
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: Identyfikator statusu zamówienia
          in: query
          name: status_id
          required: false
          schema:
            type: integer
        - description: Zwraca zamówienia o ID wyższym niż podana wartość
          in: query
          name: from_id
          required: false
          schema:
            type: integer
        - description: Adres e-mail klienta składającego zamówienie
          in: query
          name: email
          required: false
          schema:
            type: string
        - description: Częściowe dopasowanie adresu e-mail klienta (szukane od początku ciągu)
          in: query
          name: email_contains
          required: false
          schema:
            type: string
        - description: Imię klienta (z adresu bilingowego, wyszukiwanie typu LIKE)
          in: query
          name: first_name
          required: false
          schema:
            type: string
        - description: Nazwisko klienta (z adresu bilingowego, wyszukiwanie typu LIKE)
          in: query
          name: last_name
          required: false
          schema:
            type: string
        - description: Zewnętrzny identyfikator zamówienia (np. ID zamówienia z tabel importowych)
          in: query
          name: external_id
          required: false
          schema:
            type: string
        - description: "Wyszukiwanie kupującego po zewnętrznym user ID lub user login (np. 111111111 lub Client:11111111)"
          in: query
          name: external_user
          required: false
          schema:
            type: string
        - description: Dokładna data złożenia zamówienia (format YYYY-MM-DD)
          in: query
          name: exact_date
          required: false
          schema:
            type: string
        - description: Typ dokumentu sprzedaży (receipt/invoice)
          in: query
          name: sale_document
          required: false
          schema:
            type: string
            enum: [ receipt, invoice ]
        - description: Flaga oznaczająca zamówienia z otwartym sporem na Allegro (0 lub 1)
          in: query
          name: dispute
          required: false
          schema:
            type: integer
        - description: Zwraca tylko zamówienia w pełni opłacone (filtr logiczny oparty na statusie paid)
          in: query
          name: paid
          required: false
          schema:
            type: boolean
        - description: Filtrowanie po statusie płatności
          in: query
          name: payment_status
          required: false
          schema:
            type: string
            enum: [ paid, unpaid, excess, partial, returned ]
        - description: Identyfikator metody płatności
          in: query
          name: payment_id
          required: false
          schema:
            type: integer
        - description: Identyfikator metody dostawy
          in: query
          name: shipment_id
          required: false
          schema:
            type: integer
        - description: Symbol waluty zamówienia (np. PLN, EUR)
          in: query
          name: currency
          required: false
          schema:
            type: string
        - description: Źródło zamówienia (np. allegro, ebay, amazon, erli itp.)
          in: query
          name: source
          required: false
          schema:
            type: string
            enum: [ allegro, ebay, arena, ceneo, extsources, amazon, empik, shopee, erli, wms, marketplace, baselinker ]
        - description: Data zamówienia od (YYYY-MM-DD HH:ii:ss)
          in: query
          name: date_from
          required: false
          schema:
            type: string
        - description: Data zamówienia do (YYYY-MM-DD HH:ii:ss)
          in: query
          name: date_to
          required: false
          schema:
            type: string
        - description: Sortowanie zamówień po ID (asc/desc), domyślnie desc
          in: query
          name: sort
          required: false
          schema:
            type: string
            enum: [ asc, desc ]
        - description: Flaga umożliwiająca pobranie wszystkich zamówień niezależnie od statusu placeholder (0 lub 1)
          in: query
          name: include_placeholders
          required: false
          schema:
            type: integer
        - description: Filtrowanie po konkretnym statusie placeholder (0 - zatwierdzone, 1 - w trakcie składania)
          in: query
          name: placeholder
          required: false
          schema:
            type: integer
        - description: Login powiązanego konta integracji zewnętrznej (Allegro, eBay, Amazon itp.)
          in: query
          name: creator
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Sukces, zwraca listę uproszczonych zamówień spełniających kryteria
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      example: 1234
                    creator:
                      type: string
                      example: "Allegro/konto_testowe"
                    date:
                      type: string
                      example: "2026-07-20 12:00:00"
                    status:
                      type: object
                      properties:
                        id:
                          type: integer
                        name:
                          type: string
                      example:
                        id: 1
                        name: "Nowe"
                    bill_address:
                      $ref: '#/components/schemas/address_data'
                    payment:
                      type: object
                      properties:
                        id:
                          type: integer
                        name:
                          type: string
                        paid:
                          type: number
                        paid_date:
                          type: string
                          nullable: true
                        cod:
                          type: integer
                          description: "Czy płatność za pobraniem (0/1)"
                        status:
                          type: string
                        currency:
                          type: string
                      example:
                        id: 3
                        name: "Przelew bankowy"
                        paid: 150.00
                        paid_date: "2026-07-20 12:10:00"
                        cod: 0
                        status: "paid"
                        currency: "PLN"
                    email:
                      type: string
                      example: "klient@example.com"
                    total:
                      type: number
                      example: 150.00
                    comment:
                      type: string
                      example: "Proszę o fakturę"
                    source:
                      type: string
                      example: "allegro"
                    shop:
                      type: string
                      example: "mojsklep.pl"
        '401':
          $ref: '#/components/responses/401Unauthorized'
    post:
      summary: Tworzy zamówienie
      tags:
        - Zamówienia
      description: Tworzenie nowego zamówienia w systemie Sellasist
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/order_request'
        description: Struktura danych nowego zamówienia
        required: true
      responses:
        '200':
          description: Zamówienie zostało pomyślnie utworzone (lub system zwrócił istniejące o podanym zewnętrznym ID)
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: Wewnętrzne ID utworzonego zamówienia w Sellasist
                    example: 1234
                  status:
                    type: string
                    description: Status dla istniejących (np. exist)
                    example: "exist"
                  order_id:
                    type: integer
                    description: Wewnętrzne ID istniejącego zamówienia
                    example: 1234
        '401':
          $ref: '#/components/responses/401Unauthorized'
  /orders/{order_id}:
    get:
      summary: Pobierz szczegóły zamówienia
      tags:
        - Zamówienia
      description: Zwraca pełne szczegóły wybranego zamówienia na podstawie wewnętrznego ID
      parameters:
        - description: Wewnętrzne ID zamówienia w systemie Sellasist (lub zewnętrzny import_id na synergy)
          in: path
          name: order_id
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Sukces, zwraca pełną strukturę zamówienia wraz z koszykiem i danymi integracyjnymi
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 1234
                  is_copied:
                    type: string
                    example: "false"
                  copied_order_id:
                    type: integer
                    nullable: true
                    example: null
                  creator:
                    type: string
                    example: "Allegro/konto_testowe"
                  date:
                    type: string
                    example: "2026-07-20 12:00:00"
                  order_master:
                    type: integer
                    nullable: true
                  last_status_change:
                    type: string
                    example: "2026-07-20 12:05:00"
                  status:
                    type: object
                    properties:
                      id:
                        type: integer
                      name:
                        type: string
                    example:
                      id: 1
                      name: "Nowe"
                  shipment:
                    type: object
                    properties:
                      id:
                        type: integer
                      name:
                        type: string
                      total:
                        type: number
                      pickup_point:
                        type: string
                        description: Sformatowany adres punktu odbioru
                      pickup_code:
                        type: string
                        description: Kod/identyfikator punktu odbioru
                      delivery_date:
                        type: string
                        nullable: true
                      internal_name:
                        type: string
                    example:
                      id: 3
                      name: "InPost Paczkomat 24/7"
                      total: 12.99
                      pickup_point: "Kraków, ul. Długa 15 (KRA12M)"
                      pickup_code: "KRA12M"
                      delivery_date: "2026-07-21"
                      internal_name: "inpost"
                  payment:
                    type: object
                    properties:
                      id:
                        type: integer
                      name:
                        type: string
                      paid:
                        type: number
                      paid_date:
                        type: string
                        nullable: true
                      cod:
                        type: integer
                        description: "Czy płatność za pobraniem (0 lub 1)"
                      status:
                        type: string
                      currency:
                        type: string
                      tax:
                        type: number
                        description: Prowizja/opłata dodatkowa za płatność
                    example:
                      id: 5
                      name: "Płatności Allegro (PayU)"
                      paid: 162.99
                      paid_date: "2026-07-20 12:02:15"
                      cod: 0
                      status: "paid"
                      currency: "PLN"
                      tax: 0.00
                  placeholder:
                    type: integer
                    example: 0
                  important:
                    type: integer
                    example: 0
                  deadline:
                    type: string
                    nullable: true
                    example: "2026-07-23"
                  external_data:
                    type: object
                    description: Dynamicznie ustrukturyzowane dane zależne od źródła zamówienia (special)
                    properties:
                      external_id:
                        type: string
                      external_login:
                        type: string
                      external_user_id:
                        type: string
                      external_account:
                        type: integer
                      external_account_name:
                        type: string
                      external_shipment_name:
                        type: string
                      external_payment_name:
                        type: string
                      external_payment_id:
                        type: string
                      external_number_of_packages:
                        type: integer
                      external_smart:
                        type: integer
                      external_type:
                        type: string
                    example:
                      external_id: "9f8a32b1-1234-5678-abcd-09876543210f"
                      external_login: "kupujacy_allegro"
                      external_user_id: "9876543"
                      external_account: 2
                      external_account_name: "Allegro/konto_testowe"
                      external_shipment_name: "Allegro Paczkomat InPost"
                      external_payment_name: "PayU"
                      external_payment_id: "PAYU-ID-998"
                      external_number_of_packages: 1
                      external_smart: 1
                      external_type: "allegro"
                  source:
                    type: string
                    example: "allegro"
                  shop:
                    type: string
                    example: "sellingo.pl"
                  tracking_number:
                    type: string
                    example: "603236276201506110294169"
                  document_number:
                    type: string
                    example: "FV/2026/07/12"
                  invoice:
                    type: integer
                    example: 1
                  email:
                    type: string
                    example: "klient@example.com"
                  total:
                    type: number
                    example: 162.99
                  comment:
                    type: string
                    example: "Proszę zapakować na prezent."
                  bill_address:
                    $ref: '#/components/schemas/address_data'
                  shipment_address:
                    $ref: '#/components/schemas/address_data'
                  pickup_point:
                    type: object
                    properties:
                      code:
                        type: string
                      type:
                        type: string
                      address:
                        type: string
                    example:
                      code: "KRA12M"
                      type: "inpost"
                      address: "Kraków, ul. Długa 15"
                  notes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                        author:
                          type: string
                        date:
                          type: string
                        text:
                          type: string
                    example:
                      - id: 1
                        author: "admin@esprzedaz.com"
                        date: "2026-07-20 12:05:00"
                        text: "Klient prosił telefonicznie o zmianę koloru na czarny."
                  carts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                        line_id:
                          type: integer
                        product_id:
                          type: integer
                        variant_id:
                          type: integer
                          nullable: true
                        selected_options:
                          type: string
                          description: Sklasyfikowane opcje zakodowane w base64
                        selected_options_data:
                          type: array
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                              prop:
                                type: string
                              variant_id:
                                type: integer
                        location:
                          type: string
                          nullable: true
                        name:
                          type: string
                        image:
                          type: string
                          nullable: true
                        image_thumb:
                          type: string
                          nullable: true
                        quantity:
                          type: number
                        quantityMissing:
                          type: number
                          description: "Ilość brakująca do skompletowania zamówienia"
                        price:
                          type: number
                        weight:
                          type: number
                        ean:
                          type: string
                          nullable: true
                        symbol:
                          type: string
                          nullable: true
                        signature:
                          type: string
                          nullable: true
                        catalog_number:
                          type: string
                          nullable: true
                        tax_rate:
                          type: number
                        additional_information:
                          type: string
                          nullable: true
                        external_offer_id:
                          type: string
                          nullable: true
                        price_buy:
                          type: number
                          nullable: true
                        additional_fields:
                          type: array
                          items:
                            type: object
                            properties:
                              field_id:
                                type: integer
                              field_value:
                                type: string
                        packages:
                          type: object
                          properties:
                            normal:
                              type: object
                              properties:
                                type:
                                  type: string
                                length:
                                  type: number
                                width:
                                  type: number
                                height:
                                  type: number
                            collective:
                              type: object
                              properties:
                                type:
                                  type: string
                                length:
                                  type: number
                                width:
                                  type: number
                                height:
                                  type: number
                    example:
                      - id: 552
                        line_id: 552
                        product_id: 341
                        variant_id: 7691
                        selected_options: "W3t0ZXh0OiAiY29sb3IiLCB2YWx1ZTogImJsYWNrIn1d"
                        selected_options_data:
                          - name: "Kolor"
                            prop: "Czarny"
                            variant_id: 12
                        location: "A-12-3"
                        name: "Koszulka sportowa męska"
                        image: "https://demo.sellasist.pl/uploads/files/koszulka.png"
                        image_thumb: "https://demo.sellasist.pl/uploads/files/koszulka_thumb.png"
                        quantity: 1
                        quantityMissing: 0
                        price: 150.00
                        weight: 0.25
                        ean: "5901234567890"
                        symbol: "TS-FIT-M"
                        signature: "SIG-99"
                        catalog_number: "TSHIRT-FIT-M"
                        tax_rate: 23
                        additional_information: "Rozmiar M"
                        external_offer_id: "1234567890"
                        price_buy: 25.50
                        additional_fields:
                          - field_id: 2
                            field_value: "Nadruk własny"
                        packages:
                          normal:
                            type: "normal"
                            length: 25
                            width: 30
                            height: 2
                  shipments:
                    type: array
                    items:
                      type: object
                      properties:
                        ordershipment_id:
                          type: integer
                          description: ID listu przewozowego (0 dla ESP/INSPIGO)
                        ordershipment_uuid:
                          type: string
                          nullable: true
                          description: UUID z nowego serwisu ESP
                        service:
                          type: string
                          description: Nazwa usługi kurierskiej
                        tracking_number:
                          type: string
                          description: Sformatowany numer śledzenia (lub połączone przecinkami w przypadku paczki wielopaczki)
                        tracking_numbers:
                          type: array
                          description: "Pełny obiekt danych śledzenia dla ESP"
                          items:
                            type: object
                    example:
                      - ordershipment_id: 121
                        service: "InPost Paczkomat"
                        tracking_number: "603236276201506110294169"
                  payments:
                    type: array
                    items:
                      type: object
                      properties:
                        payment_id:
                          type: integer
                        date:
                          type: string
                        payment_data:
                          type: string
                          description: Informacja o transakcji z kanału płatności
                        amount:
                          type: number
                        currency:
                          type: string
                        status:
                          type: integer
                        name:
                          type: string
                    example:
                      - payment_id: 22
                        date: "2026-07-20 12:02:15"
                        payment_data: "Trn ID: PayU-12345678"
                        amount: 162.99
                        currency: "PLN"
                        status: 1
                        name: "PayU (Konto testowe)"
                  additional_fields:
                    type: array
                    items:
                      type: object
                      properties:
                        field_id:
                          type: integer
                        field_name:
                          type: string
                        field_value:
                          type: string
                        base64:
                          type: string
                          description: Kodowanie zawartości załącznika pliku
                    example:
                      - field_id: 4
                        field_name: "Załącznik PDF"
                        field_value: "https://demo.sellasist.pl/public/upload/order/file.pdf"
                        base64: "JVBERi0xLjQKJdPr6eEKMSAw..."
        '401':
          $ref: '#/components/responses/401Unauthorized'
    put:
      summary: Aktualizuje zamówienie
      tags:
        - Zamówienia
      description: Aktualizacja danych i koszyka istniejącego zamówienia
      parameters:
        - description: Wewnętrzne ID zamówienia w systemie Sellasist (lub zewnętrzny import_id na synergy)
          in: path
          name: order_id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/order_request_update'
        description: Zmodyfikowana struktura danych zamówienia
        required: true
      responses:
        '200':
          description: Zamówienie zostało pomyślnie zaktualizowane
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "success"
                  id:
                    type: integer
                    example: 1234
        '400':
          description: Błąd walidacji danych wejściowych
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: "error"
                  message:
                    type: string
                    example: "Nieprawidłowy parametr. Pole \"price_buy\" musi być liczbą."
        '404':
          description: Zamówienie, status, płatność lub dostawa o podanym ID nie zostały odnalezione
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "Dostawa o podanym identyfikatorze nie istnieje!"
  /orders_bulk:
    put:
      summary: Masowa aktualizacja zamówień (Bulk Update)
      description: Masowa aktualizacja zamówień
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/orders_bulk_request'
        description: Masowa aktualizacja zamówień
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/orders_bulk'
          description: Sukces
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/response_orders_bulk_400'
          description: Wprowadzone dane są nieprawidłowe
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '413':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/response_orders_bulk_413'
          description: Przekroczono limit zamówień w pojedynczym zapytaniu
      tags:
        - Zamówienia
      x-codegen-request-body-name: orders
  /orders_fields:
    get:
      summary: Pobierz listę dodatkowych pól zamówień
      description: lista dodatkowych pól
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: pole_tekstowe
                    type: text
                  - id: 2
                    max: 5.99
                    min: 0.01
                    name: pole_numeryczne
                    type: number
                  - id: 3
                    name: pole_wyboru
                    option_type: one
                    type: option
                    values:
                      - title: Tak
                      - title: Nie
                title: orders_fields
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Zamówienia - Dodatkowe pola
    post:
      summary: Tworzy dodatkowe pole zamówienia
      description: Tworzenie dodatkowego pola
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/orders_fields_request'
        description: Struktura pola
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
      tags:
        - Zamówienia - Dodatkowe pola
  /orders_fields/{field_id}:
    delete:
      summary: Usuwa dane dodatkowe pole zamówienia
      description: Usunięcie pola
      parameters:
        - description: Identyfikator dodatkowego pola
          in: path
          name: field_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Komunikat zwrotny
                    example: OK
                    type: string
                type: object
          description: Sukces
      tags:
        - Zamówienia - Dodatkowe pola
    get:
      summary: Pobierz szczegóły dodatkowego pola zamówienia
      description: Pobieranie informacji o dodatkowym polu
      parameters:
        - description: Identyfikator dodatkowego pola
          in: path
          name: field_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/orders_fields_response'
          description: Sukces
      tags:
        - Zamówienia - Dodatkowe pola
    put:
      summary: Aktualizuje dodatkowe pole zamówienia
      description: Aktualizacja właściwości dodatkowego pola
      parameters:
        - description: Identyfikator dodatkowego pola
          in: path
          name: field_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/orders_fields_request'
        description: Struktura pola
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
      tags:
        - Zamówienia - Dodatkowe pola
  /orders_lines:
    post:
      summary: Dodaje pozycję do zamówienia
      description: Tworzenie nowej pozycji na fakturze
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/order_line_request'
        description: Struktura linii
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
      tags:
        - Zamówienia - Pozycje
      x-codegen-request-body-name: order
  /orders_lines/{line_id}:
    delete:
      summary: Usuwa pozycję zamówienia
      description: Usunięcie pozycji w zamówieniu
      parameters:
        - description: Identyfikator linii
          in: path
          name: line_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Komunikat zwrotny
                    example: OK
                    type: string
                type: object
          description: Sukces
      tags:
        - Zamówienia - Pozycje
    put:
      summary: Aktualizuje pozycję zamówienia
      description: Aktualizacja pozycji w zamówieniu
      parameters:
        - description: Identyfikator linii
          in: path
          name: line_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/order_line_request'
        description: Struktura linii
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
      tags:
        - Zamówienia - Pozycje
      x-codegen-request-body-name: order
  /orders_logs:
    get:
      summary: Pobierz listę logów zamówień
      description: Zwraca listę logów zamówienia
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - in: query
          name: operation_tag
          schema:
            enum:
              - order_create
              - order_edit
              - order_position_edit
              - order_status_change
              - order_delete
              - order_merge
              - invoice_create
              - invoice_edit
              - invoice_remove
              - receipt_create
              - receipt_edit
              - receipt_remove
            type: string
        - description: Posiada operation_tag (true/false)
          in: query
          name: has_operation_tag
          required: false
          schema:
            type: bool
        - description: sortowanie asc/desc
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: Data akcji od
          example: '2026-07-20 09:08:13'
          in: query
          name: date_from
          required: false
          schema:
            type: string
        - description: Data akcji do
          example: '2026-07-20 09:08:13'
          in: query
          name: date_to
          required: false
          schema:
            type: string
        - description: Identyfikatory zamówień oddzielone przecinkami
          in: query
          name: orders
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    action:
                      description: Wykonana akcja
                      example: Utworzono zamówienie
                      type: string
                    date:
                      description: Data utworzenia
                      example: '2026-07-20 17:13:55'
                      type: string
                    id:
                      description: Identyfikator loga
                      example: 121
                      type: integer
                    object_id:
                      description: >-
                        Powiązany identyfikator w logu, występuje w:
                        order_status_change, order_merge, invoice_create,
                        invoice_remove, receipt_create, receipt_remove
                      example: 1
                      type: integer
                    operation_tag:
                      description: >-
                        Tag operacji, możliwe: order_create, order_edit,
                        order_status_change, order_delete, order_merge,
                        invoice_create, invoice_remove, receipt_create,
                        receipt_remove
                      example: order_status_change
                      type: string
                    order_id:
                      description: Identyfikator zamówienia
                      example: 56
                      type: integer
                    user_id:
                      description: Id użytkownika
                      example: 2
                      type: integer
                  type: object
                title: orders_logs
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Zamówienia
  /orders_search:
    post:
      summary: Wyszukuje zamówienia według zadanych kryteriów
      tags:
        - Zamówienia
      description: "Wyszukuje zamówienia na podstawie kryteriów przekazanych w ciele żądania JSON oraz parametrów paginacji w adresie URL."
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 100
          description: "Maksymalna liczba zwracanych wyników (domyślnie 100, maks 500)"
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            default: 0
          description: "Przesunięcie wyników dla paginacji (domyślnie 0)"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/orders_search'
        description: Kryteria wyszukiwania zamówień
        required: true
      responses:
        '200':
          description: Sukces. Zwraca listę znalezionych zamówień.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrderSearchItem'
              example:
                - id: 1025
                  date: "2026-07-29 08:45:00"
                  status:
                    id: 1
                    name: "Nowe"
                - id: 1024
                  date: "2026-07-28 14:20:10"
                  status:
                    id: 2
                    name: "W trakcie realizacji"
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '429':
          description: Przekroczono limit zapytań
      x-codegen-request-body-name: body
  /orders_with_carts:
    get:
      summary: Pobierz listę zamówień wraz z porzuconymi koszykami
      description: Zwraca listę zamówień
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: Identyfikator statusu
          in: query
          name: status_id
          required: false
          schema:
            type: integer
        - description: Adres email
          in: query
          name: email
          required: false
          schema:
            type: string
        - description: status płatności
          in: query
          name: payment_status
          required: false
          schema:
            enum:
              - paid
              - unpaid
              - excess
              - partial
              - returned
            type: string
        - description: Identyfikator metody płatności
          in: query
          name: payment_id
          required: false
          schema:
            type: integer
        - description: Identyfikator metody dostawy
          in: query
          name: shipment_id
          required: false
          schema:
            type: integer
        - description: symbol waluty
          in: query
          name: currency
          required: false
          schema:
            type: string
        - description: dokument sprzedaży
          in: query
          name: sale_document
          required: false
          schema:
            enum:
              - receipt
              - invoice
            type: string
        - description: Data zamówienia od
          example: '2026-07-20 09:08:13'
          in: query
          name: date_from
          required: false
          schema:
            type: string
        - description: Data zamówienia do
          example: '2026-07-20 09:08:13'
          in: query
          name: date_to
          required: false
          schema:
            type: string
        - description: Sortowanie (asc/desc), domyślnie desc
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: źródło zamówienia
          in: query
          name: source
          required: false
          schema:
            enum:
              - allegro
              - ebay
              - arena
              - ceneo
              - extsources
              - amazon
              - empik
              - shopee
              - erli
              - wms
              - marketplace
              - baselinker
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    bill_address:
                      $ref: '#/components/schemas/address_data'
                    carts:
                      example:
                        - additional_information: Dodatkowe informacje
                          catalog_number: ''
                          ean: ''
                          external_offer_id: A21S95F
                          id: 1
                          image: >-
                            https://imge.pl/p/5924/n/fbde7548c104824523c479972ac6af94.png
                          name: Spodnie sztruksowe
                          price: 232.42
                          product_id: 341
                          quantity: 1
                          selected_options: ''
                          symbol: ''
                          tax_rate: 23
                          variant_id: 3
                          weight: 0
                      items:
                        $ref: '#/components/schemas/carts_response'
                      type: array
                    date:
                      description: Data utworzenia zamówienia
                      example: {}
                      type: string
                    id:
                      description: Identyfikator zamówienia
                      example: 1
                      type: integer
                    payment:
                      $ref: '#/components/schemas/payment_data'
                    status:
                      description: Status zamówienia
                      properties:
                        id:
                          description: Identyfikator statusu
                          example: 1
                          type: integer
                        name:
                          description: Nowe
                          example: Nazwa statusu
                          type: string
                      type: object
                  type: object
                title: products
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Zamówienia
  /ordersshipments:
    get:
      summary: Pobierz listę listów przewozowych
      description: Zwraca listę listów przewozowych
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: Identyfikator zamówienia
          in: query
          name: order_id
          required: false
          schema:
            type: integer
        - description: sortowanie asc/desc
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: Data utworzenia od
          example: '2026-07-20 09:08:13'
          in: query
          name: date_from
          required: false
          schema:
            type: string
        - description: Data utworzenia do
          example: '2026-07-20 09:08:13'
          in: query
          name: date_to
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    created_date:
                      description: Data utworzenia
                      example: '2026-07-20 15:20:07'
                      type: string
                    delivered_date:
                      description: Data dostarczenia
                      example: '2026-07-20 17:13:55'
                      type: string
                    file:
                      description: PDF w postaci base64
                      example: ''
                      type: string
                    id:
                      description: Identyfikator listu przewozowego
                      example: 1
                      type: integer
                    order_id:
                      description: Identyfikator zamówienia
                      example: 56
                      type: integer
                    tracking_number:
                      description: Numer do śledzenia przesyłki
                      example: '603236276201506110294169'
                      type: string
                  type: object
                title: ordersshipments
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Listy przewozowe
    post:
      summary: Tworzy list przewozowy
      description: Tworzy list przewozowy
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ordershipment_request'
        description: Aktualizacja zamówienia
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Listy przewozowe
      x-codegen-request-body-name: ordershipment
  /ordersshipments/{id}:
    delete:
      summary: Usuwa dany list przewozowy
      description: Usuwa list przewozowy
      parameters:
        - description: Identyfikator listu przewozowego
          in: path
          name: id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Listy przewozowe
    get:
      summary: Pobierz szczegóły listu przewozowego
      description: Zwraca list przewozowy
      parameters:
        - description: Identyfikator listu przewozowego
          in: path
          name: id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ordershipment_response'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Listy przewozowe
    put:
      summary: Aktualizuje list przewozowy
      description: Aktualizuje list przewozowy
      parameters:
        - description: Identyfikator listu przewozowego
          in: path
          name: id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ordershipment_request'
        description: Aktualizacja zamówienia
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Listy przewozowe
      x-codegen-request-body-name: ordershipment
  /payments:
    get:
      summary: Pobierz listę sposobów płatności
      description: Lista dostępnych kanałów płatności
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Identyfikator płatności
                      example: 1
                      type: integer
                    title:
                      description: Nazwa kanału płatności
                      example: Przelew
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Sposoby płatności
    post:
      summary: Tworzy sposób płatności
      description: Tworzenie nowego kanału płatności
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/payment_channel_request'
        description: Struktura kanału
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: success
                    type: string
                type: object
          description: Sukces
        '400':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: Brak obowiazkowego pola xyz
                    type: string
                type: object
          description: Błąd - brak wszystkich wymaganych pól
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: Nie znaleziono integracji
                    type: string
                type: object
          description: Błąd - nieistniejący operator płatności w polu integration
      tags:
        - Sposoby płatności
  /payments/{gateway_id}:
    delete:
      summary: Usuwa dany sposób płatności
      description: Usuwa dany kanał płatności
      parameters:
        - description: Identyfikator kanału płatności
          in: path
          name: gateway_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Sposoby płatności
    get:
      summary: Pobierz szczegóły sposobu płatności
      description: Zwraca szczegóły o danym kanale płatności
      parameters:
        - description: Identyfikator kanału płatności
          in: path
          name: gateway_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/payment_channel_details_request'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Sposoby płatności
    put:
      summary: Aktualizuje sposób płatności
      description: Aktualizuje dany kanał płatności
      parameters:
        - description: Identyfikator kanału płatności
          in: path
          name: gateway_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/payment_channel_request'
        description: Struktura kanału
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: success
                    type: string
                type: object
          description: Sukces
        '400':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: 'Zla stawka vat! Dostepne opcje: 0, 23'
                    type: string
                type: object
          description: Błąd - niepoprawna stawka VAT
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: Nie znaleziono metody platnosci
                    type: string
                type: object
          description: Błąd - próba aktualizacji nieistniejącej metody płatności
      tags:
        - Sposoby płatności
  /printerpoints:
    get:
      summary: Pobierz listę punktów drukowania (printerpoints)
      description: Zwraca listę stanowisk WMS
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  eprint_key:
                    description: Zwraca klucz eprint konkretnego stanowiska
                    example: klucz
                    type: string
                  id:
                    example: 666
                    type: integer
                  name:
                    example: drukara testowa
                    type: string
                  printers:
                    example: zakodowane dane
                    type: string
                type: object
          description: Sukces, zwraca listę stanowisk WMS
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Printerpoints
  /printfile:
    post:
      summary: Wyślij plik do wydruku
      description: Zlecanie wydruku dokumnetu przez Sellasist Cloud Print
      requestBody:
        content:
          application/json:
            schema:
              properties:
                document:
                  description: dokument do wydruku w kodowaniu base64
                  example: ZXhhbXBsZQ==
                  required: true
                  type: string
                documentFormat:
                  description: raw (dotyczy np. zpl) oraz pdf
                  enum:
                    - raw
                    - pdf
                  example: pdf
                  type: string
                documentType:
                  description: Typ dokumentu do druku
                  enum:
                    - PRINT_ORDER
                    - PRINT_LABEL
                    - PRINT_SALEDOC
                    - PRINT_BARCODE
                    - PRINT_OTHER
                  example: PRINT_ORDER
                  required: true
                  type: string
                printerPointId:
                  description: Numer id stanowiska WMS
                  example: 666
                  type: integer
              type: object
        description: Szczegóły zlecenia wydruku
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  document:
                    example: 666
                    type: integer
                type: object
          description: Sukces, zwraca informacje o statusie wydruku
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Printfile
  /products:
    get:
      summary: Pobierz listę produktów
      tags:
        - Produkty
      description: Zwraca listę produktów wraz z opcjonalnymi filtrami
      parameters:
        - description: Offset (przesunięcie wyników)
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit zwracanych wyników (maksymalnie 10000)
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: Dokładny kod EAN
          in: query
          name: ean
          required: false
          schema:
            type: string
        - description: Dokładny symbol produktu
          in: query
          name: symbol
          required: false
          schema:
            type: string
        - description: Dokładny numer katalogowy
          in: query
          name: catalog_number
          required: false
          schema:
            type: string
        - description: Zwraca produkty o ID wyższym niż podana wartość
          in: query
          name: from_id
          required: false
          schema:
            type: integer
        - description: Identyfikator oferty w zewnętrznych portalach aukcyjnych (Allegro, sklepy, marketplaces)
          in: query
          name: auction_id
          required: false
          schema:
            type: string
        - description: Sortowanie po ID produktu (asc/desc), domyślnie desc
          in: query
          name: sort
          required: false
          schema:
            type: string
            enum: [ asc, desc ]
        - description: Sortowanie chronologiczne po dacie utworzenia (asc/desc)
          in: query
          name: sort_date
          required: false
          schema:
            type: string
            enum: [ asc, desc ]
      responses:
        '200':
          description: Sukces, zwraca listę produktów spełniających kryteria
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      example: 1
                    name:
                      type: string
                      example: Produkt testowy
                    catalog_number:
                      type: string
                      nullable: true
                      example: X123
                    ean:
                      type: string
                      nullable: true
                      example: '1111111111111'
                    pack_ean:
                      type: string
                      nullable: true
                      example: '2222222222222'
                    symbol:
                      type: string
                      nullable: true
                      example: S123
                    location:
                      type: string
                      nullable: true
                      example: PS-32-2
                    volume:
                      type: number
                      nullable: true
                      example: 1.5
                    reserved:
                      type: number
                      nullable: true
                      example: 0
                    price:
                      type: number
                      example: 153.22
                    price_promo:
                      type: number
                      example: 72.22
                    quantity:
                      type: number
                      example: 45
                    currency:
                      type: string
                      example: PLN
                    image_url:
                      type: string
                      nullable: true
                      example: https://demo.sellasist.pl/uploads/files/image_thumb.png
                    additional_eans:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: integer
                          ean:
                            type: string
                    variants:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: integer
                            example: 1
                          ean:
                            type: string
                            example: '1111111111112'
                          catalog_number:
                            type: string
                            example: WX123
                          symbol:
                            type: string
                            example: WS123
        '401':
          $ref: '#/components/responses/401Unauthorized'
    post:
      summary: Tworzy produkt
      tags:
        - Produkty
      description: Tworzenie nowego produktu
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product_data'
        description: Szczegóły nowo tworzonego produktu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        error:
                          type: integer
                        message:
                          type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
  /products/{product_id}:
    get:
      summary: Pobierz szczegóły produktu
      tags:
        - Produkty
      description: Zwraca szczegółowe dane konkretnego produktu na podstawie jego identyfikatora
      parameters:
        - description: Identyfikator produktu
          in: path
          name: product_id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 1
                  title:
                    type: string
                    example: Produkt testowy
                  category_id:
                    type: integer
                    nullable: true
                    example: 1
                  price:
                    type: number
                    example: 153.22
                  price_promo:
                    type: number
                    example: 72.22
                  price_buy:
                    type: number
                    example: 9.99
                  promotion:
                    type: integer
                    example: 1
                  presale_date:
                    type: string
                    nullable: true
                    example: '2026-07-20 12:00:59'
                  vat:
                    type: number
                    example: 23
                  quantity:
                    type: number
                    example: 5
                  sold:
                    type: number
                    example: 128.5
                  sold_30:
                    type: number
                    example: 1.05
                  qualities:
                    type: array
                    description: "Lista cech (parametrów) i ich właściwości (wartości) przypisanych do tego produktu."
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: "ID cechy (parametru nadrzędnego)"
                          example: 18
                        name:
                          $ref: '#/components/schemas/MultiLangName'
                        properties:
                          type: array
                          description: "Przypisane właściwości (wartości) danej cechy"
                          items:
                            type: object
                            properties:
                              id:
                                type: integer
                                description: "ID konkretnej właściwości"
                                example: 142
                              name:
                                $ref: '#/components/schemas/MultiLangName'
                    example:
                      - id: 18
                        name:
                          "1": "Color"
                          "2": "Kolor"
                        properties:
                          - id: 142
                            name:
                              "1": "Red"
                              "2": "Czerwony"
                          - id: 143
                            name:
                              "1": "Green"
                              "2": "Zielony"
                  quantity_on_hold:
                    type: number
                    example: 0
                  catalog_number:
                    type: string
                    nullable: true
                    example: T19VN
                  ean:
                    type: string
                    nullable: true
                    example: '7501031311309'
                  pack_ean:
                    type: string
                    nullable: true
                    example: '7501031311310'
                  pack_quantity:
                    type: integer
                    nullable: true
                    example: 10
                  symbol:
                    type: string
                    nullable: true
                    example: T19VNSYM
                  location:
                    type: string
                    nullable: true
                    example: PS-32-3
                  variants_group_id:
                    type: integer
                    nullable: true
                    example: 1
                  attributes_group_id:
                    type: integer
                    nullable: true
                    example: 1
                  before_gpsr:
                    type: integer
                    example: 0
                    description: Status wprowadzenia na rynek przed obowiązkiem GPSR (marketed_before_GPSR_obligation)
                  weight:
                    type: number
                    example: 1.5
                  as_set:
                    type: boolean
                    example: false
                  status:
                    type: integer
                    example: 1
                  volume:
                    type: number
                    example: 1
                  unit_id:
                    type: integer
                    nullable: true
                    example: 1
                  priority:
                    type: integer
                    example: 1
                  step:
                    type: number
                    example: 0.001
                  alert:
                    type: integer
                    example: 3
                  extra_info:
                    type: string
                    nullable: true
                    example: Dodatkowe informacje
                  bestseller:
                    type: integer
                    example: 0
                  new:
                    type: integer
                    example: 1
                  shipment_template_id:
                    type: integer
                    nullable: true
                    example: 1
                  availability_id:
                    type: integer
                    nullable: true
                    example: 1
                  availability:
                    type: object
                    nullable: true
                    properties:
                      id:
                        type: integer
                        example: 1
                      title:
                        type: string
                        example: Wysyłka w 24h
                      days:
                        type: integer
                        example: 1
                  no_barcode_label:
                    type: integer
                    example: 1
                  manufacturer_id:
                    type: integer
                    nullable: true
                    example: 1
                  meta:
                    type: object
                    properties:
                      title:
                        type: string
                        example: Nazwa produktu
                      keywords:
                        type: string
                        example: Bluzka, Spodnie, Odzież
                      description:
                        type: string
                        example: Nowoczesna odzież
                  external_product_id:
                    type: integer
                    nullable: true
                    example: 1432
                  storages:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        storage_id:
                          type: integer
                          example: 341
                        product_variant_id:
                          type: integer
                          nullable: true
                          example: 7691
                        quantity:
                          type: integer
                          example: 1
                        quantity_updated_at:
                          type: string
                          example: '2026-07-20 15:20:07'
                        rack_id:
                          type: integer
                          example: 232
                        shelf_id:
                          type: integer
                          example: 1
                  suppliers:
                    type: array
                    items:
                      type: object
                      properties:
                        quantity:
                          type: integer
                          example: 10
                        supplier_id:
                          type: integer
                          example: 5
                        apisupplier_id:
                          type: integer
                          example: 12
                  pricesfieldsvalues:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 2
                        name:
                          type: string
                          example: Hurtowa 1
                        pricesfield_id:
                          type: integer
                          example: 2
                        value:
                          type: number
                          example: 21.9
                  images:
                    type: array
                    items:
                      $ref: '#/components/schemas/images_for_product_schema'
                  categories:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 3
                        title:
                          type: string
                          example: Bluzki
                        parent:
                          type: string
                          example: '1'
                  description:
                    type: array
                    items:
                      type: object
                      properties:
                        datacell_id:
                          type: integer
                          example: 13
                        datacell_name:
                          type: string
                          example: Długi opis
                        content:
                          type: string
                          example: Przykładowy opis HTML
                  additional_eans:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 301
                        ean:
                          type: string
                          example: '5909999000002'
                  variants:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        quantity:
                          type: number
                          example: 10
                        price:
                          type: number
                          example: 15.00
                        price_promo:
                          type: number
                          example: 10.00
                        promotion:
                          type: integer
                          example: 1
                        ean:
                          type: string
                          nullable: true
                          example: '1111111111112'
                        catalog:
                          type: string
                          nullable: true
                          example: Numer katalogowy
                        symbol:
                          type: string
                          nullable: true
                          example: Symbol produktu
                        status:
                          type: integer
                          example: 1
                        price_buy:
                          type: number
                          example: 3.00
                        properties:
                          type: array
                          items:
                            type: object
                            properties:
                              property_id:
                                type: integer
                                example: 212
                              name:
                                type: string
                                example: wariant testowy
                  attributes:
                    type: array
                    items:
                      type: object
                      properties:
                        attribute_id:
                          type: integer
                          example: 1
                        attribute_value:
                          type: string
                          example: Kolor
                        property_id:
                          type: integer
                          example: 281
                        property_value:
                          type: string
                          nullable: true
                          example: Zielony
                        property_text_value:
                          type: string
                          nullable: true
                          example: null
                  shops_settings:
                    type: array
                    items:
                      type: object
                      properties:
                        shop_id:
                          type: integer
                          example: 1
                        price:
                          type: number
                          example: 33.99
                        price_promo:
                          type: number
                          example: 19.99
                        promotion:
                          type: integer
                          example: 1
                        promotion_end:
                          type: string
                          nullable: true
                          example: '2026-07-20 12:00:59'
                  external_shops_mappings:
                    type: array
                    items:
                      type: object
                      properties:
                        foreign_id:
                          type: integer
                          example: 1432
                        shop_name:
                          type: string
                          example: Sklep goshop
                        shop_id:
                          type: integer
                          example: 1
                        shop_type:
                          type: string
                          example: goshop
                  external_offers_settings:
                    type: array
                    items:
                      type: object
                      properties:
                        offer_id:
                          type: integer
                          example: 8
                        shop:
                          type: string
                          example: allegro
                        external_account_id:
                          type: integer
                          example: 2
                        account:
                          type: string
                          example: kontoallegro
                        price:
                          type: number
                          example: 52.99
                        price_promo:
                          type: number
                          example: 42.99
                        promotion:
                          type: integer
                          example: 1
                        promotion_end:
                          type: string
                          nullable: true
                          example: '2026-07-20 12:00:59'
                  additional_fields:
                    type: array
                    items:
                      type: object
                      properties:
                        field_id:
                          type: integer
                          example: 1
                        field_name:
                          type: string
                          example: pole testowe
                        field_value:
                          type: string
                          example: wartość pola
                  packages:
                    type: object
                    properties:
                      normal:
                        type: object
                        properties:
                          type:
                            type: string
                            example: normal
                          length:
                            type: number
                            example: 30
                          width:
                            type: number
                            example: 20
                          height:
                            type: number
                            example: 15
                      collective:
                        type: object
                        properties:
                          type:
                            type: string
                            example: collective
                          length:
                            type: number
                            example: 60
                          width:
                            type: number
                            example: 40
                          height:
                            type: number
                            example: 30
                  external_marketplace_offers:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 122
                        offer_id:
                          type: string
                          example: '9876543210'
                        external_account_id:
                          type: integer
                          example: 4
                        marketplace_type:
                          type: string
                          nullable: true
                          example: emag
                        account_name:
                          type: string
                          nullable: true
                          example: emag-pl-konto
                        status:
                          type: integer
                          example: 1
                        offer_quantity:
                          type: number
                          example: 5
                        title:
                          type: string
                          example: Spodnie w emag
                        price:
                          type: number
                          example: 159.00
                  allegro_offers:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 15
                        offer_id:
                          type: string
                          example: '1234567890'
                        status:
                          type: string
                          example: ACTIVE
                        last_sync:
                          type: string
                          example: '2026-07-01 10:00:00'
                        sold:
                          type: integer
                          example: 2
                        current_quantity:
                          type: integer
                          example: 8
                        allegro_product_id:
                          type: string
                          nullable: true
                          example: 'abc-123-xyz'
                        title:
                          type: string
                          example: Spodnie sztruksowe czarne
                        allegro_account_name:
                          type: string
                          example: moje_konto_allegro
                        buy_now_price:
                          type: number
                          example: 155.00
                  locations:
                    type: array
                    items:
                      type: object
                      properties:
                        storage_id:
                          type: integer
                          example: 12
                        quantity:
                          type: number
                          example: 20
                        rack_id:
                          type: integer
                          nullable: true
                          example: 5
                        shelf_id:
                          type: integer
                          nullable: true
                          example: 10
                        expiration_date:
                          type: string
                          nullable: true
                          example: '2026-12-31'
                        additional_field:
                          type: string
                          nullable: true
                          example: Uwagi do lokacji
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
    put:
      summary: Aktualizuje produkt
      tags:
        - Produkty
      description: Aktualizacja produktu w oparciu o jego ID
      parameters:
        - description: Identyfikator produktu
          in: path
          name: product_id
          required: true
          schema:
            type: integer
        - description: Tryb zastępowania przypisanych kategorii (0 = dopisz, 1 = zastąp)
          in: query
          name: categories_replacement_mode
          required: false
          schema:
            type: integer
            enum: [ 0, 1 ]
            example: 0
        - description: Tryb zastępowania galerii zdjęć produktu (0 = dopisz, 1 = zastąp)
          in: query
          name: images_replacement_mode
          required: false
          schema:
            type: integer
            enum: [ 0, 1 ]
            example: 0
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product_data_update'
        description: Zmodyfikowana struktura danych produktu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  product_id:
                    example: 20
                    type: integer
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        message:
                          type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
  /products_bestsellers:
    get:
      tags: [ "Produkty" ]
      summary: Pobierz listę najlepiej sprzedających się produktów (bestsellery)
      description: "Zwraca ustrukturyzowaną i stronicowaną listę najlepiej sprzedających się produktów na podstawie wolumenu sprzedaży z ostatniego miesiąca (sold_last_month)."
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 1
          description: "Numer strony z wynikami."
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 18
          description: "Maksymalna liczba produktów na stronie (domyślnie 18)."
      responses:
        200:
          description: Sukces. Zwraca listę najlepiej sprzedających się produktów z paginacją.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/BestsellerProduct'
                  pagination:
                    type: object
                    properties:
                      limit:
                        type: integer
                        example: 18
                      total_items:
                        type: integer
                        example: 154
                      current_page:
                        type: integer
                        example: 1
                      total_pages:
                        type: integer
                        example: 9
                  links:
                    type: object
                    properties:
                      self:
                        type: string
                        format: uri
                        example: "https://demo.sellasist.pl/api/v1/products/bestsellers?page=1&limit=18"
                      next:
                        type: string
                        format: uri
                        nullable: true
                        example: "https://demo.sellasist.pl/api/v1/products/bestsellers?page=2&limit=18"
                  meta:
                    type: object
                    properties:
                      api_version:
                        type: string
                        example: "1.0"
  /products_bulk:
    get:
      summary: Pobierz listę produktów (Bulk)
      description: Zwraca informację o stanach magazynowych
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/products_bulk_data'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Produkty
      x-codegen-request-body-name: products
    put:
      summary: Masowa aktualizacja produktów (Bulk Update)
      description: Masowa aktualizacja produktów
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/products_bulk_request'
        description: Masowa aktualizacja produktów
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/products_bulk'
          description: Sukces
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/response_products_bulk_400'
          description: Wprowadzone dane są nieprawidłowe
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '413':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/response_products_bulk_413'
          description: Przekroczono limit produktów w pojedynczym zapytaniu
      tags:
        - Produkty
      x-codegen-request-body-name: products
  /products_fields:
    get:
      summary: Pobierz listę dodatkowych pól produktów
      description: lista dodatkowych pól
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: pole_tekstowe
                    type: text
                  - id: 2
                    max: 5.99
                    min: 0.01
                    name: pole_numeryczne
                    type: number
                  - id: 3
                    name: pole_wyboru
                    option_type: one
                    type: option
                    values:
                      - title: Tak
                      - title: Nie
                title: products_fields
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Produkty - Dodatkowe pola
    post:
      summary: Tworzy dodatkowe pole produktu
      description: Tworzenie dodatkowego pola
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/products_fields_request'
        description: Struktura pola
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
      tags:
        - Produkty - Dodatkowe pola
  /products_fields/{field_id}:
    delete:
      summary: Usuwa dane dodatkowe pole produktu
      description: Usunięcie pola
      parameters:
        - description: Identyfikator dodatkowego pola
          in: path
          name: field_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Komunikat zwrotny
                    example: OK
                    type: string
                type: object
          description: Sukces
      tags:
        - Produkty - Dodatkowe pola
    get:
      summary: Pobierz szczegóły dodatkowego pola produktu
      description: Pobieranie informacji o dodatkowym polu
      parameters:
        - description: Identyfikator dodatkowego pola
          in: path
          name: field_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/products_fields_response'
          description: Sukces
      tags:
        - Produkty - Dodatkowe pola
    put:
      summary: Aktualizuje dodatkowe pole produktu
      description: Aktualizacja właściwości dodatkowego pola
      parameters:
        - description: Identyfikator dodatkowego pola
          in: path
          name: field_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/products_fields_request'
        description: Struktura pola
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
      tags:
        - Produkty - Dodatkowe pola
  /products_logs:
    get:
      summary: Pobierz listę logów produktów
      tags:
        - Produkty
      description: Zwraca listę logów produktu
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - in: query
          name: operation_tag
          schema:
            enum:
              - product_stock_update
            type: string
        - description: Posiada operation_tag (true/false)
          in: query
          name: has_operation_tag
          required: false
          schema:
            type: bool
        - description: sortowanie asc/desc
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: Data akcji od
          example: '2026-07-20 09:08:13'
          in: query
          name: date_from
          required: false
          schema:
            type: string
        - description: Data akcji do
          example: '2026-07-20 09:08:13'
          in: query
          name: date_to
          required: false
          schema:
            type: string
        - description: Identyfikatory produktów oddzielone przecinkami
          in: query
          name: products
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                title: products_logs
                items:
                  type: object
                  properties:
                    action:
                      description: Wykonana akcja
                      example: Zmiana stanu magazynowego z 10 na 15 sztuk.
                      type: string
                    date:
                      description: Data utworzenia
                      example: '2026-07-20 17:13:55'
                      type: string
                    id:
                      description: Identyfikator loga
                      example: 121
                      type: integer
                    object_id:
                      description: Powiązany identyfikator w logu
                      example: null
                      type: integer
                    operation_tag:
                      description: Tag operacji, możliwe m.in. product_stock_update
                      example: product_stock_update
                      type: string
                    product_id:
                      description: Identyfikator produktu
                      example: 1245
                      type: integer
                    user_id:
                      description: Id użytkownika
                      example: 2
                      type: integer
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
  /products_offers:
    get:
      tags: [ "Produkty - Oferty" ]
      summary: Pobierz listę powiązań ofert z różnych platform
      description: Zwraca zunifikowaną listę ofert powiązanych z produktem z tabel allegro_offers, marketplaces_offers oraz externalshops_offers przy użyciu mechanizmu UNION ALL.
      parameters:
        - { name: product_id, in: query, required: false, schema: { type: integer }, description: "ID produktu w systemie" }
        - { name: account_id, in: query, required: false, schema: { type: integer }, description: "ID konta zewnętrznego (external_accounts.id)" }
        - { name: external_offer_id, in: query, required: false, schema: { type: string }, description: "Zewnętrzny identyfikator oferty (np. numer aukcji Allegro)" }
        - { name: integration, in: query, required: false, schema: { type: string, enum: [ allegro, marketplaces, externalshops ] }, description: "Filtrowanie po typie integracji" }
        - { name: limit, in: query, required: false, schema: { type: integer, default: 100 } }
        - { name: offset, in: query, required: false, schema: { type: integer, default: 0 } }
      responses:
        200:
          description: Lista powiązań ofert pobrana pomyślnie
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductOfferResponse'
              example:
                - id: 1524
                  product_id: 123
                  account_id: 10
                  external_offer_id: "748392011"
                  integration: "allegro"
                - id: 89
                  product_id: 123
                  account_id: 5
                  external_offer_id: "EXT-SHOP-992"
                  integration: "externalshops"
        422:
          description: Błąd walidacji parametrów wejściowych (np. niepoprawne typy danych)
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse422' }
        500:
          description: Krytyczny błąd serwera
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }

    post:
      tags: [ "Produkty - Oferty" ]
      summary: Utwórz nowe powiązanie produktu z ofertą zewnętrzną
      description: Automatycznie rozpoznaje typ integracji na podstawie konta (external_accounts) i zapisuje dane w odpowiedniej tabeli, uzupełniając wymagane pola domyślne dla wybranego kanału.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [ product_id, external_account_id, external_offer_id ]
              properties:
                product_id: { type: integer, description: "ID produktu w systemie Sellasist" }
                external_account_id: { type: integer, description: "ID konta integracji z tabeli external_accounts" }
                external_offer_id: { type: string, description: "Zewnętrzny identyfikator oferty (np. numer aukcji lub ID w sklepie)" }
            example:
              product_id: 123
              external_account_id: 10
              external_offer_id: "748392011"
      responses:
        201:
          description: Powiązanie zostało utworzone pomyślnie. Zwraca zunifikowany obiekt oferty.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductOfferResponse'
              example:
                id: 1524
                product_id: 123
                account_id: 10
                external_offer_id: "748392011"
                integration: "allegro"
        404:
          description: Nie znaleziono konta integracji o podanym external_account_id (Integration account not found)
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
        422:
          description: Błąd walidacji danych wejściowych lub oferta z tym zewnętrznym ID już istnieje dla tego konta
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse422' }
        500:
          description: Błąd zapisu lub transakcji bazy danych
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }
  /products_stock:
    get:
      tags: [ "Produkty - Magazyn" ]
      summary: Pobiera stan magazynowy (filtr precyzyjny lub lista z paginacją)
      description: "Metoda pozwala na pobranie listy stanów magazynowych lub precyzyjne odpytanie o jeden produkt za pomocą: id, ean, symbol lub catalog_number (priorytet według tej właśnie kolejności)."
      parameters:
        - { name: id, in: query, required: false, schema: { type: integer }, description: "Filtrowanie po ID produktu (ma najwyższy priorytet)" }
        - { name: ean, in: query, required: false, schema: { type: string }, description: "Filtrowanie po kodzie EAN" }
        - { name: symbol, in: query, required: false, schema: { type: string }, description: "Filtrowanie po symbolu produktu" }
        - { name: catalog_number, in: query, required: false, schema: { type: string }, description: "Filtrowanie po numerze katalogowym" }
        - { name: limit, in: query, required: false, schema: { type: integer, default: 100 } }
        - { name: offset, in: query, required: false, schema: { type: integer, default: 0 } }
      responses:
        200:
          description: Sukces
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductStockResponse'
        404:
          description: Nie znaleziono produktu o podanym kryterium (Product not found)
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
        500:
          description: Błąd serwera
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }

    put:
      tags: [ "Produkty - Magazyn" ]
      summary: Masowa aktualizacja stanów magazynowych produktu (Bulk Update)
      description: "Pozwala na jednoczesną aktualizację do 1000 produktów. Każdy element tablicy 'products' musi zawierać 'quantity' oraz przynajmniej jeden unikalny identyfikator."
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [ products ]
              properties:
                products:
                  type: array
                  maxItems: 1000
                  description: "Lista produktów do aktualizacji stanu magazynowego"
                  items:
                    type: object
                    required: [ quantity ]
                    properties:
                      id: { type: integer, description: "ID produktu w bazie" }
                      ean: { type: string, description: "Kod EAN produktu" }
                      symbol: { type: string, description: "Symbol wewnętrzny" }
                      catalog_number: { type: string, description: "Numer katalogowy" }
                      quantity: { type: integer, description: "Nowy stan magazynowy (musi być liczbą)" }
            example:
              products:
                - id: 10521
                  quantity: 45
                - ean: "5901234567890"
                  quantity: 12
                - symbol: "BUT-SPORT-42"
                  quantity: 0
                - catalog_number: "CAT-9982"
                  quantity: 130
      responses:
        200:
          description: Zaktualizowano pomyślnie. Zwraca listę zmodyfikowanych produktów.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductStockResponse'
        422:
          description: "Błąd walidacji danych (np. brak identyfikatora, duplikaty w paczce, przekroczenie limitu 1000 sztuk, niespójność w bazie danych)"
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse422' }
        500:
          description: Błąd serwera
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }
  /products_qualities/{product_id}:
    post:
      tags:
        - Produkty
      summary: Przypisuje cechę wraz z właściwościami do produktu
      description: "Przypina cechę (quality_id) oraz jej wybrane lub wszystkie właściwości (properties_id) do produktu o wskazanym ID."
      parameters:
        - name: product_id
          in: path
          required: true
          description: "ID produktu w systemie Sellasist"
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - quality_id
              properties:
                quality_id:
                  type: integer
                  description: "ID cechy (parametru nadrzędnego) z tabeli qualities"
                  example: 18
                properties_id:
                  type: array
                  description: "Opcjonalna tablica ID właściwości (wartości) cechy z tabeli qualities_properties. Jeśli pusta, przypisane zostaną wszystkie właściwości powiązane z tą cechą."
                  items:
                    type: integer
                  example: [ 142, 143 ]
      responses:
        '201':
          description: "Pomyślnie powiązano cechę z produktem."
          content:
            application/json:
              schema:
                type: object
                properties:
                  product_id:
                    type: integer
                    example: 1
                  quality_id:
                    type: integer
                    example: 18
                  assigned_properties:
                    type: array
                    items:
                      type: integer
                    example: [ 142, 143 ]
        '400':
          description: "Błąd walidacji danych (np. properties_id nie jest tablicą, cecha nie ma zdefiniowanych właściwości)."
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: "error"
                  message:
                    type: string
                    example: "Field properties_id must be an array."
        '404':
          description: "Nie znaleziono produktu lub cechy."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse404'
        '422':
          description: "Błąd walidacji (np. niektóre właściwości nie należą do tej cechy)."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse422'
    delete:
      tags:
        - Produkty
      summary: Odpina cechę lub wybrane właściwości od produktu
      description: "Odpina wybrane lub wszystkie właściwości przypisanej cechy od wskazanego produktu."
      parameters:
        - name: product_id
          in: path
          required: true
          description: "ID produktu w systemie Sellasist"
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - quality_id
              properties:
                quality_id:
                  type: integer
                  description: "ID cechy (parametru nadrzędnego) z tabeli qualities"
                  example: 18
                properties_id:
                  type: array
                  description: "Opcjonalna lista ID właściwości do odpięcia. Jeśli pusta, odpięte zostaną wszystkie właściwości przypisane do tej cechy dla tego produktu."
                  items:
                    type: integer
                  example: [ 142 ]
      responses:
        '204':
          description: "Pomyślnie odpięto cechy (brak zawartości)."
        '404':
          description: "Nie znaleziono produktu lub nie znaleziono żadnych pasujących przypisań do usunięcia."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse404'
  /products_variants:
    get:
      summary: Pobierz listę wariantów produktów
      description: Zwraca listę wariantów w produktach
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: Kod EAN
          in: query
          name: ean
          required: false
          schema:
            type: string
        - description: Symbol wariantu
          in: query
          name: symbol
          required: false
          schema:
            type: string
        - description: Numer katalogowy wariantu
          in: query
          name: catalog_number
          required: false
          schema:
            type: string
        - description: Identyfikator w portalach aukcyjnych
          in: query
          name: auction_id
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    description: Identyfikator wariantu w produkcie
                    example: 1
                    type: integer
                  product_id:
                    description: Identyfikator produktu do którego należy wariant
                    example: 20
                    type: integer
                title: products
                type: object
          description: Sukces, zwraca listę wariantów w produktach
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Produkty - Warianty
    post:
      summary: Tworzy wariant produktu
      description: Tworzenie nowego wariantu w produkcie
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product_variant'
        description: Tworzenie nowego wariantu w produkcie
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  product_variant_id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Produkty - Warianty
      x-codegen-request-body-name: products_variants
  /products_variants/{product_variant_id}:
    get:
      summary: Pobierz szczegóły wariantu produktu
      description: Zwraca informacje o podanym wariancie produktu
      parameters:
        - description: Identyfikator wariantu produktu
          in: path
          name: product_variant_id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/product_variants_object'
          description: Sukces, zwraca informacje o wskazanym wariancie produktu
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Produkty - Warianty
    put:
      summary: Aktualizuje wariant produktu
      description: Aktualizacja wariantu produktu
      parameters:
        - description: Identyfikator wariantu
          in: path
          name: product_variant_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product_variant_update'
        description: Aktualizacja wariantu produktu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Produkty - Warianty
      x-codegen-request-body-name: products
  /receiptcorrects:
    get:
      summary: Pobierz listę paragonów korygujących
      description: Zwraca listę korekt paragonów
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: Numer zamówienia
          in: query
          name: order_id
          required: false
          schema:
            type: string
        - description: Sortowanie (asc/desc), domyślnie desc
          in: query
          name: sort
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/correctreceipts_list'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony korygujące
    post:
      summary: Tworzy paragon korygujący
      description: Tworzenie nowej korekty paragonu
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/correct_receipt_request'
        description: Struktura korekty paragonu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony korygujące
      x-codegen-request-body-name: correct
  /receiptcorrects/{id}:
    get:
      summary: Pobierz szczegóły paragonu korygującego
      description: Zwraca informacje o wybranej korekcie paragonu
      parameters:
        - description: Identyfikator korekty paragonu
          in: path
          name: correct_receipt_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/correct_receipt_details'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony korygujące
    put:
      summary: Aktualizuje paragon korygujący
      description: Aktualizacja korekty paragonu
      parameters:
        - description: Identyfikator korekty paragonu
          in: path
          name: id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/correct_receipt_request'
        description: Aktualizacja korekty paragonu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony korygujące
      x-codegen-request-body-name: invoice
  /receipts:
    get:
      summary: Pobierz listę paragonów
      description: Zwraca listę paragonów
      parameters:
        - description: Dla zamówienia nr
          in: query
          name: order_id
          required: false
          schema:
            type: string
        - description: Data utworzenia paragonu od
          example: '2026-07-20 09:08:13'
          in: query
          name: date_from
          required: false
          schema:
            type: string
        - description: Data utworzenia paragonu do
          example: '2026-07-20 09:08:13'
          in: query
          name: date_to
          required: false
          schema:
            type: string
        - description: Wydrukowane (true/false)
          in: query
          name: printed
          required: false
          schema:
            type: bool
        - description: Wydruk zawieszony (true/false)
          in: query
          name: print_suspended
          required: false
          schema:
            type: bool
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: Sortowanie (asc/desc), domyślnie desc
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: Identyfikator serii
          in: query
          name: series_id
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - date: 2018-09-19T11:59:32.000Z
                    id: 1
                    print_suspended: 1
                    printed: 0
                  - date: 2018-09-19T11:59:32.000Z
                    id: 2
                    print_suspended: 0
                    printed: 0
                  - date: 2018-09-19T11:59:32.000Z
                    id: 3
                    print_suspended: 0
                    printed: 1
                items:
                  format: int64
                  type: integer
                title: receipts
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony
    post:
      summary: Tworzy paragon
      description: Tworzenie nowego paragonu
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/receipt_request'
        description: Struktura paragonu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony
      x-codegen-request-body-name: receipt
  /receipts/{receipt_id}:
    delete:
      summary: Usuwa dany paragon
      description: Usunięcie paragonu
      parameters:
        - description: Identyfikator paragonu
          in: path
          name: receipt_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Komunikat zwrotny
                    example: OK
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony
    get:
      summary: Pobierz szczegóły paragonu
      description: Zwraca informacje o wybranym paragonie
      parameters:
        - description: Identyfikator paragonu
          in: path
          name: receipt_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/receipt_details'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony
    put:
      summary: Aktualizuje paragon
      description: Aktualizacja paragonu
      parameters:
        - description: Identyfikator paragonu
          in: path
          name: receipt_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/receipt_request'
        description: Aktualizacja paragonu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony
      x-codegen-request-body-name: receipt
  /receipts_lines:
    post:
      summary: Dodaje pozycję do paragonu
      description: Tworzenie nowej pozycji na paragonie
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/receipt_line_request'
        description: Struktura linii
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony
      x-codegen-request-body-name: receipt
  /receipts_lines/{line_id}:
    delete:
      summary: Usuwa pozycję paragonu
      description: Usunięcie pozycji na paragonie
      parameters:
        - description: Identyfikator linii
          in: path
          name: line_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Komunikat zwrotny
                    example: OK
                    type: string
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony
    put:
      summary: Aktualizuje pozycję paragonu
      description: Aktualizacja pozycji na paragonie
      parameters:
        - description: Identyfikator linii
          in: path
          name: line_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/receipt_line_request'
        description: Struktura linii
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Dokumenty - Paragony
      x-codegen-request-body-name: receipt
  /responsiblepersons:
    get:
      description: >-
        Zwraca listę osób odpowiedzialnych z opcjonalnymi parametrami
        filtrowania.
      parameters:
        - description: Liczba wyników do zwrócenia (maksymalnie 100).
          in: query
          name: limit
          required: false
          schema:
            default: 100
            example: 50
            type: integer
        - description: Przesunięcie (offset) dla paginacji wyników.
          in: query
          name: offset
          required: false
          schema:
            default: 0
            example: 10
            type: integer
        - description: >-
            Kolejność sortowania wyników. Wartości: `asc` (rosnąco) lub `desc`
            (malejąco).
          in: query
          name: sort
          required: false
          schema:
            default: desc
            enum:
              - asc
              - desc
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ResponsiblePerson'
                type: array
          description: Lista osób odpowiedzialnych pobrana pomyślnie.
        '404':
          description: Nie znaleziono osób odpowiedzialnych.
      summary: Pobierz listę osób odpowiedzialnych
      tags:
        - Osoby odpowiedzialne
    post:
      description: Tworzy nową osobę odpowiedzialną na podstawie przekazanych danych.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResponsiblePersonCreate'
        description: Dane nowej osoby odpowiedzialnej.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 123
                    type: integer
                  own_name:
                    example: Własna nazwa
                    type: string
                type: object
          description: Osoba odpowiedzialna została pomyślnie utworzona.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: Wymagane jest podanie email lub form_url
                    type: string
                type: object
          description: Nieprawidłowe dane żądania. Komunikat błędu w odpowiedzi.
      summary: Dodaj nową osobę odpowiedzialną
      tags:
        - Osoby odpowiedzialne
  /responsiblepersons/{id}:
    get:
      description: Zwraca szczegółowe informacje o osobie odpowiedzialnej.
      parameters:
        - description: ID osoby odpowiedzialnej.
          in: path
          name: id
          required: true
          schema:
            example: 123
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsiblePerson'
          description: Sukces. Zwrócona osoba odpowiedzialna.
        '404':
          description: Osoba odpowiedzialna o podanym ID nie została odnaleziona.
      summary: Pobierz osobę odpowiedzialną według ID
      tags:
        - Osoby odpowiedzialne
    put:
      description: Aktualizuje istniejące dane osoby odpowiedzialnej.
      parameters:
        - description: ID osoby odpowiedzialnej do aktualizacji.
          in: path
          name: id
          required: true
          schema:
            example: 123
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResponsiblePersonUpdate'
        description: Dane osoby odpowiedzialnej do aktualizacji.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 123
                    type: integer
                  own_name:
                    example: Nowa własna nazwa
                    type: string
                type: object
          description: Sukces. Dane osoby odpowiedzialnej zostały zaktualizowane.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: Wymagane jest podanie email lub form_url
                    type: string
                type: object
          description: Nieprawidłowe dane żądania. Komunikat błędu w odpowiedzi.
        '404':
          description: Osoba odpowiedzialna o podanym ID nie została odnaleziona.
      summary: Zaktualizuj osobę odpowiedzialną
      tags:
        - Osoby odpowiedzialne
  /responsibleproducers:
    get:
      description: >-
        Zwraca listę odpowiedzialnych producentów z opcjonalnymi parametrami
        filtrowania.
      parameters:
        - description: Filtruje wyniki według ID producenta.
          in: query
          name: manufacturer_id
          required: false
          schema:
            example: 456
            type: integer
        - description: Liczba wyników do zwrócenia (maksymalnie 100).
          in: query
          name: limit
          required: false
          schema:
            default: 100
            example: 50
            type: integer
        - description: Przesunięcie (offset) dla paginacji wyników.
          in: query
          name: offset
          required: false
          schema:
            default: 0
            example: 10
            type: integer
        - description: >-
            Kolejność sortowania wyników. Wartości: `asc` (rosnąco) lub `desc`
            (malejąco).
          in: query
          name: sort
          required: false
          schema:
            default: desc
            enum:
              - asc
              - desc
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ResponsibleProducer'
                type: array
          description: Lista odpowiedzialnych producentów pobrana pomyślnie.
        '404':
          description: Nie znaleziono odpowiedzialnych producentów.
      summary: Pobierz listę odpowiedzialnych producentów
      tags:
        - Odpowiedzialni producenci
    post:
      description: >-
        Tworzy nowego odpowiedzialnego producenta na podstawie przekazanych
        danych.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResponsibleProducerCreate'
        description: Dane nowego odpowiedzialnego producenta.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 123
                    type: integer
                  manufacturer_id:
                    example: 456
                    type: integer
                type: object
          description: Odpowiedzialny producent został pomyślnie utworzony.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: manufacturer_id jest wymagane
                    type: string
                type: object
          description: Nieprawidłowe dane żądania. Komunikat błędu w odpowiedzi.
      summary: Dodaj nowego odpowiedzialnego producenta
      tags:
        - Odpowiedzialni producenci
  /responsibleproducers/{id}:
    get:
      description: Zwraca szczegółowe informacje o odpowiedzialnym producencie.
      parameters:
        - description: ID odpowiedzialnego producenta.
          in: path
          name: id
          required: true
          schema:
            example: 123
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponsibleProducer'
          description: Sukces. Zwrócony odpowiedzialny producent.
        '404':
          description: Odpowiedzialny producent o podanym ID nie został odnaleziony.
      summary: Pobierz odpowiedzialnego producenta według ID
      tags:
        - Odpowiedzialni producenci
    put:
      description: Aktualizuje istniejące dane odpowiedzialnego producenta.
      parameters:
        - description: ID odpowiedzialnego producenta do aktualizacji.
          in: path
          name: id
          required: true
          schema:
            example: 123
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResponsibleProducerUpdate'
        description: Dane odpowiedzialnego producenta do aktualizacji.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 123
                    type: integer
                  manufacturer_id:
                    example: 456
                    type: integer
                type: object
          description: Sukces. Dane odpowiedzialnego producenta zostały zaktualizowane.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: Wymagane jest podanie email lub form_url
                    type: string
                type: object
          description: Nieprawidłowe dane żądania. Komunikat błędu w odpowiedzi.
        '404':
          description: Odpowiedzialny producent o podanym ID nie został odnaleziony.
      summary: Zaktualizuj odpowiedzialnego producenta
      tags:
        - Odpowiedzialni producenci
  /returns:
    get:
      summary: Pobierz listę zwrotów
      description: Zwraca listę wszystkich zwrotów
      parameters:
        - description: numer zamówienia
          in: query
          name: order_id
          required: false
          schema:
            type: integer
        - description: numer źródła
          in: query
          name: source_id
          required: false
          schema:
            type: integer
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
        - description: sortowanie asc/desc
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: Data akcji od
          example: '2026-07-20 09:08:13'
          in: query
          name: date_from
          required: false
          schema:
            type: string
        - description: Data akcji do
          example: '2026-07-20 09:08:13'
          in: query
          name: date_to
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/returns'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Zwroty
  /returns/{id}:
    get:
      summary: Pobierz szczegóły zwrotu
      description: Pobieranie informacji o zwrocie
      parameters:
        - description: Identyfikator zwrotu
          in: path
          name: id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/return'
          description: Sukces
      tags:
        - Zwroty
  /sets/{main_product_id}:
    get:
      summary: Pobierz zawartość zestawu produktowego
      description: Zwraca szczegóły zestawu
      parameters:
        - description: Identyfikator zestawu - produktu
          in: path
          name: main_product_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Powiązane produkty do zestawu
                items:
                  properties:
                    id:
                      description: Identyfikator powiązania
                      example: 1
                      type: integer
                    price:
                      description: Cena
                      example: 13.99
                      type: float
                    product_id:
                      description: Identyfikator produktu
                      example: 1
                      type: integer
                    productvariant_id:
                      description: Identyfikator wariantu produktu
                      example: 5
                      type: integer
                    quantity:
                      description: Stan magazynowy
                      example: 1.5
                      type: float
                  type: object
                title: products
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Produkty - Zestawy produktowe
    post:
      summary: Dodaje produkt do zestawu produktowego
      description: Dodaje produkty do wskazanego zestawu
      parameters:
        - description: Identyfikator zestawu - produktu
          in: path
          name: main_product_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              description: Informacje o powiązaniach w zestawie
              items:
                properties:
                  price:
                    description: Cena
                    example: 13.99
                    type: float
                  product_id:
                    description: Identyfikator produktu
                    example: 1
                    type: integer
                  productvariant_id:
                    description: Identyfikator wariantu produktu
                    example: 5
                    type: integer
                  quantity:
                    description: Stan magazynowy
                    example: 1.5
                    type: float
                type: object
              title: SetsPositionsCreateRequest
              type: array
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  status:
                    description: Status żądania
                    type: string
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Produkty - Zestawy produktowe
    put:
      summary: Aktualizuje zestaw produktowy
      description: Aktualizuje powiązania we wskazanym zestawie
      parameters:
        - description: Identyfikator zestawu - produktu
          in: path
          name: main_product_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              description: Informacje o powiązaniach w zestawie
              items:
                properties:
                  id:
                    description: Identyfikator powiązania
                    example: 1
                    type: integer
                  price:
                    description: Cena
                    example: 13.99
                    type: float
                  quantity:
                    description: Stan magazynowy
                    example: 1.5
                    type: float
                type: object
              title: SetsPositionsUpdateRequest
              type: array
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  status:
                    description: Status żądania
                    type: string
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Produkty - Zestawy produktowe
  /sets_bulk:
    get:
      summary: Pobierz listę zestawów produktowych (Bulk)
      description: Zwraca zestawy produktowe
      responses:
        '200':
          content:
            application/json:
              schema:
                description: zestawy
                items:
                  example:
                    - id: 1
                      main_product_id: 666
                      price: 153
                      product_id: 666
                      product_symbol: SYM123
                      productvariant_id: 1
                      quantity: 2
                    - id: 2
                      main_product_id: 555
                      price: 153
                      product_id: 444
                      product_symbol: SYM333
                      productvariant_id: 2
                      quantity: 2
                    - id: 3
                      main_product_id: 222
                      price: 153
                      product_id: 111
                      product_symbol: SYM666
                      productvariant_id: 2
                      quantity: 2
                title: Sets_bulk
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Produkty - Zestawy produktowe
    put:
      summary: Masowa aktualizacja zestawów produktowych (Bulk Update)
      description: Masowa aktualizacja zestawów
      requestBody:
        content:
          application/json:
            schema:
              '401':
                $ref: '#/components/responses/401Unauthorized'
              '404':
                description: no results
              description: zestawy
              items:
                example:
                  - id: 1
                    main_product_id: 666
                    price: 153
                    product_id: 666
                    product_symbol: SYM123
                    productvariant_id: 1
                    quantity: 2
                  - id: 2
                    main_product_id: 555
                    price: 153
                    product_id: 444
                    product_symbol: SYM333
                    productvariant_id: 2
                    quantity: 2
                  - id: 3
                    main_product_id: 222
                    price: 153
                    product_id: 111
                    product_symbol: SYM666
                    productvariant_id: 2
                    quantity: 2
              title: Sets_bulk
              type: array
        description: Masowa aktualizacja zestawów
      tags:
        - Produkty - Zestawy produktowe
  /sets_items/{id}:
    delete:
      summary: Usuwa pozycję zestawu produktowego
      description: Usuwa wskazane powiązanie z zestawu
      parameters:
        - description: Identyfikator powiązania w zestawie
          in: path
          name: id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Produkty - Zestawy produktowe
  /shipments:
    get:
      summary: Pobierz listę sposobów wysyłki
      description: Pobiera metody dostaw
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Identyfikator sposoby dostawy
                      example: 1
                      type: integer
                    title:
                      description: Nazwa sposobu dostawy
                      example: Paczkomat
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Sposoby wysyłki
    post:
      summary: Tworzy sposób wysyłki
      description: Tworzy metodę dostawy
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/shipment_method_request'
        description: Struktura zlecenia stworzenia sposobu dostawy
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Sposoby wysyłki
  /shipments/{shipment_id}:
    delete:
      summary: Usuwa dany sposób wysyłki
      description: Usuwa daną metodę dostawy
      parameters:
        - description: Identyfikator metody dostawy
          in: path
          name: shipment_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Sposoby wysyłki
    get:
      summary: Pobierz szczegóły sposobu wysyłki
      description: Tworzy metodę dostawy
      parameters:
        - description: Identyfikator metody dostawy
          in: path
          name: shipment_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/shipment_method_request'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Sposoby wysyłki
    put:
      summary: Aktualizuje sposób wysyłki
      description: Aktualizuje metodę dostawy
      parameters:
        - description: Identyfikator metody dostawy
          in: path
          name: shipment_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/shipment_method_request'
        description: Struktura zlecenia stworzenia sposobu dostawy
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Sposoby wysyłki
  /shops:
    get:
      summary: Pobierz listę zintegrowanych sklepów sellingo
      description: Zwraca listę zintegrowanych sklepów sellingo
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    address:
                      description: adres sklepu
                      example: sellingo.pl
                      type: string
                    id:
                      description: Identyfikator sklepu
                      example: 1
                      type: integer
                    status:
                      description: status sklepu
                      example: 1
                      type: integer
                  type: object
                title: shops
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Zintegrowane sklepy sellingo
  /sources:
    get:
      summary: Pobierz listę źródeł zamówień
      description: Zwraca listę dostępnych źródeł zamówień w Sellasist
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: >-
                        Identyfikator źródła, wartość jest unikalna na poziomie
                        rodzaju źródła
                      example: 1
                      type: integer
                    name:
                      description: Wyświetlana nazwa źródła
                      example: Allegro/Konto123
                      type: string
                    type:
                      description: Rodzaj źródła
                      example: allegro
                      type: string
                  type: object
                title: sources
                type: array
          description: success
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          description: no results
      tags:
        - Źródła zamówień
  /statuses:
    get:
      summary: Pobierz listę statusów
      description: Zwraca listę statusów
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Nowe
                  - id: 2
                    name: W trakcie realizacji
                  - id: 3
                    name: Zrealizowane
                items:
                  format: int64
                  type: integer
                title: statuses
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Statusy
  /storages:
    get:
      summary: Pobierz listę magazynów
      description: Pobiera listę magazynów
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Identyfikator magazynu
                      example: 1
                      type: integer
                    title:
                      description: Nazwa magazynu
                      example: Centrum logistyczne Sellasist WA01
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '406':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: 406
                    type: integer
                  message:
                    example: >-
                      Gospodarka magazynowa nie jest uruchomiona! Dokonaj zmian
                      w ustawieniach Sellasist.
                    type: string
                type: object
          description: Błąd - gospodarka magazynowa nie jest włączona
      tags:
        - Gospodarka magazynowa
    post:
      summary: Tworzy magazyn
      description: Tworzy magazyn
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/storage_method_request'
        description: Struktura zlecenia stworzenia magazynu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Identyfikator magazynu
                      example: 1
                      type: integer
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '406':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: 406
                    type: integer
                  message:
                    example: >-
                      Gospodarka magazynowa nie jest uruchomiona! Dokonaj zmian
                      w ustawieniach Sellasist.
                    type: string
                type: object
          description: Błąd - gospodarka magazynowa nie jest włączona
      tags:
        - Gospodarka magazynowa
  /storages/{storage_id}:
    delete:
      summary: Usuwa dany magazyn
      description: Usuwa magazyn
      parameters:
        - description: Identyfikator magazynu
          in: path
          name: storage_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  description: Status wykonania zapytania
                  example: success
                  type: string
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '406':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: 406
                    type: integer
                  message:
                    example: >-
                      Gospodarka magazynowa nie jest uruchomiona! Dokonaj zmian
                      w ustawieniach Sellasist.
                    type: string
                type: object
          description: Błąd - gospodarka magazynowa nie jest włączona
      tags:
        - Gospodarka magazynowa
    get:
      summary: Pobierz szczegóły magazynu
      description: Pobiera informacje o magazynie
      parameters:
        - description: Identyfikator magazynu
          in: path
          name: storage_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/storage_method_request'
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '406':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: 406
                    type: integer
                  message:
                    example: >-
                      Gospodarka magazynowa nie jest uruchomiona! Dokonaj zmian
                      w ustawieniach Sellasist.
                    type: string
                type: object
          description: Błąd - gospodarka magazynowa nie jest włączona
      tags:
        - Gospodarka magazynowa
    put:
      summary: Aktualizuje magazyn
      description: Aktualizuje magazyn
      parameters:
        - description: Identyfikator magazynu
          in: path
          name: storage_id
          required: true
          schema: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/storage_method_request'
        description: Struktura zlecenia aktualizacji magazynu
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    message:
                      description: Wiadomość zwrotna od systemu
                      example: success
                      type: string
                  type: object
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '406':
          content:
            application/json:
              schema:
                properties:
                  error:
                    example: 406
                    type: integer
                  message:
                    example: >-
                      Gospodarka magazynowa nie jest uruchomiona! Dokonaj zmian
                      w ustawieniach Sellasist.
                    type: string
                type: object
          description: Błąd - gospodarka magazynowa nie jest włączona
      tags:
        - Gospodarka magazynowa
  /suppliers:
    get:
      summary: Pobierz listę hurtowni
      description: Zwraca listę aktywnych hurtowni
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Identyfikator hurtowni
                      example: 1
                      type: integer
                    name:
                      description: Nazwa hurtowni
                      example: Action
                      type: string
                  type: object
                title: suppliers
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Hurtownie
  /qualities:
    get:
      tags: [ "Parametry" ]
      summary: Pobiera listę parametrów z paginacją
      parameters:
        - { name: limit, in: query, required: false, schema: { type: integer, default: 100 } }
        - { name: offset, in: query, required: false, schema: { type: integer, default: 0 } }
      responses:
        200:
          description: Sukces
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/QualityResponse'
        500:
          description: Błąd serwera
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }
    post:
      tags: [ "Parametry" ]
      summary: Tworzy nowy parametr wraz z jego właściwościami
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [ name ]
              properties:
                language_id: { type: integer, default: 2, description: "ID języka używane, gdy nazwa w elemencie jest zwykłym stringiem" }
                name:
                  oneOf:
                    - { type: string }
                    - { $ref: '#/components/schemas/MultiLangName' }
                properties:
                  type: array
                  description: "Opcjonalna lista właściwości (w kodzie mapowana na 'values')"
                  items:
                    $ref: '#/components/schemas/QualityPropertyInput'
                values:
                  type: array
                  description: "Alternatywny klucz dla właściwości (równoważny z 'properties')"
                  items:
                    $ref: '#/components/schemas/QualityPropertyInput'
            example:
              language_id: 2
              name:
                "1": "Color"
                "2": "Kolor"
              properties:
                - name: "Czerwony"
                  order: 1
                - name:
                    "1": "Green"
                    "2": "Zielony"
                  order: 2
      responses:
        201:
          description: Utworzono parametr
          content:
            application/json:
              schema: { $ref: '#/components/schemas/QualityResponse' }
        422:
          description: Nazwa już istnieje lub błąd walidacji danych
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse422' }
        500:
          description: Błąd serwera
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }
  /qualities/{id}:
    get:
      tags: [ "Parametry" ]
      summary: Pobiera szczegóły jednego parametru po ID
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
      responses:
        200:
          description: Sukces
          content:
            application/json:
              schema: { $ref: '#/components/schemas/QualityResponse' }
        404:
          description: Nie znaleziono zasobu
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
    put:
      tags: [ "Parametry" ]
      summary: Aktualizuje parametr oraz zarządza jego właściwościami (Upsert/Delete)
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                language_id: { type: integer, default: 2 }
                name:
                  oneOf:
                    - { type: string }
                    - { $ref: '#/components/schemas/MultiLangName' }
                properties:
                  type: array
                  description: "Właściwości do aktualizacji/dodania. UWAGA: te pominięte w tej liście zostaną USUNIĘTE z bazy dla tego parametru."
                  items:
                    $ref: '#/components/schemas/QualityPropertyUpdateInput'
                values:
                  type: array
                  description: "Alternatywny klucz dla właściwości (działa identycznie jak 'properties')"
                  items:
                    $ref: '#/components/schemas/QualityPropertyUpdateInput'
            example:
              language_id: 2
              name: "Zmieniony Rozmiar Obuwia"
              properties:
                - id: 101
                  name: "Rozmiar 42"
                  order: 1
                - id: 102
                  name:
                    "1": "Size 43"
                    "2": "Rozmiar 43"
                  order: 2
                - id: 0
                  name: "Nowo dodawany rozmiar (brak poprawnego ID wymusza INSERT)"
                  order: 3
      responses:
        200:
          description: Zaktualizowano pomyślnie
          content:
            application/json:
              schema: { $ref: '#/components/schemas/QualityResponse' }
        404:
          description: Nie znaleziono parametru
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
        422:
          description: Błąd walidacji danych lub duplikacja nazwy
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse422' }
        500:
          description: Błąd serwera
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }
    delete:
      tags: [ "Parametry" ]
      summary: Usuwa parametr po ID
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
      responses:
        204:
          description: Usunięto pomyślnie (Pusta odpowiedź z kodem 204)
        404:
          description: Nie znaleziono parametru
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
  /qualitiesgroups:
    get:
      tags: [ "Parametry - Grupy" ]
      summary: Pobiera listę grup parametrów z paginacją
      parameters:
        - { name: limit, in: query, required: false, schema: { type: integer, default: 100 } }
        - { name: offset, in: query, required: false, schema: { type: integer, default: 0 } }
      responses:
        200:
          description: Sukces
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/QualityGroupListItemResponse'
        500:
          description: Błąd serwera
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }
    post:
      tags: [ "Parametry - Grupy" ]
      summary: Tworzy nową grupę parametrów
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [ name, order ]
              properties:
                name: { type: string, description: "Zwykły tekst (grupy nie są wielojęzyczne)" }
                order: { type: integer }
                source: { type: string, maxLength: 32 }
                original_id: { type: integer, nullable: true }
            example:
              name: "Cechy Obuwia"
              order: 1
              source: "erp_system"
              original_id: 5402
      responses:
        201:
          description: Utworzono grupę parametrów
          content:
            application/json:
              schema: { $ref: '#/components/schemas/QualityGroupDetailsResponse' }
        422:
          description: Błąd walidacji danych lub nazwa grupy już istnieje
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse422' }
  /qualitiesgroups/{id}:
    get:
      tags: [ "Parametry - Grupy" ]
      summary: Pobiera szczegóły jednej grupy parametrów po ID wraz z przypisanymi parametrami i ich wartościami
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
      responses:
        200:
          description: Sukces
          content:
            application/json:
              schema: { $ref: '#/components/schemas/QualityGroupDetailsResponse' }
        404:
          description: Nie znaleziono grupy
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
    put:
      tags: [ "Parametry - Grupy" ]
      summary: Aktualizuje dane grupy parametrów po ID
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name: { type: string }
                order: { type: integer }
                source: { type: string, maxLength: 32 }
                original_id: { type: integer, nullable: true }
            example:
              name: "Zmieniona Nazwa Grupy"
              order: 2
              source: "manual"
              original_id: null
      responses:
        200:
          description: Zaktualizowano pomyślnie
          content:
            application/json:
              schema: { $ref: '#/components/schemas/QualityGroupDetailsResponse' }
        404:
          description: Nie znaleziono grupy
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
        422:
          description: Błąd walidacji danych lub konflikt nazw
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse422' }
    delete:
      tags: [ "Parametry - Grupy" ]
      summary: Usuwa grupę parametrów po ID
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
      responses:
        204:
          description: Usunięto pomyślnie (Brak zawartości)
        404:
          description: Nie znaleziono grupy
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
  /qualitiesproperties:
    get:
      tags: [ "Parametry - Wartości" ]
      summary: Pobiera wartości parametrów z paginacją
      parameters:
        - { name: quality_id, in: query, required: true, schema: { type: integer }, description: "ID głównego parametru, do którego należą wartości" }
        - { name: limit, in: query, required: false, schema: { type: integer, default: 100 } }
        - { name: offset, in: query, required: false, schema: { type: integer, default: 0 } }
      responses:
        200:
          description: Sukces
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/QualityPropertyResponse'
        404:
          description: Nie znaleziono głównego parametru (Quality not found)
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
        500:
          description: Błąd serwera
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }
    post:
      tags: [ "Parametry - Wartości" ]
      summary: Tworzy nową wartość dla konkretnego parametru głównego (quality_id)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [ quality_id, name ]
              properties:
                quality_id: { type: integer }
                language_id: { type: integer, default: 2 }
                name:
                  oneOf:
                    - { type: string }
                    - { $ref: '#/components/schemas/MultiLangName' }
                order: { type: integer }
            example:
              quality_id: 18
              language_id: 2
              name:
                "1": "XL"
                "2": "Bardzo Duży (XL)"
              order: 5
      responses:
        201:
          description: Utworzono wartość parametru
          content:
            application/json:
              schema: { $ref: '#/components/schemas/QualityPropertyResponse' }
        422:
          description: Duplikacja nazwy w tym parametrze lub brak podanego języka w bazie
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse422' }
        404:
          description: Nie znaleziono głównego parametru (Quality not found)
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
  /qualitiesproperties/{id}:
    get:
      tags: [ "Parametry - Wartości" ]
      summary: Pobiera szczegóły jednej konkretnej wartości parametru po ID
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
        - { name: quality_id, in: query, required: true, schema: { type: integer }, description: "ID parametru nadrzędnego" }
      responses:
        200:
          description: Sukces
          content:
            application/json:
              schema: { $ref: '#/components/schemas/QualityPropertyResponse' }
        404:
          description: Nie znaleziono powiązania wartości z tym quality_id
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
    put:
      tags: [ "Parametry - Wartości" ]
      summary: Aktualizuje dane (nazwę i/lub kolejność) wartości parametru po ID
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [ quality_id ]
              properties:
                quality_id: { type: integer, description: "Wymagane przez kontroler walidacyjny" }
                language_id: { type: integer, default: 2 }
                name:
                  oneOf:
                    - { type: string }
                    - { $ref: '#/components/schemas/MultiLangName' }
                order: { type: integer }
            example:
              quality_id: 18
              language_id: 2
              name: "Zaktualizowana pojedyncza wartość"
              order: 9
      responses:
        200:
          description: Zaktualizowano pomyślnie
          content:
            application/json:
              schema: { $ref: '#/components/schemas/QualityPropertyResponse' }
        404:
          description: Nie znaleziono wartości dla podanego ID i quality_id
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
        422:
          description: Błąd walidacji danych lub nazwa już istnieje w obrębie tego parametru
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse422' }
        500:
          description: Błąd serwera
          content:
            application/json:
              schema: { $ref: '#/components/schemas/FatalErrorResponse500' }
    delete:
      tags: [ "Parametry - Wartości" ]
      summary: Usuwa konkretną wartość parametru po ID
      parameters:
        - { name: id, in: path, required: true, schema: { type: integer } }
        - { name: quality_id, in: query, required: true, schema: { type: integer }, description: "ID parametru nadrzędnego przekazywane w params żądania" }
      responses:
        204:
          description: Usunięto pomyślnie (Brak zawartości)
        404:
          description: Nie znaleziono wartości parametru o podanym ID i powiązaniu
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse404' }
  /users:
    get:
      summary: Pobierz listę klientów
      description: Zwraca listę klientów
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - email: bok@sellasist.pl
                    id: 1
                  - email: bok@sellasist.pl
                    id: 2
                  - email: bok@sellasist.pl
                    id: 3
                items:
                  format: int64
                  type: integer
                title: users
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Klienci
    post:
      summary: Tworzy klienta
      description: Tworzenie nowego klienta
      requestBody:
        content:
          application/json:
            schema:
              properties:
                bill_address:
                  $ref: '#/components/schemas/address_data'
                email:
                  example: bok@sellasist.pl
                  type: string
                shipment_address:
                  $ref: '#/components/schemas/address_data'
              type: object
        description: Szczegóły klienta
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 20
                    type: integer
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Klienci
      x-codegen-request-body-name: users
  /users/{user_id}:
    get:
      summary: Pobierz szczegóły klienta
      description: Zwraca wybranego klienta
      parameters:
        - description: Identyfikator klienta
          in: path
          name: user_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  bill_address:
                    $ref: '#/components/schemas/address_data'
                  email:
                    example: bok@sellasist.pl
                    type: string
                  id:
                    example: 3
                    type: integer
                  register_date:
                    example: {}
                    type: string
                  shipment_address:
                    $ref: '#/components/schemas/address_data'
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Klienci
  /variants:
    get:
      summary: Pobierz listę wariantów
      description: Zwraca listę wariantów
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Grupa 1
                  - id: 2
                    name: Grupa 2
                  - id: 3
                    name: Grupa 3
                items:
                  format: int64
                  type: integer
                title: variants
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Warianty
    post:
      summary: Tworzy wariant
      description: Tworzenie wariantu
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/variants'
        description: Tworzenie wariantu
        required: true
      responses:
        '200':
          content: {}
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Warianty
      x-codegen-request-body-name: order
  /variants/{variant_id}:
    get:
      summary: Pobierz szczegóły wariantu
      description: Zwraca szczegóły wariantu
      parameters:
        - description: Identyfikator wariantu
          in: path
          name: variant_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  group_id:
                    example: 1
                    type: integer
                  id:
                    example: 2
                    type: integer
                  name:
                    example: Nazwa wariantu 1
                    type: string
                  properties:
                    example:
                      - id: 1
                        name: Właścwiość 1
                      - id: 2
                        name: Właścwiość 2
                    items:
                      format: int64
                      type: integer
                    type: array
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Warianty
  /variants_groups:
    get:
      summary: Pobierz listę grup wariantów
      description: Zwraca listę grup wariantów
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Grupa 1
                  - id: 2
                    name: Grupa 2
                  - id: 3
                    name: Grupa 3
                items:
                  format: int64
                  type: integer
                title: variants_groups
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Warianty - Grupy
    post:
      summary: Tworzy grupę wariantów
      description: Tworzenie grupy wariantów
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/variants_groups'
        description: Tworzenie grupy wariantów
        required: true
      responses:
        '200':
          content: {}
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Warianty - Grupy
      x-codegen-request-body-name: order
  /variants_groups/{group_id}:
    get:
      summary: Pobierz szczegóły grupy wariantów
      description: Zwraca listę grup wariantów
      parameters:
        - description: Identyfikator grupy wariantów
          in: path
          name: group_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 2
                    type: integer
                  name:
                    example: Nazwa grupy 1
                    type: string
                  variants:
                    example:
                      - id: 1
                        name: Wariant 1
                      - id: 2
                        name: Wariant 2
                    items:
                      format: int64
                      type: integer
                    type: array
                type: object
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Warianty - Grupy
  /variants_properties:
    get:
      summary: Pobierz listę właściwości wariantów
      description: Zwraca listę właściwości wariantów
      parameters:
        - description: Offset
          in: query
          name: offset
          required: false
          schema:
            type: integer
        - description: Limit
          in: query
          name: limit
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  - id: 1
                    name: Właścwiość 1
                  - id: 2
                    name: Właścwiość 2
                  - id: 3
                    name: Właścwiość 3
                items:
                  format: int64
                  type: integer
                title: variants_properties
                type: array
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Warianty - Właściwości
    post:
      summary: Tworzy właściwość wariantu
      description: Tworzenie właścwiości wariantu
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/variants_properties'
        description: Tworzenie właścwiości wariantu
        required: true
      responses:
        '200':
          content: {}
          description: Sukces
        '401':
          $ref: '#/components/responses/401Unauthorized'
      tags:
        - Warianty - Właściwości
      x-codegen-request-body-name: order
  /variants_properties/{variant_id}:
    get:
      tags:
        - Warianty - Właściwości
      summary: Pobierz szczegóły właściwości wariantu
      description: Zwraca szczegóły właścwiości
      parameters:
        - description: Identyfikator wariantu
          in: path
          name: variant_id
          required: true
          schema: {}
      responses:
        '200':
          content:
            application/json:
              properties:
                message:
                  type: string
                  example: success
                  description: 'Status wykonania zapytania'
        406:
          description: Błąd - gospodarka magazynowa nie jest włączona
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: integer
                    example: 406
                  message:
                    type: string
                    example: "Gospodarka magazynowa nie jest uruchomiona! Dokonaj zmian w ustawieniach Sellasist."
  /vat_countries:
    get:
      tags:
        - Stawki VAT
      summary: Pobierz listę stawek VAT dla krajów
      description: Zwraca listę wszystkich krajów stawek VAT
      responses:
        200:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      description: "Identyfikator kraju stawki VAT"
                    country:
                      $ref: '#/components/schemas/country_data'
        404:
          description: Nie znaleziono krajów stawek VAT
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: "error"
                  message:
                    type: string
                    example: "Nie ma krajów stawek VAT"
    post:
      tags:
        - Stawki VAT
      summary: Tworzy nowy kraj stawki VAT
      description: Tworzy nowy kraj stawki VAT
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - country_id
              properties:
                country_id:
                  type: integer
                  example: 56
                  description: "ID państwa"
      responses:
        200:
          description: Kraj stawki VAT został utworzony
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 2
                    description: "ID utworzonego kraju stawki VAT"
        400:
          description: Błąd walidacji
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: "error"
                  message:
                    type: string
                    example: "Podany kraj nie istnieje"
  /vat_countries/{id}:
    delete:
      tags:
        - Stawki VAT
      parameters:
        - name: id
          in: path
          description: ID kraju stawki VAT do usunięcia
          required: true
          schema:
            type: integer
      summary: Usuwa kraj stawki VAT
      description: Usuwa kraj stawki VAT
      responses:
        200:
          description: Kraj stawki VAT został usunięty
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "success"
        404:
          description: Nie znaleziono kraju stawki VAT
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "Nie znaleziono podanego kraju stawki VAT"
                  error:
                    type: string
                    example: "404"
  /vat_rates:
    get:
      tags:
        - Stawki VAT
      summary: Pobierz listę stawek VAT dodanych w systemie
      description: Zwraca listę wszystkich stawek VAT
      responses:
        200:
          description: success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/vat_rate_data'
        404:
          description: Nie znaleziono stawek VAT
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: "error"
                  message:
                    type: string
                    example: "Nie ma stawek VAT"
    post:
      tags:
        - Stawki VAT
      summary: Utwórz nową stawkę VAT
      description: Tworzy nową stawkę VAT
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - vat_country_id
                - name
              properties:
                vat_country_id:
                  type: integer
                  example: 2
                  description: "ID kraju stawki VAT"
                name:
                  type: string
                  example: "22.5"
                  description: "Wartość stawki VAT"
                standard:
                  type: bool
                  example: false
                  description: "Czy stawka jest standardowa w danym kraju"
      responses:
        200:
          description: Stawka VAT została utworzona
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/vat_rate_data'
        400:
          description: Błąd walidacji
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: "error"
                  message:
                    type: string
                    example: "Niedozowolona nazwa stawki VAT"
  /vat_rates/{id}:
    get:
      tags:
        - Stawki VAT
      parameters:
        - name: id
          in: path
          description: ID stawki VAT
          required: true
          schema:
            type: integer
      summary: Zwraca wybraną stawkę VAT
      description: Zwraca stawkę VAT
      responses:
        200:
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/vat_rate_data'
        404:
          description: Nie znaleziono stawki VAT
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: "error"
                  message:
                    type: string
                    example: "Nie ma takiej stawki VAT"
    put:
      tags:
        - Stawki VAT
      parameters:
        - name: id
          in: path
          description: ID stawki VAT do aktualizacji
          required: true
          schema:
            type: integer
      summary: Aktualizuje wybraną stawkę VAT
      description: Aktualizuje stawkę VAT
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  example: "22.5"
                  description: "Wartość stawki VAT"
                standard:
                  type: bool
                  example: false
                  description: "Czy stawka jest standardowa w danym kraju"
      responses:
        200:
          description: Stawka VAT została zaktualizowana
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/vat_rate_data'
        400:
          description: Błąd walidacji
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: "error"
                  message:
                    type: string
                    example: "Niedozowolona nazwa stawki VAT"
    delete:
      tags:
        - Stawki VAT
      parameters:
        - name: id
          in: path
          description: ID stawki VAT do usunięcia
          required: true
          schema:
            type: integer
      summary: Usuwa wybraną stawkę VAT
      description: Usuwa stawkę VAT
      responses:
        200:
          description: Stawka VAT została usunięta
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "success"
        404:
          description: Nie znaleziono stawki VAT
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "Nie znaleziono podanej stawki VAT"
                  error:
                    type: string
                    example: "404"
        '401':
          $ref: '#/components/responses/401Unauthorized'
    401Unauthorized:
      description: Błąd autoryzacji
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/response_unauthorized'
components:
  responses:
    401Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/response_unauthorized'
      description: Błąd autoryzacji
  schemas:
    BestsellerProduct:
      type: object
      properties:
        id:
          type: integer
          example: 341
        name:
          type: string
          example: "Spodnie sztruksowe zielone"
        catalog_number:
          type: string
          nullable: true
          example: "WOVMQKOWDJ"
        ean:
          type: string
          nullable: true
          example: "5907529223437"
        symbol:
          type: string
          nullable: true
          example: "SYM123"
        location:
          type: string
          nullable: true
          example: "A-12-3"
        volume:
          type: integer
          nullable: true
          example: 2
        reserved:
          type: integer
          nullable: true
          example: 0
        price:
          type: number
          format: float
          example: 153.22
        price_promo:
          type: number
          format: float
          example: 72.22
        quantity:
          type: number
          format: float
          example: 45
        sold_last_month:
          type: number
          format: float
          example: 128.5
        currency:
          type: string
          example: "PLN"
        image_url:
          type: string
          nullable: true
          example: "https://demo.sellasist.pl/uploads/files/image_thumb.png"
    ChangelogItem:
      type: object
      properties:
        version:
          type: string
          description: "Numer wersji oprogramowania."
          example: "1.90.7"
        date:
          type: string
          format: date
          description: "Data publikacji danej wersji."
          example: "2026-03-15"
        description:
          type: string
          description: "Krótkie podsumowanie wydania."
          example: "Aktualizacja API oraz poprawki stabilności"
        changes:
          type: array
          description: "Szczegółowa lista poszczególnych zmian w tej wersji."
          items:
            type: object
            properties:
              type:
                type: string
                description: "Typ modyfikacji."
                enum: [ added, fixed, improved, removed, security ]
                example: "added"
              text:
                type: string
                description: "Opis zmiany."
                example: "Dodano nowy punkt końcowy do pobierania załączników."
    ErrorResponse422:
      type: object
      properties:
        status: { type: string, example: "error" }
        message: { type: string, example: "Source with ID 999 does not exist." }
    ErrorResponse404:
      type: object
      properties:
        status: { type: string, example: "error" }
        message: { type: string, example: "Source not found" }
    FatalErrorResponse500:
      type: object
      properties:
        status: { type: string, example: "error_fatal" }
        message: { type: string, example: "Internal Server Error. Please contact support." }
        error_id: { type: string, example: "ERR-B93F7A12C5" }
    MultiLangName:
      type: object
      description: "Słownik językowy. Klucz (string) to ID języka z tabeli 'languages', wartość to przetłumaczony tekst."
      additionalProperties:
        type: string
      example:
        "1": "English Text"
        "2": "Polski tekst"
    Note:
      properties:
        author_id:
          description: ID autora
          type: integer
        date:
          description: Data utworzenia notatki
          format: date-time
          type: string
        editor_id:
          description: ID edytora
          type: integer
        id:
          description: Identyfikator notatki
          type: integer
        text:
          description: Treść notatki
          type: string
        visibility:
          description: Ustawienia widoczności notatki (JSON)
          type: string
      type: object
    OperationDocument:
      properties:
        acceptance_status:
          example: 1
          type: integer
        buyer_address:
          $ref: '#/components/schemas/address_data_basic'
        comments:
          example: Przykładowe komentarze do dokumentu.
          type: string
        currency:
          example: PLN
          type: string
        custom_number:
          example: DOC-2023/001
          type: string
        dynamic_fields:
          additionalProperties:
            type: string
          example:
            custom_field: dynamic_value
          type: object
        email:
          example: kontakt@przyklad.pl
          type: string
        exchange_rate:
          example: 4.5
          format: float
          type: number
        id:
          example: 123
          readOnly: true
          type: integer
        invoice_receipt:
          example: false
          type: boolean
        is_printed:
          example: true
          type: boolean
        is_ready:
          example: true
          type: boolean
        issue_date:
          example: '2026-07-20'
          format: date
          type: string
        main_document_id:
          example: 101
          type: integer
        number:
          example: INV-2023/01
          type: string
        order_id:
          example: 202
          type: integer
        original_document_number:
          example: ORIG-2023/001
          type: string
        package_number:
          example: PKG12345
          type: string
        paid:
          example: true
          type: boolean
        payment_id:
          example: 5
          type: integer
        payment_term:
          example: 14 days
          type: string
        payment_term_date:
          example: '2026-07-20'
          format: date
          type: string
        print_suspended:
          example: true
          type: boolean
        products:
          items:
            $ref: '#/components/schemas/OperationDocumentProduct'
          type: array
        receiver_address:
          $ref: '#/components/schemas/address_data_basic'
        sale_date:
          example: '2026-07-20'
          format: date
          type: string
        seller_data:
          example:
            bank_name: Bank Polska
            bic: BPKOPLPW
            city: Warszawa
            commune: Warszawa-Centrum
            country: 170
            county: Warszawa
            flat_number: '10'
            home_number: '65'
            iban: PL61109010140000071219812874
            name: XYZ Sp. z o.o.
            nip: '7960599844'
            post_office: Warszawa
            postcode: 00-102
            province: Mazowieckie
            regon: '123456789'
            street: Marszałkowska
          type: object
        sent:
          example: false
          type: boolean
        series_id:
          example: 3
          type: integer
        shipment_id:
          example: 10
          type: integer
        split_payment:
          example: false
          type: boolean
        subtype:
          example: sale
          type: string
        supplier_address:
          $ref: '#/components/schemas/address_data_basic'
        total:
          example: 1234.56
          format: float
          type: number
        type:
          example: invoice
          type: string
      type: object
    OperationDocumentProduct:
      properties:
        allocated_quantity:
          example: 10
          type: number
        cart_id:
          example: 12
          type: integer
        catalog_number:
          example: CN12345
          type: string
        completed_quantity:
          example: 90
          type: number
        currency:
          example: PLN
          type: string
        discount:
          example: 5
          format: float
          type: number
        ean:
          example: '5901234567890'
          type: string
        expiration_date:
          example: '2026-07-20'
          format: date
          type: string
        id:
          example: 1001
          type: integer
        name:
          example: Produkt A
          type: string
        price_buy:
          example: 80
          format: float
          type: number
        price_gross:
          example: 123
          format: float
          type: number
        price_gross_unit:
          example: 24.6
          format: float
          type: number
        price_net:
          example: 100
          format: float
          type: number
        price_net_unit:
          example: 20
          format: float
          type: number
        product_id:
          example: 45
          type: integer
        quantity:
          example: 5
          type: number
        quantity_in_package:
          example: 10
          type: number
        serial_number:
          example: SN2023001
          type: string
        stock_effect_quantity:
          example: 100
          type: number
        symbol:
          example: PROD-01
          type: string
        unit_id:
          example: 3
          type: integer
        vat:
          example: 23
          type: number
        weight:
          example: 0.5
          format: float
          type: number
      type: object
    PaginatedAlertsResponse:
      type: object
      properties:
        data:
          type: array
          description: "Lista komunikatów przypisanych do bieżącej strony."
          items:
            $ref: '#/components/schemas/SystemAlert'
        pagination:
          type: object
          properties:
            current_page:
              type: integer
              description: "Numer bieżącej strony."
              example: 1
            limit_days:
              type: integer
              description: "Maksymalna liczba elementów na jednej stronie."
              example: 10
            total_pages:
              type: integer
              description: "Łączna liczba wszystkich stron."
              example: 3
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              description: "Adres URL bieżącego żądania."
              example: "https://demo.sellasist.pl/api/v1/alerts?page=1"
            next:
              type: string
              format: uri
              nullable: true
              description: "Adres URL następnego żądania (lub null, jeśli brak kolejnej strony)."
              example: "https://demo.sellasist.pl/api/v1/alerts?page=2"
        meta:
          type: object
          properties:
            api_version:
              type: string
              example: "1.0"
    ProductStockResponse:
      type: object
      properties:
        id: { type: integer, example: 10521 }
        catalog_number: { type: string, nullable: true, example: "CAT-9982" }
        ean: { type: string, nullable: true, example: "5901234567890" }
        symbol: { type: string, nullable: true, example: "BUT-SPORT-42" }
        quantity: { type: integer, example: 45 }
    ResponsiblePerson:
      properties:
        city:
          example: Miasto
          type: string
        country_code:
          example: PL
          type: string
        email:
          example: email@example.com
          type: string
        form_url:
          example: https://example.com/contact
          type: string
        id:
          example: 123
          type: integer
        name:
          example: Imię i nazwisko
          type: string
        own_name:
          example: Własna nazwa
          type: string
        phone_number:
          example: '+48123456789'
          type: string
        postal_code:
          example: 00-000
          type: string
        street:
          example: Ulica 123
          type: string
      type: object
    ResponsiblePersonCreate:
      properties:
        city:
          example: Miasto
          type: string
        country_code:
          example: PL
          type: string
        email:
          description: Wymagane jest podanie email lub form_url
          example: email@example.com
          type: string
        form_url:
          description: Wymagane jest podanie email lub form_url
          example: https://example.com/contact
          type: string
        name:
          example: Imię i nazwisko
          type: string
        own_name:
          example: Własna nazwa
          type: string
        phone_number:
          example: '+48123456789'
          type: string
        postal_code:
          example: 00-000
          type: string
        street:
          example: Ulica 123
          type: string
      type: object
    ResponsiblePersonUpdate:
      properties:
        city:
          example: Nowe miasto
          type: string
        country_code:
          example: DE
          type: string
        email:
          description: Wymagane jest podanie email lub form_url
          example: newemail@example.com
          type: string
        form_url:
          description: Wymagane jest podanie email lub form_url
          example: https://example.com/new-contact
          type: string
        name:
          example: Nowe imię i nazwisko
          type: string
        own_name:
          example: Nowa własna nazwa
          type: string
        phone_number:
          example: '+48987654321'
          type: string
        postal_code:
          example: 12-345
          type: string
        street:
          example: Nowa ulica 456
          type: string
      type: object
    ResponsibleProducer:
      properties:
        city:
          example: Miasto
          type: string
        country_code:
          example: PL
          type: string
        email:
          example: email@example.com
          type: string
        form_url:
          example: https://example.com/contact
          type: string
        id:
          example: 123
          type: integer
        manufacturer_id:
          example: 456
          type: integer
        name:
          example: Pełna nazwa
          type: string
        phone_number:
          example: '+48123456789'
          type: string
        postal_code:
          example: 00-000
          type: string
        street:
          example: Ulica 123
          type: string
        trade_name:
          example: Nazwa handlowa
          type: string
      type: object
    ResponsibleProducerCreate:
      properties:
        city:
          example: Miasto
          type: string
        country_code:
          example: PL
          type: string
        email:
          description: Wymagane jest podanie email lub form_url
          example: email@example.com
          type: string
        form_url:
          description: Wymagane jest podanie email lub form_url
          example: https://example.com/contact
          type: string
        manufacturer_id:
          description: Identyfikator producenta (wymagane)
          example: 456
          type: integer
        name:
          example: Pełna nazwa
          type: string
        phone_number:
          example: '+48123456789'
          type: string
        postal_code:
          example: 00-000
          type: string
        street:
          example: Ulica 123
          type: string
        trade_name:
          example: Nazwa handlowa
          type: string
      required:
        - manufacturer_id
      type: object
    ResponsibleProducerUpdate:
      properties:
        city:
          example: Nowe miasto
          type: string
        country_code:
          example: DE
          type: string
        email:
          description: Wymagane jest podanie email lub form_url
          example: newemail@example.com
          type: string
        form_url:
          description: Wymagane jest podanie email lub form_url
          example: https://example.com/new-contact
          type: string
        manufacturer_id:
          example: 456
          type: integer
        name:
          example: Nowa pełna nazwa
          type: string
        phone_number:
          example: '+48987654321'
          type: string
        postal_code:
          example: 12-345
          type: string
        street:
          example: Nowa ulica 456
          type: string
        trade_name:
          example: Nowa nazwa handlowa
          type: string
    SystemAlert:
      type: object
      properties:
        type:
          type: string
          description: "Unikalny techniczny identyfikator typu alertu."
          example: "allegro_wrong_refresh_token"
        severity:
          type: string
          enum: [ high, medium, low ]
          description: "Poziom krytyczności powiadomienia."
          example: "high"
        title:
          type: string
          description: "Krótki tytuł powiadomienia."
          example: "Błąd tokenu Allegro"
        message:
          type: string
          description: "Pełna treść komunikatu przeznaczona do wyświetlenia użytkownikowi."
          example: "Nie udało się automatycznie przedłużyć ważności danych dostępowych do konta Allegro (Konto1)."
        metadata:
          type: object
          nullable: true
          description: "Dodatkowe ustrukturyzowane informacje powiązane z błędem (np. ID metod dostaw, lista loginów kont)."
          additionalProperties: true
    QualityResponse:
      type: object
      properties:
        id: { type: integer, example: 15 }
        name: { $ref: '#/components/schemas/MultiLangName' }
        properties:
          type: array
          items:
            type: object
            properties:
              id: { type: integer, example: 101 }
              name: { $ref: '#/components/schemas/MultiLangName' }
              order: { type: integer, example: 1 }
    QualityGroupResponse:
      type: object
      properties:
        id:
          type: integer
          example: 5
        name:
          type: string
          example: "Grupa 1"
        order:
          type: integer
          example: 1
        source:
          type: string
          example: "API"
        original_id:
          type: integer
          example: 1
    QualityGroupListItemResponse:
      type: object
      properties:
        id: { type: integer, example: 12 }
        name: { type: string, example: "Cechy Obuwia" }
        source: { type: string, example: "erp_system" }
        original_id: { type: integer, nullable: true, example: 5402 }
        date: { type: string, example: "2026-07-02 11:15:00" }
        order: { type: integer, example: 1 }
    QualityGroupDetailsResponse:
      type: object
      properties:
        id: { type: integer, example: 12 }
        name: { type: string, example: "Cechy Obuwia" }
        source: { type: string, example: "erp_system" }
        original_id: { type: integer, nullable: true, example: 5402 }
        date: { type: string, example: "2026-07-02 11:15:00" }
        order: { type: integer, example: 1 }
        qualities:
          type: array
          description: "Lista parametrów i ich wartości przypisanych do tej grupy"
          items:
            type: object
            properties:
              id: { type: integer, example: 15 }
              name: { $ref: '#/components/schemas/MultiLangName' }
              order: { type: integer, example: 1 }
              properties:
                type: array
                items:
                  type: object
                  properties:
                    id: { type: integer, example: 142 }
                    name: { $ref: '#/components/schemas/MultiLangName' }
                    order: { type: integer, example: 1 }
    QualityPropertyResponse:
      type: object
      properties:
        id: { type: integer, example: 142 }
        quality_id: { type: integer, example: 18 }
        name: { $ref: '#/components/schemas/MultiLangName' }
        order: { type: integer, example: 5 }
    QualityPropertyInput:
      type: object
      required: [ name ]
      properties:
        name:
          oneOf:
            - { type: string }
            - { $ref: '#/components/schemas/MultiLangName' }
        order: { type: integer, description: "Kolejność wyświetlania" }
    QualityPropertyUpdateInput:
      type: object
      properties:
        id: { type: integer, description: "ID istniejącej właściwości. Podanie 0 lub pominięcie klucza doda nową właściwość." }
        name:
          oneOf:
            - { type: string }
            - { $ref: '#/components/schemas/MultiLangName' }
        order: { type: integer }
    address_data:
      description: Dane adresowe
      properties:
        city:
          description: Miasto
          example: Jurkowo
          type: string
        company_name:
          description: Nazwa firmy
          example: Jurex z.o.o
          type: string
        company_nip:
          description: NIP
          example: '0'
          type: string
        country:
          $ref: '#/components/schemas/country_data'
        description:
          description: Dodatkowy opis do adresu
          example: Pod mostem
          type: string
        flat_number:
          description: Numer mieszkania
          example: '255'
          type: string
        home_number:
          description: Numer domu
          example: '13'
          type: string
        name:
          description: Imię
          example: Jerzy
          type: string
        phone:
          description: Telefon
          example: '123456789'
          type: string
        postcode:
          description: Kod pocztowy
          example: 12-345
          type: string
        state:
          description: Województwo
          example: Mazowieckie
          type: string
        street:
          description: Ulica
          example: Jurkowska
          type: string
        surname:
          description: Nazwisko
          example: Jurkowski
          type: string
      title: AddressData
      type: object
    address_data_basic:
      description: Dane adresowe
      properties:
        city:
          description: Miasto
          example: Jurkowo
          type: string
        company_name:
          description: Nazwa firmy
          example: Jurex z.o.o
          type: string
        company_nip:
          description: NIP
          example: '0'
          type: string
        country:
          description: Identyfikator kraju
          example: 170
          type: integer
        description:
          description: Dodatkowy opis do adresu
          example: Pod mostem
          type: string
        flat_number:
          description: Numer mieszkania
          example: '255'
          type: string
        home_number:
          description: Numer domu
          example: '13'
          type: string
        name:
          description: Imię
          example: Jerzy
          type: string
        phone:
          description: Telefon
          example: '123456789'
          type: string
        postcode:
          description: Kod pocztowy
          example: 12-345
          type: string
        state:
          description: Województwo
          example: Mazowieckie
          type: string
        street:
          description: Ulica
          example: Jurkowska
          type: string
        surname:
          description: Nazwisko
          example: Jurkowski
          type: string
      title: AddressDataBasic
      type: object
    carts_request:
      properties:
        additional_information:
          description: Dodatkowe informacje o produkcie
          example: Inny kolor
          type: string
        catalog_number:
          description: Numer katalogowy
          example: WOVMQKOWDJ
          type: string
        ean:
          description: EAN produktu
          example: '5907529223437'
          type: string
        id:
          description: Identyfikator zewnętrzny koszyka
          example: 4812
          type: string
        price:
          description: Cena jednostkowa brutto
          example: 153.22
          type: number
        product_id:
          description: Identyfikator produktu Sellasist
          example: 14
          type: integer
        quantity:
          description: Ilość sztuk
          example: 3
          type: number
        stock_update:
          description: Zaktualizuj stan magazynowy w produkcie (0/1)
          example: 1
          type: integer
        symbol:
          description: Symbol produktu
          example: SYM123
          type: string
        variant_id:
          description: Identyfikator wariantu Sellasist
          example: 199
          type: integer
      title: CartsRequest
      type: object
    carts_response:
      properties:
        additional_information:
          description: Dodatkowe informacje o produkcie
          example: ''
          type: string
        catalog_number:
          description: Numer katalogowy produktu
          example: ''
          type: string
        ean:
          description: Numer EAN
          example: ''
          type: string
        external_offer_id:
          description: Identyfikator oferty produktu w zewnętrznym serwisie
          example: A21S95F
          type: string
        id:
          description: Identyfikator koszyka
          example: 77
          type: id
        image:
          description: Link do zdjęcia produktu
          example: https://imge.pl/p/5924/n/fbde7548c104824523c479972ac6af94.png
          type: string
        image_thumb:
          description: Link do małego zdjęcia produktu
          example: https://imge.pl/p/5924/t/fbde7548c104824523c479972ac6af94.png
          type: string
        name:
          description: Nazwa produktu
          example: Szafka
          type: string
        price:
          description: Cena jednostkowa brutto
          example: 153.22
          type: number
        price_buy:
          description: Cena zakupu produktu
          example: 55
          type: integer
        product_id:
          description: Identyfikator produktu Sellasist
          example: 14
          type: integer
        quantity:
          description: Ilość sztuk
          example: 3
          type: number
        selected_options:
          description: Wybrane opcje produktu zakodowane w formie base64
          example: ''
          type: string
        selected_options_data:
          description: Wybrane opcje produktu zakodowane w formie zwykłej struktury
          items:
            properties:
              name:
                description: Rodzaj wybranej opcji/wariantu
                example: Kolor
                type: string
              option_id:
                description: Identyfikator wybranej opcji
                example: 1
                type: integer
              price:
                description: Cena wybranej opcji/wariantu
                example: 12.34
                type: string
              prop:
                description: Wartość wybranej opcji/wariantu
                example: Czerwony
                type: string
              variant_id:
                description: Identyfikator wybranego wariantu
                example: 1
                type: integer
            type: object
          type: array
        symbol:
          description: Symbol produktu
          example: ''
          type: string
        tax_rate:
          description: Stawka opodatkowania produktu
          example: '23'
          type: number
        variant_id:
          description: Identyfikator wybranego wariantu
          example: 2
          type: integer
        weight:
          description: Waga produktu
          example: '3.0'
          type: number
      title: CartsResponse
      type: object
    category_details:
      properties:
        datacells:
          items:
            properties:
              datacell_id:
                description: Identyfikator pola danych
                example: 4
                type: integer
              language_id:
                description: Identyfikator języka
                example: 2
                type: integer
              text:
                description: Opis pola danych
                example: Treść
                type: string
            type: object
          type: array
        id:
          description: Identyfikator kategorii
          example: 22
          type: integer
        languages:
          items:
            properties:
              language_id:
                description: Identyfikator języka
                example: 2
                type: integer
              title:
                description: Nazwa
                example: Bluzki
                type: string
            type: object
          type: array
        parent:
          description: Identyfikator kategorii - rodzica
          example: 3
          type: integer
        status:
          description: Status aktywności (0/1)
          example: 1
          type: integer
      title: CategoryDetails
      type: object
    complaints_list_item:
      type: object
      properties:
        id:
          type: integer
          example: 15
        date:
          type: string
          example: "2026-08-07 10:30:15"
        status:
          type: string
          example: "Zgłoszenie przyjęte"
        complaint_nubmer:
          type: string
          description: "UWAGA: Klucz zawiera literówkę zgodną z kodem legacy (complaint_nubmer)"
          example: "RMA108072026"
        order_number:
          type: string
          example: "123456"
        source:
          type: string
          example: "Sklep Internetowy"

    complaint_details:
      type: object
      properties:
        id:
          type: integer
          example: 15
        date:
          type: string
          example: "2026-08-07 10:30:15"
        status:
          type: string
          example: "Zgłoszenie przyjęte"
        complaint_nubmer:
          type: string
          description: "UWAGA: Klucz zawiera literówkę zgodną z kodem legacy (complaint_nubmer)"
          example: "RMA108072026"
        order_number:
          type: string
          example: "123456"
        source:
          type: string
          example: "Sklep Internetowy"
        description:
          type: string
          nullable: true
          example: "Uszkodzony zamek błyskawiczny"
        sale_doc_data:
          type: object
          description: Dane adresowe płatnika/dokumentu sprzedaży
          properties:
            name:
              type: string
              example: "Jan"
            surname:
              type: string
              example: "Kowalski"
            street:
              type: string
              example: "Kolejowa"
            home_number:
              type: string
              example: "12"
            flat_number:
              type: string
              nullable: true
              example: "4"
            description:
              type: string
              nullable: true
              example: "Wjechać od bramy B"
            postcode:
              type: string
              example: "00-001"
            city:
              type: string
              example: "Warszawa"
            phone:
              type: string
              example: "123456789"
            country:
              type: integer
              description: ID kraju w bazie danych (np. 170 dla PL)
              example: 170
            company_name:
              type: string
              nullable: true
              example: "Firma Sp. z o.o."
            company_nip:
              type: string
              nullable: true
              example: "1234567890"
            state:
              type: string
              nullable: true
              example: "Mazowieckie"
        products:
          type: array
          description: Lista reklamowanych produktów
          items:
            type: object
            properties:
              id:
                type: integer
                description: ID powiązanej linii koszyka (cart.id)
                example: 10214
              topic:
                type: string
                nullable: true
                example: "Uszkodzenie mechaniczne"
              name:
                type: string
                example: "Koszulka sportowa męska"
              quantity:
                type: number
                example: 1
              unit_price:
                type: number
                example: 89.99
              price_total:
                type: number
                example: 89.99
              vat:
                type: number
                example: 23
              return_value:
                type: number
                example: 89.99
              value_returned:
                type: number
                example: 0.00

    complaint_request:
      type: object
      required:
        - buyer_address
        - shipment_address
      properties:
        complaint_number:
          type: string
          description: Własny numer reklamacji. Jeśli nie zostanie podany, system wygeneruje go automatycznie.
          example: "RMA108072026"
        date:
          type: string
          description: Data zgłoszenia (Y-m-d H:i:s). W przypadku braku, zostanie użyta data bieżąca.
          example: "2026-08-07 10:30:15"
        status_id:
          type: integer
          description: ID statusu reklamacji
          example: 1
        order_number:
          type: string
          description: Numer powiązanego zamówienia
          example: "123456"
        shipment:
          type: string
          example: "InPost"
        topic:
          type: string
          example: "Uszkodzenie podczas transportu"
        product:
          type: string
          example: "Koszulka sportowa męska"
        user_email:
          type: string
          example: "klient@example.com"
        bankaccount:
          type: string
          example: "PL12345678901234567890123456"
        description:
          type: string
          example: "Zamek błyskawiczny nie zapina się."
        accept_date:
          type: string
          example: "2026-08-08"
        buyer_address:
          $ref: '#/components/schemas/complaint_address_payload'
        company:
          type: string
          nullable: true
          example: "Firma Sp. z o.o."
        source_id:
          type: integer
          example: 1
        refund_value:
          type: number
          example: 89.99
        refund_date:
          type: string
          example: "2026-08-09"
        refund_currency:
          type: string
          example: "PLN"
        payment_id:
          type: integer
          example: 3
        tracking_number:
          type: string
          example: "603236276201506110294169"
        weight:
          type: number
          example: 0.35
        term:
          type: string
          example: "14 dni"
        close_date:
          type: string
          example: "2026-08-21"
        delivery_date:
          type: string
          example: "2026-08-07"
        shipment_address:
          $ref: '#/components/schemas/complaint_address_payload'
        additional_tracking_numbers:
          type: string
          example: "603236276201506110294170, 603236276201506110294171"
        allegro_order_id:
          type: string
          example: "9f8a32b1-1234-5678-abcd-09876543210f"
        completed:
          type: integer
          description: Status kompletności (0 lub 1)
          example: 1

    complaint_address_payload:
      type: object
      required:
        - name
        - surname
        - city
        - postcode
      properties:
        name:
          type: string
          example: "Jan"
        surname:
          type: string
          example: "Kowalski"
        company:
          type: string
          nullable: true
          example: "Firma Sp. z o.o."
        nip:
          type: string
          nullable: true
          example: "1234567890"
        city:
          type: string
          example: "Warszawa"
        street:
          type: string
          example: "Kolejowa"
        home_number:
          type: string
          example: "12"
        flat_number:
          type: string
          nullable: true
          example: "4"
        description:
          type: string
          nullable: true
          example: "Wejście od ulicy"
        postcode:
          type: string
          example: "00-001"
        phone:
          type: string
          example: "123456789"
        country:
          type: string
          description: Kod ISO-3 kraju przeznaczony do mapowania na ID (np. POL)
          example: "POL"

    complaint_response_success:
      type: object
      properties:
        id:
          type: integer
          example: 15
        complaint_number:
          type: string
          example: "RMA108072026"
    correct_details:
      description: Szczegóły faktury korygującej
      properties:
        bdo_number:
          description: Numer BDO
          example: '09175912365'
          type: string
        buyer:
          description: Dane nabywcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            email:
              description: Adres e-mail
              example: test@sellasist.pl
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            phone:
              description: Numer telefonu
              example: '123456789'
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        currency:
          description: Waluta w formacie ISO 3
          example: PLN
          type: string
        exchange:
          description: Kurs wymiany
          example: '4.376700'
          type: number
        exchange_date:
          description: Data kursu
          example: '2026-07-20'
          type: string
        id:
          description: Identyfikator faktury korygującej
          example: 2
          type: integer
        invoice_id:
          description: Identyfikator korygowanej faktury
          example: 123
          type: integer
        issue_date:
          description: Data wystawienia faktury korygującej
          example: '2026-07-20'
          type: string
        lines:
          description: Pozycje na fakturze
          items:
            properties:
              discount:
                description: Rabat
                example: 15
                type: integer
              id:
                description: Identyfikator pozycji
                example: 1
                type: integer
              name:
                description: Nazwa pozycji
                example: Szafka
                type: string
              price_gross:
                description: Cena jednostkowa brutto
                example: 12.3
                type: number
              price_net:
                description: Cena jednostkowa netto
                example: 10
                type: number
              quantity:
                description: Ilość sztuk
                example: 3
                type: integer
              vat:
                description: Stawka VAT
                example: 23
                type: integer
            type: object
          type: array
        number:
          description: Numer faktury
          example: KO/1/1
          type: string
        order_id:
          description: Identyfikator zamówienia w Sellasist
          example: 123
          type: integer
        package_number:
          description: Numer listu przewozowego
          example: A201297929
          type: string
        payment_method:
          description: Forma płatności
          example: Przelew
          type: string
        sale_date:
          description: Data sprzedaży
          example: '2026-07-20'
          type: string
        seller:
          description: Dane sprzedawcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            bank_name:
              description: Nazwa banku
              example: Alior
              type: string
            bank_number:
              description: Numer konta bankowego
              example: 0000 0000 0000 0000 0000 0000
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        series_id:
          description: Identyfikator serii
          example: 1
          type: integer
        total:
          description: Wartość faktury
          example: 39.99
          type: number
      title: CorrectDetails
      type: object
    correct_line_request:
      description: Struktura pozycji na fakturze
      properties:
        correct_id:
          description: Identyfikator korekty
          example: 1
          type: integer
        discount:
          description: Rabat
          example: 15
          type: integer
        name:
          description: Nazwa pozycji
          example: Szafka
          type: string
        price_gross:
          description: Cena jednostkowa brutto
          example: 12.3
          type: number
        price_net:
          description: Cena jednostkowa netto
          example: 10
          type: number
        quantity:
          description: Ilość sztuk
          example: 3
          type: integer
        vat:
          description: Stawka VAT
          example: 23
          type: integer
      title: CorrectLineRequest
      type: object
    correct_receipt_details:
      description: Szczegóły paragonu korygującego
      properties:
        bdo_number:
          description: Numer BDO
          example: '09175912365'
          type: string
        buyer:
          description: Dane nabywcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            email:
              description: Adres e-mail
              example: test@sellasist.pl
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            phone:
              description: Numer telefonu
              example: '123456789'
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        currency:
          description: Waluta w formacie ISO 3
          example: PLN
          type: string
        exchange:
          description: Kurs wymiany
          example: '4.376700'
          type: number
        exchange_date:
          description: Data kursu
          example: '2026-07-20'
          type: string
        id:
          description: Identyfikator paragonu korygującego
          example: 2
          type: integer
        issue_date:
          description: Data wystawienia paragonu korygującego
          example: '2026-07-20'
          type: string
        lines:
          description: Pozycje na paragonie
          items:
            properties:
              discount:
                description: Rabat
                example: 15
                type: integer
              id:
                description: Identyfikator pozycji
                example: 1
                type: integer
              name:
                description: Nazwa pozycji
                example: Szafka
                type: string
              price_gross:
                description: Cena jednostkowa brutto
                example: 12.3
                type: number
              price_net:
                description: Cena jednostkowa netto
                example: 10
                type: number
              quantity:
                description: Ilość sztuk
                example: 3
                type: integer
              vat:
                description: Stawka VAT
                example: 23
                type: integer
            type: object
          type: array
        order_id:
          description: Identyfikator zamówienia w Sellasist
          example: 123
          type: integer
        package_number:
          description: Numer listu przewozowego
          example: A201297929
          type: string
        payment_method:
          description: Forma płatności
          example: Przelew
          type: string
        receipt_correct_number:
          description: Numer paragonu korygującego
          example: 1/1/2024
          type: string
        receipt_id:
          description: Identyfikator korygowanego paragonu
          example: 123
          type: integer
        receipt_number:
          description: Numer paragonu
          example: 1/1/2024
          type: string
        sale_date:
          description: Data sprzedaży
          example: '2026-07-20'
          type: string
        seller:
          description: Dane sprzedawcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            bank_name:
              description: Nazwa banku
              example: Alior
              type: string
            bank_number:
              description: Numer konta bankowego
              example: 0000 0000 0000 0000 0000 0000
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        series_id:
          description: Identyfikator serii
          example: 1
          type: integer
        total:
          description: Wartość korekty paragonu
          example: 39.99
          type: number
      title: CorrectReceiptDetails
      type: object
    correct_receipt_request:
      description: Struktura paragonu korygującego
      properties:
        bdo_number:
          description: Numer BDO
          example: '09175912365'
          type: string
        buyer:
          description: Dane nabywcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            email:
              description: Adres e-mail
              example: test@sellasist.pl
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            phone:
              description: Numer telefonu
              example: '123456789'
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        currency:
          description: Waluta w formacie ISO 3
          example: PLN
          type: string
        issue_date:
          description: Data wystawienia paragonu korygującego
          example: '2026-07-20'
          type: string
        lines:
          description: Pozycje na paragonie
          items:
            properties:
              discount:
                description: Rabat
                example: 15
                type: integer
              name:
                description: Nazwa pozycji
                example: Szafka
                type: string
              price_gross:
                description: Cena jednostkowa brutto
                example: 12.3
                type: number
              price_net:
                description: Cena jednostkowa netto
                example: 10
                type: number
              quantity:
                description: Ilość sztuk
                example: 3
                type: integer
              vat:
                description: Stawka VAT
                example: 23
                type: integer
            type: object
          type: array
        number:
          description: Numer paragonu korygującego
          example: KO/1/1
          type: string
        order_id:
          description: Identyfikator zamówienia w Sellasist
          example: 123
          type: integer
        package_number:
          description: Numer listu przewozowego
          example: A201297929
          type: string
        payment_method:
          description: Forma płatności
          example: Przelew
          type: string
        receipt_id:
          description: Identyfikator korygowanego paragonu
          example: 123
          type: integer
        sale_date:
          description: Data sprzedaży
          example: '2026-07-20'
          type: string
        seller:
          description: Dane sprzedawcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            bank_name:
              description: Nazwa banku
              example: Alior
              type: string
            bank_number:
              description: Numer konta bankowego
              example: 0000 0000 0000 0000 0000 0000
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        total:
          description: Wartość korygowanego paragonu
          example: 39.99
          type: number
      title: CorrectReceiptRequest
      type: object
    correct_request:
      description: Struktura faktury korygującej
      properties:
        bdo_number:
          description: Numer BDO
          example: '09175912365'
          type: string
        buyer:
          description: Dane nabywcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            email:
              description: Adres e-mail
              example: test@sellasist.pl
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            phone:
              description: Numer telefonu
              example: '123456789'
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        currency:
          description: Waluta w formacie ISO 3
          example: PLN
          type: string
        invoice_id:
          description: Identyfikator korygowanej faktury
          example: 123
          type: integer
        issue_date:
          description: Data wystawienia faktury korygującej
          example: '2026-07-20'
          type: string
        lines:
          description: Pozycje na fakturze
          items:
            properties:
              discount:
                description: Rabat
                example: 15
                type: integer
              name:
                description: Nazwa pozycji
                example: Szafka
                type: string
              price_gross:
                description: Cena jednostkowa brutto
                example: 12.3
                type: number
              price_net:
                description: Cena jednostkowa netto
                example: 10
                type: number
              quantity:
                description: Ilość sztuk
                example: 3
                type: integer
              vat:
                description: Stawka VAT
                example: 23
                type: integer
            type: object
          type: array
        number:
          description: Numer faktury korygującej
          example: KO/1/1
          type: string
        order_id:
          description: Identyfikator zamówienia w Sellasist
          example: 123
          type: integer
        package_number:
          description: Numer listu przewozowego
          example: A201297929
          type: string
        payment_method:
          description: Forma płatności
          example: Przelew
          type: string
        sale_date:
          description: Data sprzedaży
          example: '2026-07-20'
          type: string
        seller:
          description: Dane sprzedawcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            bank_name:
              description: Nazwa banku
              example: Alior
              type: string
            bank_number:
              description: Numer konta bankowego
              example: 0000 0000 0000 0000 0000 0000
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        total:
          description: Wartość faktury
          example: 39.99
          type: number
      title: CorrectRequest
      type: object
    correctreceipts_list:
      description: Lista paragonów korygujących
      items:
        properties:
          date:
            description: Data wystawienia faktury korygującej
            example: '2026-07-20'
            type: string
          id:
            description: Identyfikator faktury korygującej
            example: 2
            type: integer
          receipt_correct_number:
            description: Numer paragonu korygującego
            example: KO/1/1/2024
            type: string
          receipt_number:
            description: Numer paragonu
            example: 1/1/2024
            type: string
        type: object
      title: CorrectReceiptsList
      type: array
    corrects_list:
      description: Lista faktur korygujących
      items:
        properties:
          date:
            description: Data wystawienia faktury korygującej
            example: '2026-06-11'
            type: string
          id:
            description: Identyfikator faktury korygującej
            example: 2
            type: integer
          number:
            description: Numer faktury korygującej
            example: KO/1/1
            type: string
        type: object
      title: CorrectsList
      type: array
    country_data:
      properties:
        code:
          description: Kod Alpha-2 kraju
          example: PL
          type: string
        id:
          description: Identyfikator kraju w Sellasist
          example: 170
          type: integer
        name:
          description: Nazwa kraju
          example: Poland
          type: string
      title: CountryData
      type: object
    create_image_request:
      description: Struktura obrazu
      properties:
        alt:
          description: Tekst alternatywny
          example: alternatywny tekst obrazu produktowego 1
          type: string
        image_content:
          description: Obrazek w formacie png lub jpg zakodowany w base64
          example: data:image/png;base64,.......................
          type: string
        order:
          description: Kolejność wyświetlania zdjęć w danym produkcie
          example: 1
          type: integer
        product_id:
          description: Identyfikator produktu
          example: 1
          type: integer
        title:
          description: Nazwa produktu
          example: Obrazek produktu 1
          type: string
      title: CreateImageRequest
      type: object
    descriptions:
      properties:
        content:
          description: Zawartość
          example: >-
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam
            vulputate condimentum mi eu bibendum. Orci varius natoque penatibus
            et magnis dis parturient montes, nascetur ridiculus mus.
          type: string
        datacell_id:
          description: Identyfikator komórki
          example: 21
          type: integer
      title: Komórki opisu
      type: object
    images_for_product_schema:
      description: Struktura obrazu
      properties:
        creation_date:
          description: Data utworzenia obrazu
          example: YYYY-MM-DD HH:ii:ss
          type: string
        element_id:
          description: Id elementu (dla celów API są to tylko produkty czyli id produktu)
          example: 1
          type: integer
        id:
          description: Id obrazu
          example: 1
          type: integer
        image:
          properties:
            category:
              example: 0
              type: integer
            custom_image:
              example: ''
              type: string
            custom_path:
              example: ''
              type: string
            date:
              example: YYYY-MM-DD HH:ii:ss
              type: string
            file:
              example: asduhasuid2.png
              type: string
            ftp_file:
              example: 0
              type: integer
            gallery:
              example: 0
              type: integer
            gallery_position:
              example: 0
              type: integer
            gallery_token:
              example: ''
              type: string
            id_image:
              example: 1
              type: integer
            id_user:
              example: 1
              type: integer
            image_md5:
              example: 0accac5f4bee25305fa681d5e8a59bba
              type: string
            name:
              example: koszulka.png
              type: string
            size_gallery:
              example: 1
              type: integer
            size_gallery_n:
              example: 1
              type: integer
            size_normal:
              example: 0.89
              type: float
            size_thumb:
              example: 0.039
              type: float
            watermark:
              example: 0
              type: integer
          type: object
        original_url:
          description: Link do obrazu w usłudze fotolister
          example: https://url.pl/image.png
          type: string
        thumb_url:
          description: Link do miniaturki obrazu w usłudze fotolister
          example: https://url.pl/image.png
          type: string
      title: ImagesForProductSchema
      type: object
    invoice_details:
      description: Szczegóły faktury
      properties:
        bdo_number:
          description: Numer BDO
          example: '09175912365'
          type: string
        buyer:
          description: Dane nabywcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 3
              example: POL
              type: string
            email:
              description: Adres e-mail
              example: test@sellasist.pl
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            phone:
              description: Numer telefonu
              example: '123456789'
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        currency:
          description: Waluta w formacie ISO 3
          example: PLN
          type: string
        exchange:
          description: Kurs wymiany
          example: '4.376700'
          type: number
        exchange_date:
          description: Data kursu
          example: '2026-07-20'
          type: string
        id:
          description: Identyfikator faktury
          example: 2
          type: integer
        issue_date:
          description: Data wystawienia faktury
          example: '2026-07-20'
          type: string
        lines:
          description: Pozycje na fakturze
          items:
            properties:
              cart_id:
                description: Identyfikator koszyka w zamówieniu Sellasist
                example: 55
                type: integer
              discount:
                description: Rabat
                example: 15
                type: integer
              id:
                description: Identyfikator pozycji
                example: 1
                type: integer
              name:
                description: Nazwa pozycji
                example: Szafka
                type: string
              price_buy:
                description: Cena zakupu produktu
                example: 55
                type: integer
              price_gross:
                description: Cena jednostkowa brutto
                example: 12.3
                type: number
              price_net:
                description: Cena jednostkowa netto
                example: 10
                type: number
              product_id:
                description: Identyfikator produktu w Sellasist
                example: 123
                type: integer
              quantity:
                description: Ilość sztuk
                example: 3
                type: integer
              vat:
                description: Stawka VAT
                example: 23
                type: integer
            type: object
          type: array
        number:
          description: Numer faktury
          example: FV/1/1
          type: string
        order_id:
          description: Identyfikator zamówienia w Sellasist
          example: 123
          type: integer
        package_number:
          description: Numer listu przewozowego
          example: A201297929
          type: string
        paid:
          description: Wartość dokonanej już wpłaty
          example: 20.19
          type: number
        payment_method:
          description: Forma płatności
          example: Przelew
          type: string
        sale_date:
          description: Data sprzedaży
          example: '2026-07-20'
          type: string
        seller:
          description: Dane sprzedawcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            bank_name:
              description: Nazwa banku
              example: Alior
              type: string
            bank_number:
              description: Numer konta bankowego
              example: 0000 0000 0000 0000 0000 0000
              type: string
            bic:
              description: BIC
              example: ALBPPLPW
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 3
              example: POL
              type: string
            iban:
              description: IBAN
              example: PL 0000 0000 0000 0000 0000 0000
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        series_id:
          description: Identyfikator serii
          example: 1
          type: integer
        total:
          description: Wartość faktury
          example: 39.99
          type: number
      title: InvoiceDetails
      type: object
    invoice_line_request:
      description: Struktura pozycji na fakturze
      properties:
        cart_id:
          description: Identyfikator koszyka w zamówieniu Sellasist
          example: 55
          type: integer
        discount:
          description: Rabat
          example: 15
          type: integer
        invoice_id:
          description: Identyfikator faktury
          example: 1
          type: integer
        name:
          description: Nazwa pozycji
          example: Szafka
          type: string
        price_gross:
          description: Cena jednostkowa brutto
          example: 12.3
          type: number
        price_net:
          description: Cena jednostkowa netto
          example: 10
          type: number
        product_id:
          description: Identyfikator produktu w Sellasist
          example: 123
          type: integer
        quantity:
          description: Ilość sztuk
          example: 3
          type: integer
        vat:
          description: Stawka VAT
          example: 23
          type: integer
      title: InvoiceLineRequest
      type: object
    invoice_request:
      description: Struktura faktury
      properties:
        bdo_number:
          description: Numer BDO
          example: '09175912365'
          type: string
        buyer:
          description: Dane nabywcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            email:
              description: Adres e-mail
              example: test@sellasist.pl
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            phone:
              description: Numer telefonu
              example: '123456789'
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        currency:
          description: Waluta w formacie ISO 3
          example: PLN
          type: string
        issue_date:
          description: Data wystawienia faktury
          example: '2026-07-20'
          type: string
        lines:
          description: Pozycje na fakturze
          items:
            properties:
              cart_id:
                description: Identyfikator koszyka w zamówieniu Sellasist
                example: 55
                type: integer
              discount:
                description: Rabat
                example: 15
                type: integer
              name:
                description: Nazwa pozycji
                example: Szafka
                type: string
              price_gross:
                description: Cena jednostkowa brutto
                example: 12.3
                type: number
              price_net:
                description: Cena jednostkowa netto
                example: 10
                type: number
              product_id:
                description: Identyfikator produktu w Sellasist
                example: 123
                type: integer
              quantity:
                description: Ilość sztuk
                example: 3
                type: integer
              vat:
                description: Stawka VAT
                example: 23
                type: integer
            type: object
          type: array
        number:
          description: Numer faktury
          example: FV/1/1
          type: string
        order_id:
          description: Identyfikator zamówienia w Sellasist
          example: 123
          type: integer
        package_number:
          description: Numer listu przewozowego
          example: A201297929
          type: string
        paid:
          description: Wartość dokonanej już wpłaty
          example: 20.19
          type: number
        payment_method:
          description: Forma płatności
          example: Przelew
          type: string
        sale_date:
          description: Data sprzedaży
          example: '2026-07-20'
          type: string
        seller:
          description: Dane sprzedawcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            bank_name:
              description: Nazwa banku
              example: Alior
              type: string
            bank_number:
              description: Numer konta bankowego
              example: 0000 0000 0000 0000 0000 0000
              type: string
            bic:
              description: BIC
              example: ALBPPLPW
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            iban:
              description: IBAN
              example: PL 0000 0000 0000 0000 0000 0000
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        total:
          description: Wartość faktury
          example: 39.99
          type: number
      title: InvoiceRequest
      type: object
    invoices_list:
      description: Lista faktur
      items:
        properties:
          date:
            description: Data wystawienia faktury
            example: '2026-07-20'
            type: string
          id:
            description: Identyfikator faktury
            example: 2
            type: integer
          number:
            description: Numer faktury
            example: FV/1/1
            type: string
        type: object
      title: InvoicesList
      type: array
    order_line_request:
      description: Struktura pozycji na zamówieniu
      properties:
        additional_information:
          description: Dodatkowe informacje do produktu
          example: Dodatkowe informacje
          type: string
        name:
          description: Nazwa pozycji
          example: Szafka
          type: string
        order_id:
          description: Identyfikator zamówienia
          example: 1
          type: integer
        price:
          description: Cena
          example: 10.99
          type: number
        product_id:
          description: Identyfikator produktu
          example: 1
          type: integer
        quantity:
          description: Ilość sztuk
          example: 3
          type: integer
        selected_options:
          description: Wybrane opcje
          example: ''
          type: string
        variant_id:
          description: Identyfikator wariantu
          example: 3
          type: integer
        weight:
          description: Waga
          example: 5.35
          type: number
      title: OrderLineRequest
      type: object
    order_request:
      type: object
      example:
        id: "ORDER-99821"
        date: "2026-07-20 12:00:00"
        document_number: "FV/2026/07/12"
        language_id: 2
        invoice: 1
        comment: "Pilna wysyłka"
        payment_name: "PayU"
        shipment_name: "Paczkomat InPost"
        external_payload: "JSON_PAYLOAD_STRING"
        external_model: "AllegroCheckoutForm"
        external_account: "moje_konto_allegro"
        email: "klient@example.com"
        tracking_number: "603236276201506110294169"
        shipment_price: 12.99
        payment_tax: 0.00
        shop_id: 1
        payment_status: "paid"
        paid: 162.99
        shipment_id: 3
        payment_id: 5
        sum: 162.99
        readonly: 0
        important: 1
        deadline: "2026-07-23"
        currency: "PLN"
        status: 1
        bill_address:
          name: "Jan"
          surname: "Kowalski"
          street: "Długa"
          home_number: "15"
          flat_number: "3"
          description: "Domofon 3"
          postcode: "31-147"
          city: "Kraków"
          state: "Małopolskie"
          phone: "123456789"
          company_name: "Firma Sp. z o.o."
          company_nip: "1234567890"
          country:
            code: "PL"
        shipment_address:
          name: "Jan"
          surname: "Kowalski"
          street: "Długa"
          home_number: "15"
          flat_number: "3"
          description: "Dostarczyć do rąk własnych"
          postcode: "31-147"
          city: "Kraków"
          state: "Małopolskie"
          phone: "123456789"
          company_name: ""
          company_nip: ""
          country:
            code: "PL"
        pickup_point:
          code: "KRA12M"
          type: "inpost"
          address: "Kraków, ul. Długa 15"
        carts:
          - id: "CART-LINE-1"
            quantity: 1
            symbol: "TS-FIT-M"
            unit: "szt."
            catalog_number: "TSHIRT-FIT-M"
            ean: "5901234567890"
            product_id: 341
            variant_id: 7691
            tax: 23
            variants_options_text: "W3t0ZXh0OiAiY29sb3IiLCB2YWx1ZTogImJsYWNrIn1d"
            additional_information: "Rozmiar M, kolor czarny"
            name: "Koszulka sportowa męska"
            price: 150.00
            price_by: "sum"
            price_sum: 150.00
            weight: 0.25
            price_original_sum: 150.00
            stock_update: 1
            additional_fields:
              - field_id: 2
                field_value: "Tekst na nadruk"
        additional_fields:
          - field_id: 1
            field_value: "Wartość dodatkowego pola zamówienia"
      properties:
        id:
          type: string
          description: Zewnętrzny identyfikator zamówienia (order_import_id)
        date:
          type: string
          description: Data utworzenia zamówienia (Y-m-d H:i:s)
        document_number:
          type: string
          description: Numer powiązanego dokumentu zakupu/faktury
        language_id:
          type: integer
          description: ID języka zamówienia
        invoice:
          type: integer
          description: Czy wymagana faktura (0 lub 1)
        comment:
          type: string
          description: Uwagi kupującego do zamówienia
        payment_name:
          type: string
          description: Zewnętrzna nazwa metody płatności
        shipment_name:
          type: string
          description: Zewnętrzna nazwa sposobu wysyłki
        external_payload:
          type: string
          description: Pełne surowe dane integracji w formacie tekstowym/JSON
        external_model:
          type: string
          description: Techniczna nazwa modelu zewnętrznej integracji
        external_account:
          type: string
          description: Identyfikator konta zewnętrznego w panelu
        email:
          type: string
        tracking_number:
          type: string
          description: Numer listu przewozowego
        shipment_price:
          type: number
          description: Koszt dostawy
        payment_tax:
          type: number
          description: Dodatkowa prowizja doliczana do płatności (payment_price)
        shop_id:
          type: integer
          description: ID zintegrowanego sklepu w Sellasist
        payment_status:
          type: string
          enum: [ unpaid, paid, partial, excess ]
        paid:
          type: number
          description: Kwota rzeczywiście zapłacona przez klienta
        shipment_id:
          type: integer
          description: Wewnętrzne ID sposobu wysyłki
        payment_id:
          type: integer
          description: Wewnętrzne ID sposobu płatności
        sum:
          type: number
          description: Łączna kwota zamówienia (wraz z kosztami dostawy i prowizjami)
        readonly:
          type: integer
          description: Zablokowanie edycji zamówienia (0 lub 1)
        important:
          type: integer
          description: Flaga oznaczająca ważne zamówienie (0 lub 1)
        deadline:
          type: string
          description: Ostateczna data realizacji (Y-m-d)
        currency:
          type: string
          description: Trzyliterowy kod waluty (np. PLN)
        status:
          type: integer
          description: Wewnętrzne ID statusu, na jaki ma zostać ustawione zamówienie
        bill_address:
          $ref: '#/components/schemas/address_data_create'
        shipment_address:
          $ref: '#/components/schemas/address_data_create'
        pickup_point:
          type: object
          properties:
            code:
              type: string
            type:
              type: string
            address:
              type: string
        carts:
          type: array
          description: Lista pozycji w koszyku zamówienia
          items:
            type: object
            required:
              - quantity
              - price
              - name
            properties:
              id:
                type: string
                description: Zewnętrzny identyfikator linii koszyka
              quantity:
                type: integer
              symbol:
                type: string
              unit:
                type: string
              catalog_number:
                type: string
                description: Sprawdzany pod kątem wyszukania produktu, gdy aktywny jest flag api_orders_catalog_number
              ean:
                type: string
              product_id:
                type: integer
              variant_id:
                type: integer
              tax:
                type: number
              tax_rate:
                type: number
              variants_options_text:
                type: string
                description: Zserializowany base64 obiekt właściwości wariantów
              additional_information:
                type: string
              name:
                type: string
              price:
                type: number
              price_by:
                type: string
                enum: [ sum ]
              price_sum:
                type: number
              weight:
                type: number
              price_original_sum:
                type: number
              stock_update:
                type: integer
                description: "Czy dokonać aktualizacji stanu magazynowego (0 lub 1) - tylko przy mode_stock_control='no_documents'"
              additional_fields:
                type: array
                items:
                  type: object
                  properties:
                    field_id:
                      type: integer
                    field_value:
                      type: string
        additional_fields:
          type: array
          items:
            type: object
            properties:
              field_id:
                type: integer
              field_value:
                type: string
    order_request_update:
      type: object
      example:
        shipment_id: 3
        payment_id: 5
        document_number: "FV/2026/07/12-EDYCJA"
        invoice: 1
        language_id: 2
        email: "nowyadres@example.com"
        comment: "Komentarz zaktualizowany"
        payment_tax: 0.00
        shipment_price: 15.00
        shop_id: 1
        tracking_number: "603236276201506110294169"
        payment_status: "paid"
        paid: 165.00
        sum: 165.00
        currency: "PLN"
        readonly: 0
        important: 1
        deadline: "2026-07-24"
        status: 2
        send_status_to_external: true
        bill_address:
          name: "Jan"
          surname: "Nowak"
          street: "Krótka"
          home_number: "20"
          flat_number: "1"
          postcode: "31-147"
          city: "Kraków"
          state: "Małopolskie"
          phone: "987654321"
          company_name: "Nowa Firma S.A."
          company_nip: "9876543210"
          country:
            code: "PL"
        shipment_address:
          name: "Jan"
          surname: "Nowak"
          street: "Krótka"
          home_number: "20"
          flat_number: "1"
          postcode: "31-147"
          city: "Kraków"
          state: "Małopolskie"
          phone: "987654321"
          country:
            code: "PL"
        pickup_point:
          code: "KRA15P"
          type: "inpost"
          address: "Kraków, ul. Krótka 20"
        carts:
          - line_id: 552
            quantity: 1
            price_buy: 26.00
            price: 150.00
            tax_rate: 23
            weight: 0.25
            additional_information: "Zmiana koloru"
            additional_fields:
              - field_id: 2
                field_value: "Nowy tekst nadruku"
      properties:
        shipment_id:
          type: integer
        payment_id:
          type: integer
        document_number:
          type: string
        invoice:
          type: integer
        language_id:
          type: integer
        email:
          type: string
        comment:
          type: string
        payment_tax:
          type: number
        shipment_price:
          type: number
        shop_id:
          type: integer
        tracking_number:
          type: string
        payment_status:
          type: string
          enum: [ unpaid, paid, partial, excess ]
        paid:
          type: number
        sum:
          type: number
        currency:
          type: string
        readonly:
          type: integer
        important:
          type: integer
        deadline:
          type: string
        status:
          type: integer
          description: Wewnętrzne ID statusu. Zmiana wywoła metodę change_status() w zamówieniu
        send_status_to_external:
          type: boolean
          description: "Przesyła status zwrotny do zewnętrznego źródła zamówienia (np. Allegro, Amazon, Erli)"
        bill_address:
          $ref: '#/components/schemas/address_data_create'
        shipment_address:
          $ref: '#/components/schemas/address_data_create'
        pickup_point:
          type: object
          properties:
            code:
              type: string
            type:
              type: string
            address:
              type: string
        carts:
          type: array
          description: Lista aktualizowanych lub nowo dodawanych linii koszyka w zamówieniu
          items:
            type: object
            properties:
              line_id:
                type: integer
                description: Dokładne ID modyfikowanej linii koszyka w zamówieniu (cart.id)
              id:
                type: string
                description: Zewnętrzny identyfikator pozycji (external_id)
              unit_id:
                type: integer
              quantity:
                type: integer
              price_buy:
                type: number
                description: Cena zakupu netto (musi być numeryczna)
              catalog_number:
                type: string
              ean:
                type: string
              product_id:
                type: integer
              variant_id:
                type: integer
              symbol:
                type: string
              additional_information:
                type: string
              name:
                type: string
              price:
                type: number
              price_by:
                type: string
                enum: [ sum ]
              tax:
                type: number
              tax_rate:
                type: number
              weight:
                type: number
              price_sum:
                type: number
              price_original_sum:
                type: number
              stock_update:
                type: integer
              additional_fields:
                type: array
                items:
                  type: object
                  properties:
                    field_id:
                      type: integer
                    field_value:
                      type: string
    address_data_create:
      type: object
      required:
        - name
        - surname
        - postcode
        - city
      properties:
        name:
          type: string
          example: "Jan"
        surname:
          type: string
          example: "Kowalski"
        company_name:
          type: string
          nullable: true
          example: "Firma Sp. z o.o."
        company_nip:
          type: string
          nullable: true
          example: "1234567890"
        city:
          type: string
          example: "Warszawa"
        street:
          type: string
          example: "Testowa"
        home_number:
          type: string
          example: "14"
        flat_number:
          type: string
          nullable: true
          example: "3"
        description:
          type: string
          nullable: true
          example: "Wskazówki dla kuriera"
        postcode:
          type: string
          example: "00-001"
        state:
          type: string
          nullable: true
          example: "Mazowieckie"
        phone:
          type: string
          example: "123456789"
        country:
          type: object
          required:
            - code
          properties:
            code:
              type: string
              description: Dwuliterowy (ISO-2) lub trzyliterowy (ISO-3) kod państwa (np. PL, POL)
              example: "PL"
    order_response:
      properties:
        additional_fields:
          example:
            - field_id: 1
              field_name: pole_tekstowe
              field_value: wartość pola
            - field_id: 3
              field_name: checkbox
              field_value: tak
            - field_id: 3
              field_name: checkbox
              field_value: nie
            - field_id: 4
              field_name: Dodatkowe pliki
              field_value: base64
          type: array
        bill_address:
          $ref: '#/components/schemas/address_data'
        carts:
          items:
            $ref: '#/components/schemas/carts_response'
          type: array
        comment:
          description: Komentarz do zamówienia
          example: Przykładowy komentarz
          type: string
        date:
          description: Data złożenia zamówienia
          example: {}
          type: string
        deadline:
          description: Realizacja do
          example: '2026-07-20'
          type: date
        document_number:
          description: Numer dokumentu zakupu
          example: FV/2020/01
          type: string
        email:
          description: Adres e-mail klienta
          example: bok@sellasist.pl
          type: string
        external_data:
          properties:
            external_account:
              description: Identyfikator konta zewnętrznego w Sellasist
              example: 14
              type: integer
            external_id:
              description: Zewnętrzny identyfikator przedmiotu/aukcji
              example: '2909173'
              type: string
            external_login:
              description: Login kupującego w zewnętrznym portalu
              example: Testowy
              type: string
            external_payment_name:
              description: Nazwa sposobu płatności w portalu zewnętrznym
              example: COD
              type: string
            external_shipment_name:
              description: Nazwa sposobu wysyłi w portalu zewnętrznym
              example: Courier
              type: string
            external_site:
              description: Strona (Ebay)
              example: DE
              type: string
            external_type:
              description: Rodzaj źródła zewnętrznego
              example: sellingo
              type: string
            external_user_id:
              description: Identyfikator kupującego w zewnętrznym portalu
              example: 29132
              type: integer
          type: object
        id:
          description: Identyfikator zamówienia
          example: 10
          type: integer
        important:
          description: Ważne zamówienie
          example: true
          type: bool
        invoice:
          description: Faktura (0/1)
          example: 1
          type: integer
        payment:
          properties:
            cod:
              description: Oznaczenie czy płatność jest pobraniem
              example: false
              type: bool
            currency:
              description: Waluta płatności
              example: Przelew zwykły
              type: string
            id:
              description: Identyfikator sposobu płatności
              example: 3
              type: integer
            name:
              description: Nazwa sposobu płatności
              example: Przelew zwykły
              type: string
            paid:
              description: Kwota zrealizowanej płatności
              example: 12.34
              type: number
            paid_date:
              description: Czas zrealizowanej płatności
              example: '2026-07-20 12:12:12'
              type: string
            status:
              description: Status płatności (unpaid/paid/partial/excess/returned)
              example: paid
              type: string
            tax:
              description: Dodatkowa opłata za płatność
              example: 1.23
              type: number
          type: object
        payments:
          example:
            - amount: 129.99
              currency: PLN
              date: '2026-07-20 00:00:00'
              name: Płatności Allegro (Przelewy24)
              payment_data: identyfikator płatności w serwisie zewnętrznym
              payment_id: 1
              status: 1
          items:
            $ref: '#/components/schemas/payments_response'
          type: array
        pickup_point:
          properties:
            address:
              description: Adres punktu odbioru
              example: 00-511 Warszawa, Nowogrodzka 27
              type: string
            code:
              description: Identyfikator punktu odbioru
              example: WAW201M
              type: string
            type:
              description: Typ punktu odbioru
              example: inpost
              type: string
          type: object
        placeholder:
          description: Zamówienie w trakcie składania
          example: 0
          type: integer
        shipment:
          properties:
            id:
              description: Identyfikator sposobu dotawy
              example: 3
              type: integer
            name:
              description: Nazwa sposobu dostawy
              example: Odbiór osobisty
              type: string
            total:
              description: Koszt dostawy
              example: 15
              type: number
          type: object
        shipment_address:
          $ref: '#/components/schemas/address_data'
        shipments:
          example:
            - ordershipment_id: 121
              ordershipment_uuid: 9de16960-e372-5666-9ab9-3c9122636298
              service: INPOST - Paczka kurierska
              tracking_number: '603236276201506110294169'
              tracking_numbers:
                deliveryStatusExternal: null
                deliveryStatusExternalDescription: null
                deliveryStatusInternal: pending
                deliveryStatusUpdatedAt: null
                trackingNumber: '604607799530552119377241'
          items:
            $ref: '#/components/schemas/shipments_response'
          type: array
        shop:
          description: Nazwa sklepu
          example: sellingo.pl
          type: string
        source:
          description: Źródło
          example: ''
          type: string
        status:
          properties:
            id:
              description: Identyfikator statusu
              example: 1
              type: integer
            name:
              description: Nazwa statusu
              example: Nowe
              type: string
          type: object
        total:
          description: Wartość całkowita zamówienia
          example: 247.15
          type: number
        tracking_number:
          description: Numer trackingowy
          example: '20238098098432'
          type: string
        tracking_numbers:
          properties:
            deliveryStatusExternal:
              nullable: true
              type: string
            deliveryStatusInternal:
              type: string
            trackingNumber:
              type: string
          type: array
      title: OrderResponse
      type: object
    orders_bulk:
      properties:
        lines:
          example:
            - line: 1
              order_id: 341
              status: success
            - line: 2
              message: item_not_found
              order_id: 333
              status: error
            - line: 3
              order_id: 212
              status: success
          type: array
        status:
          example: SUCCESS
          type: string
      title: OrderData
      type: object
    orders_bulk_request:
      example:
        - order_id: 341
          status_id: 4
        - order_id: 333
          status_id: 4
        - order_id: 212
          status_id: 4
      items:
        type: object
      title: OrderData
      type: array
    orders_fields_request:
      description: Struktura dodatkowego pola
      properties:
        file_type:
          description: Rozszerzenia pliku (image/document - Tylko dla typu files)
          example: image
          type: string
        max:
          description: Maksymalna wartość pola (Tylko dla typu number)
          example: 5
          type: number
        min:
          description: Minimalna wartość pola (Tylko dla typu number)
          example: 0.01
          type: number
        name:
          description: Nazwa pola
          example: dodatkowe_pole
          type: string
        option_type:
          description: Wielokrotność wyboru (one/multiple - Tylko dla typu option)
          example: multiple
          type: string
        type:
          description: Typ pola (text/number/files/option/checkbox)
          example: option
          type: string
        values:
          description: Wartości (Tylko dla typów option i checkbox)
          example:
            - title: Tak
            - title: Nie
          type: array
      title: OrderFieldsRequest
      type: object
    orders_fields_response:
      properties:
        file_type:
          description: Rozszerzenia pliku (image/document - Tylko dla typu files)
          example: image
          type: string
        max:
          description: Maksymalna wartość pola (Tylko dla typu number)
          example: 5
          type: number
        min:
          description: Minimalna wartość pola (Tylko dla typu number)
          example: 0.01
          type: number
        name:
          description: Nazwa pola
          example: dodatkowe_pole
          type: string
        option_type:
          description: Wielokrotność wyboru (one/multiple - Tylko dla typu option)
          example: multiple
          type: string
        type:
          description: Typ pola (text/number/files/option/checkbox)
          example: option
          type: string
        values:
          description: Wartości (Tylko dla typów option i checkbox)
          example:
            - title: Tak
            - title: Nie
          type: array
      title: OrdersFieldsResponse
      type: object
    orders_search:
      type: object
      properties:
        creation_date_from:
          type: string
          example: "2026-07-01 00:00:00"
          description: "Data utworzenia od (w formacie YYYY-MM-DD HH:MM:SS)"
        creation_date_to:
          type: string
          example: "2026-07-29 23:59:59"
          description: "Data utworzenia do (w formacie YYYY-MM-DD HH:MM:SS)"
        status:
          type: integer
          example: 1
          description: "Identyfikator statusu zamówienia"
      title: OrderSearchRequest
    OrderSearchItem:
      type: object
      properties:
        id:
          type: integer
          description: "Identyfikator zamówienia"
          example: 1025
        date:
          type: string
          description: "Data złożenia zamówienia"
          example: "2026-07-29 08:45:00"
        status:
          type: object
          properties:
            id:
              type: integer
              description: "Identyfikator statusu"
              example: 1
            name:
              type: string
              description: "Nazwa statusu"
              example: "Nowe"
    ordershipment_request:
      description: Dane płatności
      properties:
        courier_number:
          description: numer zlecenia przyjazdu kuriera
          example: '23849592778'
          type: string
        created_at:
          description: Data dostarczenia
          example: '2026-07-20T11:46:29+01:00'
          type: string
        date:
          description: Data utworzenia
          example: '2026-07-20 15:20:07'
          type: string
        delivered_date:
          description: Data dostarczenia
          example: '2026-07-20 17:13:55'
          type: string
        file:
          description: PDF w postaci base64
          example: >-
            data:JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9UaXRsZSAoVGVzdCBwZGYpCi9Qcm9kdWNlciAoU2tpYS9QREYgbTExNCBHb29nbGUgRG9jcyBSZW5kZXJlcik+PgplbmRvYmoKMyAwIG9iago8PC9jYSAxCi9CTSAvTm9ybWFsPj4KZW5kb2JqCjUgMCBvYmoKPDwvRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDE4Nj4+IHN0cmVhbQp4nIWO0QrCMAxF3/MV+QG7pmmbFsQHQfc86R+oGwg+OP8fbFe2gTBNQhvuJYdLqHPvKD/BGrw+4QVK3KTOfxYJS19arMs4QNMyDm8ovkSLRIZxvEMP3RdBTJnM0JOUGXVZGccEzTkjrPKlBFMPtOZSVmIg4YipQHbEyoiw5YDphnutWQ6YHiCKjY/ecb6phg2TERQ5Ii1hMZxfLgIZt+qVdEq/M7FW0Wly/6M53khgZcuIc4QOPgMkU/gKZW5kc3RyZWFtCmVuZG9iagoyIDAgb2JqCjw8L1R5cGUgL1BhZ2UKL1Jlc291cmNlcyA8PC9Qcm9jU2V0IFsvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXQovRXh0R1N0YXRlIDw8L0czIDMgMCBSPj4KL0ZvbnQgPDwvRjQgNCAwIFI+Pj4+Ci9NZWRpYUJveCBbMCAwIDU5NiA4NDJdCi9Db250ZW50cyA1IDAgUgovU3RydWN0UGFyZW50cyAwCi9QYXJlbnQgNiAwIFI+PgplbmRvYmoKNiAwIG9iago8PC9UeXBlIC9QYWdlcwovQ291bnQgMQovS2lkcyBbMiAwIFJdPj4KZW5kb2JqCjcgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgNiAwIFI+PgplbmRvYmoKOCAwIG9iago8PC9MZW5ndGgxIDE4NDM2Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggOTEyND4+IHN0cmVhbQp4nO16CXhURdb2qbq3l3TS6dvZO+mkb9JJB9JhSwIEiKSzARqRHRMMkgCRsMkSQBhRwiguEYVBRUVH3MW9kyAG1CGuo7jAKOq4ASIqjoMgn6Ki5H5vVSckoPM9Pvzz/f/j/8y9OW+dqjp1qurUqVN1kxAjomiASn2Hl5YNY4NYPyIWRGnv4aNHjbu86C4rEf8W+RuGj5tQbPuLZTXq9yHfd9S4PjlLR2w5hPqbkK+eWDqyYvS6Wd8RDZhP5Lxp2tya+ex69hfUj0D9udOWLNLvdr/3FZH5I9D4i+bPmPv6ssoNRPa+yF88o6Z+PiVQGPQXQF6bMWfZRfsHP2cQ9cAYIuvqps9d+vyy76/DgO8ism6qq62Zvi/mZejjGuQH1KEgKjcsFe0xRkqvm7toqf44R/+m5SirnjNvWk3PizLmEilXor55bs3S+aYWewPqzkVev7hmbm18db+PYYx8lJXOn1e/yMii9eDniPr5C2vnZ7w7cjuRG/MJh15SyEqcnMQMA7ywZQUdpQL6M1lQrlEfmghtj0LWhLxC8jEyhc5fedDeMrT9PCrR6PgTx/+gyZJTngpZEtGR49AaajcQL6PhdDZwHF6Gfs+XsoJs1BuvqWZhzVTSpy1bOIf0GQtrZ5NeVzt1IelzahZdTHrXGMjk2nDfBTtnTHEUfGdNssriez7NzBLpa6OHbDn+xIkZGlnFKMK6jZBLexDFdFgiBj6VL3sXNuI0ni6i+bQIliLw08HXG4bxaeg9ZaaKcg1bi7lZTRtMuRhSUihV/kYX8SiriYebVS4elU6z0MhR542iALQvMr3dPoblWoay5oBYHPSp+kxPi1XEqEI2KaYqUqQ1skPWkHYQoxZrZECKd+NZNx5DmV27ELLdsWMsQo5jxkxSpGzFyU1xUt9AuUJnGx+CH2Ek00SQeGL/r77r/+eX3c8fVqb+8lUvFK95hSVPjtlCk8RKq9ivNIsaOngGyy7p4DnmX9fBK1iXHh282k3GRImQCvFmcERFtJBmUg3NoZFYyYlUi3w9SuaR8NL+8OR+1Bf1I2XJPFpEy+BLtag7m+aifAZkLwbq1AvUpU2nsZCaQYvB16D01FyX3EOQzEEP/fDqGEGd1P3L3kqQWwheYA3KQyPsLfuc09HfTPRQh7r6jt7r5WyWAKdTb/Mvtvf/P4/6KSz4f9K+noaByvkgiv6N8lef5IkK0S7dtI1coETTg+RSfThZyPgCdFCk7TONg6JepPwfaNTaQUSb6DE2kx6j7fQ8O4JWT9BW2kyvUDyV0h20nG5CT2b4/it0LdZ0LDy4lG5iLmMzov3d8OS76Q3Ink+X0zaKYwnGl7SCVilvo9UqslMavGM0POV6dq6xGBFor3oFosK58Jz5rMGoMG4w1hn30f20VXnFOEHh2B3T8L5hfG36u/ERPLqKbqbbaC9bF/YkdtT52HdblT/DpzYok1VmzDCOYwSpdAnGoMJn32Bt3A/ttfQFS2DLlRJoudcIGi9Cyk2T4ZsbaBvrz4bzVFOVMdJ4A3GqFy2F1tuombbgbaVn6QMWYTpi3GccIRdlY5etgD3eZG1K+4mV7YWwmAlW6kmDUDOP/kJ/pV3My57j80wRphxTwPQHYzeiYz+agNE+iJafs+/55XhXKC+rw4xi7PlV9CdhbXqJPmGJrA8bxSbynnwev1NZiCiaLXfidOyla+lWaN/D/GwLj+A7lXvVR9SfzMnt+4xIrIiPbse5+xyzY6Y6q2d/ZO+yT3kJn8Jv5/uVm9SH1LcsNZj1hYgS19Mj9D2LYvlsDLuA1bHl7Gr2J3Ybe4PtYgd5ER/PZ/PDSp2yQHlWLcY7Tq1XrzBdZbrOfLC9ov3F9r+1f2/kGFfRGPjDSoz+ZroTM9tKO+l9vHtpPzOxcBaJV2epbAK7FO/luAvdwzaxh9hm9LKL7WdfsqPsO/aTOBy5mSfxVJ6G18sX8kv4TfwOvhPvLv5P/qMSr6QpfqW/UqBUKvMwqquVtXifVD5RE9WdqgE755jWmzaaNpkeMT1vOmKOsPzRStbXf773RNaJPe3Ufk37+vbm9s3GJ4j+LviUmzy4pYxB3KpB7F6KqH8//PxtFgHbJbIsNpSdC8tMYbPYArYUlrySbWD3y7E/zp6Bld5jhzFmO3fLMffm/XkxH4X3Ql7LF/C1fB3fzN/lxxWLEq44lFglSxmuTFZqlUXKMmW9ElReVz5W9ivHlJ/xGqpN9ahpqk/1q8PVKepi9U71C/ULU5XpNdNnZpt5rvkqc6v5G8sAy1DLaMsYy2TLGssWy25rNbzzBXqSnuoeB9g+ZaVSpjxJN/Bc1cXf5G/Cn6fQdGUkh6fyTewafhnbzNNNS81D+BB2Hh1RfbD1y3wjP8aHKCNZORtHs3i/kDZzjPowkgL1BTqkPoO5vQnNS80R7HJ+2BxBzTjSB6HPl5S+ql95jT5Q9jKLejd9qNpYPDvEH1RGwwueVYeaKihVuYMeVxawy+hJXobrx0/W1fDj89jDiAvjWQ77QcENkp8HLxqofEpX0Gz+dzqEfXwN3cKmqzPoBsply+kLegC7oqfpYnOWOZa9ymeqjTyabSauPoTZDWLpTDHF0JVssrLBfJi/j9Ntp2qjPcqjGP1O/rgyUj1iGsvqsAMuo6togbGSlpkq1LfYDFLYRMpQ9yG6LVdy1FSkKxBVqhDTtmB3b0McKFJGoiQBnnMu/GICIsQGvLciTqjwoJnY4+cjir1Jm83jeSvNMEUyRB1E49fax9Ik4wG6zZhBFxvrqBfiwdXGcmjcRJ/RGtrEVrVfinM0BTtnDzvXNIzvNA0zevFG/j4fx9efur6wdgZLoH/gfRyZobjTNarv4cZbaKw23oF390CEvY2m0jl0ALP8Gj2MUNoot/083mQMU+ZjvntpjPGg4WE2qjPm0Ch6hu63mKjG4scaB9lbmO+lVMvHGouU2vaZsMMaWCEAay1G/Lk2UDJhfFGgcOhZBUMGD8of2D8vN6df3z69e2X7s3r2yPRlpHvTUnVPSrI7KdGVEB8XGxMd5dQckfaIcFuY1WI2qQpnlF3mHVatB33VQdXnHTGil8h7a1BQ062gOqijaNipMkG9Worpp0oGIHnRaZKBkGTgpCTT9AIq6JWtl3n14BulXr2VTRpTAf76Um+lHjwk+ZGSXyt5O/jUVDTQyxLqSvUgq9bLgsOW1DWWVZdCXVO4rcRbUmvrlU1NtnCw4eCC8d75TSx+KJMMjy8b3ITbsB2DCiZ6S8uCLm+pGEFQySirmR4cPaairDQpNbWyV3aQlUzzTg2Stzjo8EsRKpHdBM0lQYvsRp8pZkPX6U3ZbY2rWzWaWu2PmO6dXlNVEVRqKkUfTj/6LQ3G/+FAQlcWyqNKKq7uXpukNJYlzNRFtrHxaj1415iK7rWpAisroQNtecaw6sZh6Ho1jFg+TkdvfFVlRZCtQpe6mImYVWh+td4yUVI9Sw+GeYu9dY2zqrE0iY1BGrsstTkxMbDV2EeJZXrj+ApvarAwyVtZU+puiqHGsctaXAHddWpNr+wmzRkybFOko4OJsHdnak/WSU6KC6587EnLMjEi79lwiKA+TcdIKryYU76A2nxqnJYPMTyVDK2C07EiM4NhJdWN2mBRLtoHTRmaV2/8juAB3kP/PLWkpqPEnKF9R4IVfnLS1VDfyQf9/mBWlnARSwnWFGMcKvP9e2UvaeVe73xNRwLz0WjYtqZycB+YPzVVLPB1rQGaikywYUxFKK/T1KRmCvTxVwZ5tahp66yJnSBqGjprTjav9sKTN8sbd2zQ6jv549DiosvqBgdZ3P9QXRuqLx/nLR8zqUIva6zusG35+FNyofr8k3UdXDC6pEJJ4h0cT1JkLZyy6qSwyFREBNUM/JilU09vtVjhlbKE6cOCWvWIEFbaUlN/Y6NW44hoJZOuZh3DDA72n5ofckr+lOFFNCoYMI7K8vGTGhttp9TB1UIdnt2RwONpfEWqXhKkCdiZGfhpNdryBVUmBQMwWYkQgP+FijqypwgmdfCVeIR39soehkDX2DjMqw9rrG6saTUapnp1zdu4lT/Pn2+cX1bd6TitxrbrkoLDVlfCVnVsMDYFp+ImL7tmTFOAXTNuUsVWjUi/ZnxFM2e8pLq4sikddRVbdaKALOWiVBSKjC4yVM4wyWZulfJJWwNEDbJWlQUyP62VkSyzdpYxmtbKQ2VaZxlHmRoqC8gy8YgYUzK+orv3yC1Z2UseePhuoapwq/W3fTid/phPz5vV7nVmhSgiLOzMdFtOz1uU7nUiZ7fZ/nd0YxaO8PAz0336dK3WLpvAzCKnRUTQGT2n6w4LU7vXCd1Ou/3fpdt0uu7oyMgz0336dMPDuzwHZrahp1hN+zfpjjhFt+gpISrqzHSfPt1Iu6V7XQRySTExZ6b79Ok6HF26HVAPX0mOizsz3af/VkPTujY4+nUgpyck/Ht0O51dm9AJ9fCVVJfrzHTHnpaP6qYbS+iE7gy3+8x0x5/eV0yXbvQbhVyWrp+Z7sTT+4rv2oToNwY+2tvrPTPdp083MbHLK9Gv6CnH5zsz3Z7T+3J36Ua/LuQG9Ox5ZrpTT8unpDi6eOwb5AZnZ5+Z7vTT8rretZt07BvkSnJyzkz36dPNyOjy+AyiNOTK8/PPTHev0/JZWV0en0XkQ27c0KFnpjvvtHzv3l0bvDfUww+rysrOTPeg0/K5uUldPNTDD6eXl5+Z7tOnm5+f3MXDt+GHW2m80qPFl+DZ9YzSk/aBuNKz2Z/s2apkKsnNQzyBVsXbEhWb4yjqpei4G/WRqAPngZ4AbVfE32amKCko14ArQA2gJ0DbQbtAOCmAolYHzQNtBO0TNUqy4m7WPVpRpuJCWxfuWg4lng6DDJBCHmAf0CjQFNAa0EaQWcqJknmgFaDtoCOyJqDEN6/Lxdjjm6+TScusOTkyWxPKVk2W2ZbzK0PpyDGhtPTskNjgkFi/vFBx7+JQmpkdSqMychpEarPntBXFKXGYZBwGPh/I+IvkYAwB4C4lloIgrpg7SgJKVEu6L2fjdkUlpnCF0XTyGG0Ka7Y7c4ps3OCHEYw9/Gt+KFTDD7VEOnM2Fp3D99MToO0ghe/H+wn/hFbwfcLmwELQRtB20E7QYZCZ78O7F+8evocc/GPqAyoETQFtBG0HHQZZ+MdAjX8kvqMkCr4QxPlHQI1/iGl9CHTwD8B9wD/A0N5uHjgoZ6tk/H06GE9GBxOf1MFExeW08reaf+wJj/JhpeFRTytpcM1cJa05o5+nVUloLpjpaeWftuh+z11FffluCoI4RrIbPe8mHTQaVA2aDzKDexfcu9QAWgu6CxQEwcuAGkjnO0Cvg96lvqAAaDTIync1o5tWvrPZV+wpiuNv8r/iGPHwN/grMn2dvyzT1/hLMn0VaQrSHfzl5hQPFYWjntBGQ6oh7YN6E3+uJT3KYxQ5+XbYzgPsAyoEjQJNAa0Bmfl2ntY83RMFJU/TDlwUPLyZvpTpA3SPlQKzPAFfCRxQF+AbfBY4wEZ9o48HfOtvQ1aA74Z14AT4rlwNToDvDyvBCfDNWQJOgG/6LHACfJOmgBPgGzUeHKCV3/lUeqZn4KjZTC9y8EtgpUtgpUtgpUtI5ZeIl35Uxdhub87KgsU2BPw9szwN21jDM6xhLGu4hzXUsobLWcNK1lDAGi5kDX7W4GYNKawhwBqeZvkwRQMLbD4lOyiQwBp2sIbHWEM9a/CxhgzWkM4adDYw0MpTm8/OlUmZTFqKxKZDetZQRB8HT4VFU+HzqYgJ24E7QYbMBSCkp4WEXSkiTWvJKgzlew/OmVc0gr+Ahi9gGV6gvSAVC/QC3OgFKHkBChzAQtAUUBvoMMgAmSGdhoGvkegA9gEVgqaAVoAOg8xyOIdBnOZ1DPEJObA+HYMeJXL8BbziDwWpPDWQrLk1vzZCWeNmjhQ2KsVI4QNJ3kmjnFZnK7Nv+d7+w/d2CisK4zfwNZSMhVjbka5p/jHZ08pubfY97SmKZbdQigqvY4PIxzKQ5lO9zPcnt1WkeeTmjyDNaXZPRDNHsy/bs41FilZbPD+6D3i+dLdysAfdT3ve01tV1ux5ByWPbPHsdl/rebVPqxUlz/haGZJtuhTd6s73PLZDiq5ExYZmz+Ui2eK5zD3cM9stK2pDFRfWIxdweMb6JnlGQF+pe6onUA+dWzyF7gs9BSGp/qLNFk9fDMEfYrMw2J5u2ak3RSqcMLCV1QWyLestFZZRlgGWHEu2JdXisSRbkiwx1iirZo20RlhtVqvVbFWt3ErWmFZjX8Av/rYfY5b/lCG+oRmpktc4yT/tyz//c2bldA4Fo5VyXj6umJUH26ZR+VQ9eGyct5XZxkwKmrzFLBhVTuXji4P5/vJWizE2ONBfHrSMvqCiibEbKlEa5Ne0Mhpf0coMUbQqSfz+cisx5lx1fZJIe6y6vrKSEuKWFCYURg11DhpW+itQ3YH+rifhFD45uL58XEXw4eTKYI5gjOTK8uCN4hecW9lRdqSsdCv7RiSVFVuVoexo2VhRrgwtrawsb2UTpRzp7BvIwWO+kXJWHMxCjnRrSkhuQ0guA+0hly4SyIWFUYaUywgLk3IqE3JN9ellpU3p6VImXqd6KVMfr3eX2ZEBmYwMKRPXQDukzI64BiETHCpF3G6IpLilCEsktxRxs0QpMrFLpE+HyLUnRa6VPSmsS8YdkrHv65Sx74OM/7c+tcV+P2sZUjmtSvxyuNpbVguqDl63pC4h2DBV15umVXb81thXPXVanUhraoOV3trS4DRvqd40pOpXqqtE9RBvaRPui+MrmqoCtaXNQwJDyrw1pZUtw0fnDTylr2tP9pU3+leUjRbK8kRfwwf+SvVAUT1c9DVQ9DVQ9DU8MFz2RdLHR1c0Wam4sqQqlLbwcBv8tToptbI4Tps/VDrvkNSEy5O24bayicL9lcEIb3HQDhJVvYp6FYkq7ClRFSn+AtBRlXD5kNSkbWxTR5WGYqe3mPyLFtcvpoSymaWhn3o8KFq0WBg8hP76f/WgriwYqCmtX4SvhGDWuPJg4ZhJFU0WC0qrxZSCgzvLwsPLWo22UGFvFA4WhYpyUlCUFYiysLAOwV+u/+KOtETsggb+dAsLpLBFVF+pBFPKx3OEgvEdv2rdhruUOB7qKzHBeuZn9Z06Oobt91MoT2LOnbRocQfXYYtFHWmoJZrUd5rk5COM5T9psUVQKCIXiT/km8T/cFnwaehMdWYAxL8z/awrbT8HTPQT6WqbCHN9idRtpm2Q2xNwmXlERPEEi0SzJTwcvETWavy4WTAEJuAUnNkUYUe1RFT/tFkwqP4p4BSciaeoCif5Z7KwVl7foqtMReR+yqwz3kdhCvgnGRPfDa3GwUC4pvEJZHU4uNBxdHNEhGT2b7bbJfMzSsyCaUeJYKDRuuW2BL92LGSGyQXat6ATByZ/rhVoBVRYWHCioF9f1mUoGKB/amyqk0e3J6uN7Ukm+2OPHf8vBPthxkFlLyzgpGS2PbDcxlV7hj3PXmo39Y/p7z6fj7eNjRnnnsGnm2rDpsVUu9s8u03vRH/s+iz6s5jD8V+5Pkve5zE8cR6PP7EgriCxPHG+Z63H0pun23vHDeb97eW8zD4s5mz3+baJ9hn2z8xfxB1n30ZqLFaJDNcclOQOtzjJFutWwhNajR8wv+IJgnlKLEJCrrDP0aek7TOcjk4BMN9uFgJgjgYyRbUjQ9N2OZnmDDirnQ1O1RMID+cTPAFhQWeUsK8TjQJOYWOnOTISmCDrhIbw8HDzBGekpplF/mtpbWeosxATqBa9ORdFWUX3UREiFxUp+o1Kt2jSazRRs92y07LXYlhUj6UQJ7JiSRGjsCSIBbWkiP4sEaIvS4TQbEkUHVlcKXmjE/znad92rOUCv3/kITAnuvn55AUFmijTTvgLDsDLCw8VFghyDnJGDerXlyazBZNpQWp/szfN5+ufFzUgNycu3pnrZDFxuTkD+uf5vGlmJb/2xRXvLJ61+4rq9X1aTuiPLl5y/6ZLl9591Z2rf7p3I1MaxxTxyOPDeNTrO557+YPXXxT/7VduHFRT1KEUC++4MxDvIXcsn6BMNk0OmxBeq8w2zQurDbfGthoHOk11IDBWcMlugZlR75uOxxxLVPtFDXb1cxdFjUwsco+JqnKNdddEzU2scS81L409xo8laBTHHPb4+NFx1XHz8fHodqzV7tK4pqlJbpuFtvGHiRltm8UyYre1BeRSaYyxm6Pdanh8q3FEukO82DxiVcD8sEUsSHzA3mp8JPeRXaysGBWYf8gltgtVYZlZeUE7syd6kGvJ8OWJ9KkUb15fD/PEYe8FqoSiuFzNKrrQ5Kpr0g+0dEsgPSuvc62lV4iVBerd1t0t1z1SrrtbrnicXH2s+8Bu645F9o8Ua34AZfCBYwtEmfQELPeJyagoPBQ1qM/kghMLChiWfZBYeTaZUONnCxayeDNWn5wa5eaQM8aSGieWnqX6MuXiX7gt++utX7YfZjEfvcMi2c8Hbc2rpq0+8QEfE5E/8drlD7GJ8fduZh6msAjWo31P+4+a/sS2OnbzVSV1D4hIGQ13aDC9TfGsZyAlJow5XH1cfV0B13zX7RF32B+yWxPtPexBV5tLdQmzBhI9eclWuxLhcNtYLPfHRKv45rdtjGExRrS0YXRAjZdMvDRmvDRffIaKz4J1TOz7tpZ++XkiDfjdnry1xFwBsXtdATt2L8XImNlDxsw0sZ8puyNaYj/LABojLE5isYW3gPl8s8MhmeNPyXh6b4LrGbaNUukYsxEulMe6bzi/HzEVsVTuukP+Q5NFUC1AWC08NMgJw5csC8RoTnOYxWw1c7MWFpVETrMjCYedP2vlSubHflyY6/T2z+2fN3AAtmO8RSxDbGxurNfZvHFjdOIVS86tSsrPGVu6c6eyYfWC2XnDzo/6s21Y9dTVP1+EnXd1+0w1FTsvilLY+sCiCK2XdpZWrqmFelDnHr1nhDc5JzYnuTh5vr5Wtw6OH5x0Tvw5SZXWCyKq4quSZllnR8zU5sbPTmrT3475OOHjxLdTDsQcSNmnG3qcV/Vr/tj+6mBtmHqONkn7LPyr5HYt3BmJjec2W5g5zh0ZTpGuzt3k6gy3LhEKPWK1XOm7bEyzBWzVtgabqstgq8tga4OdA+FiWWwJHfnj8kCzif0nlsQm1ImVsImzr79YCtsiFp3LczvCayiwhoJsBlEbY2vZXSzIjjDVwwrZKPio2JfJYtWZJjphmuiBaWIYTEZYSByT6y5F40R3LEJ0xaLE5mMuz/CBCaz77kOMXVgwUhM78NsD2omu0tAORLQtPOQc1BFtIUsLop25sWJp4+JiY7iIvJlOpVu8vfq+wevqrtk1a/HeSyet6e18YMnSRx5cVN/UPtP0bOOYMauNW+9t/+m6cwef+Em5740XX3vntR3viX1WiPO4CeveV2kKRIc2SIJEl8QenWuR2cn4OpmMTia9k/F2MmmdTGono4vTcIXg1LSYtMFh54SVpk9Mq01bHnZD2JXpD0Q/kv28Yg+LT0yI71ue/W68KYlP4FzLYbaEKmtVWJWtKrwqoso+yzorbJZtVvisiFn2zb7NmY5MX3pmes8B6ZNsleHTfdN7LPIuSm9Iv9F2R8S6Hrdk39z3PttDEfdm3tejxfeSL07ORaxGWifj7WTSO5mO+Zo7p2DunJS5c5o4bFqNPYGolEGTrJkZETY1UffFquG9kxNb+cOBNFe2vAi4Cl2jXFNcT7h2uswOl8c1z7XXpXpca1zc9SxiRSyimzxjAjFCXGMBxjW2i3FiGuPizGmJicuTZ48W6cxjrHdV8pxknuyOtahiGKKRKiKMcDnBBKKFy6nu3uGeRJaY7gpEJ+TliOb9ZQxLCKHwXVec8F2XLlq6dNHKpYlZueQpIWqx9tv4BWQxjm6Rl9L0LCh60j1oVxbLEn2K9mAObhZKJSPaZ4nIJ1SA+XaL0JKVKEeQihOvOqcthxfmNOTwHHGMppMcCmnyeqmHjM+lk8gZSW/xiLHp0gv1dIfcaw45docuhHEXOx7wiSE4IkX/DnnHcZjlPS1tL7FCGoW45urXcepNXjCyc++JHYaQ5D+08DwN159QHF4gzr6u3YlKHINICw8twCkot6sf+1QmOA3xg0MxPhSZA5m9UrymmGyfU4vSojXFnGbXkyishyWJmXoBUmKQTY30JlGa1x5h7WlLYj0yw2xmv5pEHi05ieHzRFykQyCv0Vn+lStXUrdgwSYvRIw/WSCEogfGhbZ/pi+zN++fN2BgKDwg9svgHxMfhzeFx8aIo9pX2Oy49tLlS/tn3PjybaOK8rP+NO6yZyc5gxH1M5fPiovrk3Tl9lsmznz5sp3vs7PcsxfWlp7lTcjIOXvlecOX9fD4R1w6I2Fs1diBXndytC09t2h51aSN5z8qIki6cZRnmW7DSe3ZShH4ZhArEN7awVg7GUsnY+5kbMLNvb68MOEl48A0uBixCLuNKRSnhfkdNpwMSrhDS6M0Zj8lWNtCwTqCGRZrWVhZtWW+pcGy1qKSRbfcZQla2iy7LGaLOAHEsW0JnQCSObpZhHFL6Lbdwchrkzg3hO+BOSIOFHBmeXsSDi4vUNv4LEpgA5ou6voQkiuD8H2oQATwAu3AtwXyrnyiQIRuZ26u9qq4M3WIZsSH7svimHYOdIqjOUasINcSzy2YOif7yitbnnwy2t8j5e6N2tDae/i01cwyp/361SduHJkt/gqrkMLEY1IUBAlGCaZ/hrfRD1aDrGQ12imMwowTZCOb/P/3cGAEFuQE2ckOjJTooEigRg6gE/gzTnwnMJqigDEUDYwF/kRxFAOMp1hgAvA4uSgefCK5wCdRItAtMZmSgCnkNn4kj0SdkoGp5AGmkQ70An+gdEoFZlAa0Af8njLJC+wBL/qeepIPmCXRT5nGMcqmHsBeEntTFrAP+YF9qRewH/A7yqHewFzqA8yjvsa31F/iAOoHHEi5wHzKM/6LBkkcTP2BQyQW0ADgWTQQOJTygYU0yDhKARoMLKIhwGIqAJYAv6FSOgtYRkOBw3B2HqHhFACOoCLg2VQMPEdiOZUAz6VS4Eh89R6m8ySOouHA0TQCOIbONr6msRLH0TnA8fgCOkQTaCRwosTz6TxgBY0y/kmVNBo4CXiILqAx4KtoHHAyjQdeKHEKTTC+omqaCKyh84FTgf+gaVQJnE6TgLV0AfAiqjK+pBkS62gycCZdaBykWVQNfrbEOVQDnEtTUX4xTQPOkzifphtf0AKqBS6kGcB6iYuozvicFtNM4BKaBbwE+BktpdnAZTQX+Ae6GHipxOU0D3gZzQdeTguMA7RCYgPVA1fSIuAfabEh/q97CfBKiavoEmM/XUVLgVfTMuA19AfgtXSp8Qk10nLgdXQZSlYDP6Hr6XLgDbQCuIZWAtcC99Gf6I/AdXQF8Ea60thLN0m8mVYB19PVwFvoGtTeCtxLt9G1wA3UaOyh2+k64B20GvhniXfSDcCNtAZ4F60F3g38mO6hPwHvpXXA++hG4P10k/ERPUA3Gx/Sg7QeuIluAT4k8WG6FfgI3QZ8lG4HPibxcboD+AT9GRikO4FNwA+omTYCW+gu4Ga6x3ifnqR7jb/TFolP0X3AVrofuJUeAG6T+DRtAj5DDxnv0bP0MPAvErfTI8A2ehT4HD0GfJ4eB75ATxjv0osUBL5ETcY79LLEv1Iz8BVqMXbTq7QZuIOeBL5GW4Cv01PAN/ANtJvepK3AnRJ30Tbg3+gZ4Fv0rPE2vQ18i3bTX4Dv0Hbgu9Rm/I3ek/h3eh74Pr0A/IBeBH4o8SN6CfgxvQzcQ381dtFeifvoVWMnfUI7gPvpNeCnEg/Q68DP6A3g5/Qm8AvaZbxJByV+SX8D/oPeMt6gr+ht4D8lHqLdwK/pXeN1OkzvAY9I/Ib+DjxK7wP/iz4AfivxO/rIeI2O0cfA72kP8AfgDvqR9gKP0z7gT/QJ8GeJJ+hT41VqpwNAgz4D/iem/+/H9G9+5zH9q98c07/8FzH9y1/E9IP/IqZ/8YuY/vlviOkHTsb0hafE9E//RUz/VMb0T38R0/fLmL6/W0zfL2P6fhnT93eL6Z/8IqbvkzF9n4zp+36HMf39/0cxffd/Yvp/YvrvLqb/3u/pv9+Y/q/u6f+J6f+J6b8e01/5/cf0/wbsk+vSCmVuZHN0cmVhbQplbmRvYmoKOSAwIG9iago8PC9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL0FBQUFBQStBcmlhbE1UCi9GbGFncyA0Ci9Bc2NlbnQgOTA1LjI3MzQ0Ci9EZXNjZW50IC0yMTEuOTE0MDYKL1N0ZW1WIDQ1Ljg5ODQzOAovQ2FwSGVpZ2h0IDcxNS44MjAzMQovSXRhbGljQW5nbGUgMAovRm9udEJCb3ggWy02NjQuNTUwNzggLTMyNC43MDcwMyAyMDAwIDEwMDUuODU5MzhdCi9Gb250RmlsZTIgOCAwIFI+PgplbmRvYmoKMTAgMCBvYmoKPDwvVHlwZSAvRm9udAovRm9udERlc2NyaXB0b3IgOSAwIFIKL0Jhc2VGb250IC9BQUFBQUErQXJpYWxNVAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkgKEFkb2JlKQovT3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwPj4KL1cgWzAgWzc1MF0gNTUgWzYxMC44Mzk4NF0gNzEgNzIgNTU2LjE1MjM0IDczIFsyNzcuODMyMDNdIDgzIFs1NTYuMTUyMzQgMCAwIDUwMCAyNzcuODMyMDNdXQovRFcgMD4+CmVuZG9iagoxMSAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMjU3Pj4gc3RyZWFtCnicXZDbaoQwEIbv8xRzub1Y4qq7UhBh2aXgRQ/U9gFiMtrAmoQYL3z75iAWOpCEn3++yczQW3tvlXRAP6zmHToYpBIWZ71YjtDjKBU55SAkd5uKN5+YIdTD3To7nFo1aFLXAPTTu7OzKxyuQvf4ROi7FWilGuHwfeu87hZjHjihcpCRpgGBg6/0yswbmxBoxI6t8L5069Ezfxlfq0HIoz6lbrgWOBvG0TI1IqkzHw3ULz4agkr88/NE9QP/YTZkF5XPzrJz2QR1LqKqsshuWTuzf1EmqHyOz2VjL6lS8qpiK5Gg0EnY2D4mX6z1E8a1xtHCUFLhvnmjTaDC+QW8VIN0CmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iago8PC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL0FBQUFBQStBcmlhbE1UCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFsxMCAwIFJdCi9Ub1VuaWNvZGUgMTEgMCBSPj4KZW5kb2JqCnhyZWYKMCAxMgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDM5MiAwMDAwMCBuIAowMDAwMDAwMDk5IDAwMDAwIG4gCjAwMDAwMTA3NzAgMDAwMDAgbiAKMDAwMDAwMDEzNiAwMDAwMCBuIAowMDAwMDAwNjAwIDAwMDAwIG4gCjAwMDAwMDA2NTUgMDAwMDAgbiAKMDAwMDAwMDcwMiAwMDAwMCBuIAowMDAwMDA5OTEyIDAwMDAwIG4gCjAwMDAwMTAxNDYgMDAwMDAgbiAKMDAwMDAxMDQ0MiAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMTIKL1Jvb3QgNyAwIFIKL0luZm8gMSAwIFI+PgpzdGFydHhyZWYKMTA5MDkKJSVFT0YK
          type: string
        integration_type:
          description: ''
          example: Allegro
          type: string
        last_status_check:
          description: Data ostatniego sprawdzenia statusu
          example: '2026-07-20 15:20:07'
          type: string
        order_id:
          description: Identyfikator zamówienia
          example: 56
          type: integer
        service:
          description: ''
          example: INPOST - Paczka kurierska
          type: string
        service_internal:
          description: ''
          example: inpost
          type: string
        shipment_type:
          description: ''
          example: allegroinpost
          type: string
        status:
          description: Status
          example: Wygenerowano przesyłkę.
          type: string
        tracking_number:
          description: Numer do śledzenia przesyłki
          example: '603236276201506110294169'
          type: string
        updated_at:
          description: Data dostarczenia
          example: '2026-07-20T11:46:29+01:00'
          type: string
      title: OrdershipmentRequest
      type: object
    ordershipment_response:
      description: Szczegóły listu przewozowego
      properties:
        courier_number:
          description: numer zlecenia przyjazdu kuriera
          example: '23849592778'
          type: string
        date:
          description: Data utworzenia
          example: '2026-07-20 15:20:07'
          type: string
        delivered_date:
          description: Data dostarczenia
          example: '2026-07-20 17:13:55'
          type: string
        file:
          description: PDF w postaci base64
          example: ''
          type: string
        id:
          description: Identyfikator listu przewozowego
          example: 1
          type: integer
        last_status_check:
          description: Data ostatniego sprawdzenia statusu
          example: '2026-07-20 15:20:07'
          type: string
        order_id:
          description: Identyfikator zamówienia
          example: 56
          type: integer
        service:
          description: ''
          example: INPOST - Paczka kurierska
          type: string
        service_internal:
          description: ''
          example: inpost
          type: string
        status:
          description: Status
          example: Wygenerowano przesyłkę.
          type: string
        tracking_number:
          description: Numer do śledzenia przesyłki
          example: '603236276201506110294169'
          type: string
      title: OrdershipmentDetails
      type: object
    payment_channel_details_request:
      properties:
        id:
          description: Identyfikator płatności
          example: 1
          type: integer
        internal_name:
          description: Wewnętrzna nazwa kanału płatności
          example: payurest
          type: string
        status:
          description: Status kanału płatności
          example: '1'
          type: integer
        title:
          description: Nazwa kanału płatności
          example: Przelew
          type: string
        translations:
          example:
            - language_id: 2
              text: <p>{account}</p>
              text_email: Example email!
              title: test
              title_internal: test
          items: payment_channel_translation_object
          type: array
      title: PaymentChannelDetailsRequest
      type: object
    payment_channel_request:
      properties:
        commission:
          description: Doliczana prowizja do kanału
          example: 1.5
          type: float
        integration:
          description: Nazwa integracji
          example: payurest
          type: string
        order:
          description: Numer porządkowy (kolejność sortowania)
          example: 1
          type: integer
        status:
          description: Status kanału płatności
          example: '1'
          type: integer
        title:
          description: Nazwa kanału płatności
          example: Przelew
          type: string
        title_internal:
          description: Wewnętrzna nazwa kanału płatności
          example: PayU (REST)
          type: string
        translations:
          example:
            - language_id: 2
              text: <p>{account}</p>
              text_email: Example email!
              title: test
              title_internal: test
          items: payment_channel_translation_object
          type: array
        vat:
          description: Stawka VAT doliczana do kanału (0 lub 23)
          example: 0
          type: integer
      title: PaymentChannelRequest
      type: object
    payment_channel_translation_object:
      properties:
        text:
          description: Treść wyświetlana w ostatnim kroku koszyka
          example: '{account}'
          type: string
        text_email:
          description: Treść wstawiana do wiadomości wysyłanej klientowi
          example: <p>{account}</p>
          type: string
        title:
          description: Nazwa kanału płatności
          example: Test
          type: string
        title_internal:
          description: Nazwa wewnętrzna wyświetlana w panelu administracyjnym
          example: PayU (REST API)
          type: string
      title: PaymentChannelTranslationObject
      type: object
    payment_data:
      description: Dane płatności
      properties:
        cod:
          description: Oznaczenie pobrania
          example: 1
          type: integer
        currency:
          description: Waluta płatności
          example: PLN
          type: string
        id:
          description: Identyfikator płatności
          example: 1
          type: string
        name:
          description: Nazwa płatności
          example: Przelewy zwykły
          type: string
        paid:
          description: Wartość dokonanej wpłaty
          example: 50
          type: string
        paid_date:
          description: Data dokonanej wpłaty
          example: '2018-09-12 20:32:58'
          type: string
        status:
          description: Status płatności
          example: paid
          type: string
      title: PaymentData
      type: object
    payments_response:
      properties:
        amount:
          description: Kwota płatności
          example: 119.99
          type: number
        currency:
          description: Waluta
          example: PLN
          type: string
        date:
          description: Data wykonania płatności
          example: '2026-07-20 00:00:00'
          type: string
        name:
          description: Nazwa płatności
          example: Płatności Allegro (Przelewy24)
          type: string
        payment_data:
          description: Identyfikator płatności w serwisie zewnętrznym
          example: 2
          type: integer
        payment_id:
          description: Identyfikator płatności
          example: 22
          type: id
        status:
          description: Identyfikator statusu płatności
          example: 1
          type: number
      title: PaymentsResponse
      type: object
    product_data:
      type: object
      example:
        title: "Koszulka sportowa męska FIT"
        catalog: "TSHIRT-FIT-M"
        ean: "5901234567890"
        pack_ean: "5901234567891"
        symbol: "TS-FIT-M"
        volume: 1.2
        unit_id: 1
        priority: 10
        presale_date: "2026-08-01 10:00:00"
        step: 1
        alert: 5
        extra_info: "Oddychający materiał poliestrowy szybkoschnący"
        bestseller: 1
        new: 1
        before_gpsr: 0
        shipment_template_id: 2
        availability_id: 1
        location: "A-12-3"
        no_barcode_label: 0
        responsibleperson_id: 12
        quantity: 100
        weight: 0.25
        as_set: 0
        price: 89.99
        currency: "pln"
        price_buy: 25.50
        price_promo: 69.99
        status: 1
        variants_group_id: 1
        attributes_group_id: 2
        manufacturer_id: 3
        category_id: 12
        categories: [ 12, 15, 24 ]
        vat: 23
        promotion: 1
        pricesfieldsvalues:
          - pricesfield_id: 2
            value: 65.00
        additional_fields:
          - field_id: 1
            field_value: "Męski"
        meta:
          title: "Koszulka Sportowa Męska FIT - sklep"
          keywords: "koszulka, sportowa, męska, fit, t-shirt"
          description: "Kup profesjonalną koszulkę sportową męską idealną do treningu."
        description: "<h1>Koszulka treningowa premium</h1><p>Główny tekst opisowy...</p>"
        descriptions:
          - datacell_id: 21
            content: "<p>Informacje o materiale i praniu.</p>"
        description_short: "Krótki opis t-shirta sportowego."
        images:
          - "https://demo.sellasist.pl/uploads/tshirt_front.jpg"
          - "https://demo.sellasist.pl/uploads/tshirt_back.jpg"
        additional_eans:
          - "5901234567800"
          - "5901234567817"
        storages:
          - storage_id: 1
            product_variant_id: 7691
            quantity: 50
            rack_id: 12
            shelf_id: 3
        variants:
          group_name: "Rozmiar"
          options:
            - name: "M"
              catalog: "TSHIRT-FIT-M"
              quantity: 50
              price_promo: 69.99
              price: 89.99
            - name: "L"
              catalog: "TSHIRT-FIT-L"
              quantity: 50
              price_promo: 69.99
              price: 89.99
        suppliers:
          - supplier_id: 1
            quantity: 250
        packages:
          normal:
            width: 25
            length: 30
            height: 2
          collective:
            width: 60
            length: 40
            height: 30
      properties:
        title:
          type: string
          description:
            Nazwa produktu (język polski, domyślny ID: 2)
        catalog:
          type: string
          description: Numer katalogowy produktu
        ean:
          type: string
        pack_ean:
          type: string
          description: Kod EAN opakowania zbiorczego
        symbol:
          type: string
        volume:
          type: number
          description: Objętość (gabaryt)
        unit_id:
          type: integer
        priority:
          type: integer
        presale_date:
          type: string
          description: Data rozpoczęcia przedsprzedaży (Y-m-d H:i:s)
        step:
          type: number
          description: Krok jednostki miary
        alert:
          type: integer
          description: Alarm magazynowy (minimalny stan)
        extra_info:
          type: string
          description: Dodatkowe informacje opisowe
        bestseller:
          type: integer
          description: Oznaczenie bestselleru (0 lub 1)
        new:
          type: integer
          description: Oznaczenie nowości (0 lub 1)
        before_gpsr:
          type: integer
          description: Status dopuszczenia na rynek przed dyrektywą GPSR (marketed_before_GPSR_obligation)
        shipment_template_id:
          type: integer
        availability_id:
          type: integer
        location:
          type: string
          description: Domyślna lokacja magazynowa
        no_barcode_label:
          type: integer
          description: Czy brak kodu kreskowego (0 lub 1)
        responsibleperson_id:
          type: integer
          description: ID osoby odpowiedzialnej z bazy GPSR
        quantity:
          type: number
        weight:
          type: number
          description: Waga produktu w kg
        as_set:
          type: integer
          description: Flaga oznaczająca czy produkt jest zestawem (0/1)
        price:
          type: number
        currency:
          type: string
          description: Symbol waluty podawanej ceny (np. pln/eur)
        price_buy:
          type: number
        price_promo:
          type: number
        status:
          type: integer
          description: Status produktu (np. 1 - aktywny, 0 - nieaktywny)
        variants_group_id:
          type: integer
        attributes_group_id:
          type: integer
        manufacturer_id:
          type: integer
        category_id:
          type: integer
        categories:
          type: array
          items:
            type: integer
        vat:
          type: integer
          description: Stawka podatku VAT (np. 23, 8, 5, 0)
        promotion:
          type: integer
          description: Status promocji aktywnej (0 lub 1)
        pricesfieldsvalues:
          type: array
          items:
            type: object
            required:
              - pricesfield_id
              - value
            properties:
              pricesfield_id:
                type: integer
              value:
                type: number
        additional_fields:
          type: array
          items:
            type: object
            properties:
              field_id:
                type: integer
              field_value:
                type: string
        meta:
          type: object
          properties:
            title:
              type: string
            keywords:
              type: string
            description:
              type: string
        description:
          type: string
          description: Długi opis główny produktu (komórka tekstowa 13)
        descriptions:
          type: array
          items:
            type: object
            properties:
              datacell_id:
                type: integer
              content:
                type: string
        description_short:
          type: string
          description: Krótki opis produktu (komórka tekstowa 15)
        images:
          type: array
          description: Lista adresów URL zdjęć
          items:
            type: string
        additional_eans:
          type: array
          description: Lista dodatkowych kodów EAN przypisanych do produktu
          items:
            type: string
        storages:
          type: array
          items:
            $ref: '#/components/schemas/storages_product_request'
        variants:
          type: object
          properties:
            group_name:
              type: string
            options:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  catalog:
                    type: string
                  quantity:
                    type: number
                  price_promo:
                    type: number
                  price:
                    type: number
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/suppliers_product'
        packages:
          type: object
          properties:
            normal:
              type: object
              properties:
                width:
                  type: number
                length:
                  type: number
                height:
                  type: number
            collective:
              type: object
              properties:
                width:
                  type: number
                length:
                  type: number
                height:
                  type: number

      product_data_update:
        type: object
        example:
          title: "Koszulka sportowa męska (Edycja)"
          catalog: "TSHIRT-FIT-M-REV"
          before_gpsr: 1
          responsibleperson_id: 15
          external_shops_mappings:
            - shop_id: 1
              foreign_id: 4321
          locations:
            - storage_id: 1
              shelf_id: 3
              rack_id: 12
              quantity: 40
              expiration_date: "2028-12-31"
              additional_field: "Sektor A, poziom 2"
          price: 99.99
          additional_eans:
            - id: 301
              ean: "5901234567800"
            - id: 302
              delete: true
            - ean: "5901234567824"
          external_offers_settings:
            - external_account_id: 2
              price: 99.99
              price_promo: 79.99
              promotion: 1
              promotion_end: "2026-10-31 23:59:59"
          shops_settings:
            - shop_id: 1
              price: 95.00
              price_promo: 75.00
              promotion: 1
              promotion_end: "2026-12-31 23:59:59"
          packages:
            normal:
              width: 26
              length: 31
              height: 3
          pricesfieldsvalues:
            - pricesfield_id: 2
              value: 68.00
        properties:
          title:
            type: string
          catalog:
            type: string
          ean:
            type: string
          pack_ean:
            type: string
          as_set:
            type: boolean
          presale_date:
            type: string
          symbol:
            type: string
          volume:
            type: number
          no_barcode_label:
            type: integer
          location:
            type: string
          unit_id:
            type: integer
          priority:
            type: integer
          before_gpsr:
            type: integer
            description: Wprowadzenie przed rozporządzeniem GPSR (marketed_before_GPSR_obligation)
          step:
            type: number
          alert:
            type: integer
          responsibleperson_id:
            type: integer
          extra_info:
            type: string
          bestseller:
            type: integer
          new:
            type: integer
          shipment_template_id:
            type: integer
          availability_id:
            type: integer
          quantity:
            type: number
          external_shops_mappings:
            type: array
            items:
              type: object
              properties:
                shop_id:
                  type: integer
                foreign_id:
                  type: integer
          locations:
            type: array
            items:
              type: object
              properties:
                storage_id:
                  type: integer
                shelf_id:
                  type: integer
                rack_id:
                  type: integer
                quantity:
                  type: number
                expiration_date:
                  type: string
                additional_field:
                  type: string
          price:
            type: number
          price_buy:
            type: number
          weight:
            type: number
          status:
            type: integer
          variants_group_id:
            type: integer
          attributes_group_id:
            type: integer
          manufacturer_id:
            type: integer
          category_id:
            type: integer
          categories:
            type: array
            items:
              type: integer
          vat:
            type: integer
          price_promo:
            type: number
          promotion:
            type: integer
          additional_eans:
            type: array
            items:
              type: object
              properties:
                id:
                  type: integer
                  description: ID istniejącego wpisu dodatkowego EAN
                ean:
                  type: string
                  description: Kod EAN do dodania lub aktualizacji
                delete:
                  type: boolean
                  description: Flaga określająca czy usunąć dany EAN
          external_offers_settings:
            type: array
            items:
              type: object
              properties:
                offer_id:
                  type: integer
                external_account_id:
                  type: integer
                price:
                  type: number
                price_promo:
                  type: number
                promotion:
                  type: integer
                promotion_end:
                  type: string
          shops_settings:
            type: array
            items:
              type: object
              properties:
                shop_id:
                  type: integer
                price:
                  type: number
                price_promo:
                  type: number
                promotion:
                  type: integer
                promotion_end:
                  type: string
          additional_fields:
            type: array
            items:
              type: object
              properties:
                field_id:
                  type: integer
                field_name:
                  type: string
                field_value:
                  type: string
          meta:
            type: object
            properties:
              title:
                type: string
              keywords:
                type: string
              description:
                type: string
          description:
            type: string
          description_short:
            type: string
          descriptions:
            type: array
            items:
              type: object
              properties:
                datacell_id:
                  type: integer
                content:
                  type: string
          images:
            type: array
            items:
              type: string
          variants:
            type: object
            properties:
              group_name:
                type: string
              options:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    catalog:
                      type: string
                    quantity:
                      type: number
                    price_promo:
                      type: number
                    price:
                      type: number
          storages:
            type: array
            items:
              $ref: '#/components/schemas/storages_product_request'
          suppliers:
            type: array
            items:
              $ref: '#/components/schemas/suppliers_product'
          packages:
            type: object
            properties:
              normal:
                type: object
                properties:
                  width:
                    type: number
                  length:
                    type: number
                  height:
                    type: number
              collective:
                type: object
                properties:
                  width:
                    type: number
                  length:
                    type: number
                  height:
                    type: number
          pricesfieldsvalues:
            type: array
            items:
              type: object
              properties:
                pricesfield_id:
                  type: integer
                value:
                  type: number
    product_data_update:
      properties:
        additional_eans:
          description: Tablica dodatkowych kodów EAN dla produktu
          example:
            - delete: true
              id: 301
            - ean: '5909999000002'
              id: 302
            - ean: '5909999000003'
          items:
            properties:
              delete:
                description: Flaga określająca czy usunąć dany EAN (gdy true)
                example: true
                type: boolean
              ean:
                description: Kod EAN do dodania lub aktualizacji
                example: '5909999000002'
                type: string
              id:
                description: >-
                  ID istniejącego dodatkowego EAN (wymagane tylko przy
                  aktualizacji lub usuwaniu)
                example: 301
                type: integer
            type: object
          type: array
        additional_fields:
          example:
            - field_id: 1
              field_name: pole_tekstowe
              field_value: wartość pola
            - field_id: 3
              field_name: checkbox
              field_value: tak
            - field_id: 3
              field_name: checkbox
              field_value: nie
            - field_id: 4
              field_name: Dodatkowe pliki
              field_value: base64
          type: array
        alert:
          example: 3
          type: integer
        as_set:
          description: Czy produkt jest zestawem
          example: false
          type: bool
        availability_id:
          example: 1
          type: integer
        bestseller:
          example: 0
          type: integer
        catalog:
          example: 1VWOCN48
          type: string
        categories:
          example:
            - 5
            - 19
            - 24
          items:
            example: 3
            format: int64
            type: integer
          type: array
        category_id:
          example: 1
          type: integer
        description:
          example: Spodnie sztruksowe zielone, bardzo ładne
          type: string
        description_short:
          example: Fajne spodnie
          type: string
        descriptions:
          items:
            $ref: '#/components/schemas/descriptions'
          type: array
        ean:
          example: '7501031311309'
          type: string
        external_offers_settings:
          description: Ustawienia zewnętrznych ofert
          items:
            properties:
              external_account_id:
                description: Identyfikator konta
                example: 2
                type: integer
              offer_id:
                description: Identyfikator oferty (opcjonalnie)
                example: 8
                type: integer
              price:
                description: Cena
                example: 52.99
                type: number
              price_promo:
                description: Cena promocyjna
                example: 42.99
                type: number
              promotion:
                description: Status promocji
                example: 1
                type: integer
              promotion_end:
                description: Data zakończenia promocji
                example: '2026-07-20 12:00:59'
                type: string
            type: object
          type: array
        external_shops_mappings:
          description: Ustawienia mapowań zewnętrznych sklepów
          items:
            properties:
              foreign_id:
                description: Identyfikator produktu zewnętrzengo do zmapowania
                example: 2
                type: integer
              shop_id:
                description: Identyfikator sklepu
                example: 8
                type: integer
            type: object
          type: array
        extra_info:
          example: Dodatkowe informacje
          type: string
        images:
          example:
            - https://sellingo.pl/public/themes/default/images/logo.png
            - https://sellingo.pl/public/themes/default/images/logo.png
            - https://sellingo.pl/public/themes/default/images/logo.png
          items:
            example: 3
            format: int64
            type: integer
          type: array
        location:
          example: PS-32-3
          type: string
        manufacturer_id:
          example: 1
          type: integer
        meta:
          properties:
            description:
              example: Meta description
              type: string
            keywords:
              example: Meta słowa kluczowe
              type: string
            title:
              example: Meta tytuł
              type: string
          title: meta
          type: object
        new:
          example: 1
          type: integer
        no_barcode_label:
          description: Produkt bez kodu kreskowego
          example: 1
          type: integer
        presale_date:
          description: Data przedsprzedaży
          example: '2026-07-20 12:00:59'
          type: string
        price:
          description: Cena jednostkowa brutto
          example: 153.22
          type: number
        price_buy:
          description: Cena zakupu brutto
          example: 153.22
          type: number
        price_promo:
          description: Cena promocyjna brutto
          example: 72.22
          type: number
        pricesfieldsvalues:
          description: Wartości pól cenowych
          items:
            properties:
              id:
                description: Identyfikator wartości pola cenowego
                example: 1
                type: integer
              pricesfield_id:
                description: Identyfikator pola cenowego
                example: 2
                type: integer
              value:
                description: Wartość pola
                example: 21.9
                type: number
            type: object
          type: array
        priority:
          example: 1
          type: integer
        promotion:
          example: 1
          type: integer
        quantity:
          example: 5
          type: integer
        responsibleperson_id:
          description: >-
            ID osoby odpowiedzialnej za produkt. Jeśli podane ID nie istnieje,
            zostanie zwrócony błąd 404.
          example: 123
          type: integer
        shipment_template_id:
          example: 1
          type: integer
        shops_settings:
          description: Ustawienia ofert sklepów sellingo
          items:
            properties:
              price:
                description: Cena
                example: 33.99
                type: number
              price_promo:
                description: Cena promocyjna
                example: 19.99
                type: number
              promotion:
                description: Status promocji
                example: 1
                type: integer
              promotion_end:
                description: Data zakończenia promocji
                example: '2026-07-20 12:00:59'
                type: string
              shop_id:
                description: Identyfikator sklepu
                example: 1
                type: integer
            type: object
          type: array
        status:
          example: 1
          type: integer
        step:
          example: 0.001
          type: number
        storages:
          example:
            - id: 1
              product_variant_id: 7691
              quantity: 1
              rack_id: 232
              shelf_id: 1
              storage_id: 341
          items:
            $ref: '#/components/schemas/storages_product_request'
          type: array
        suppliers:
          items:
            $ref: '#/components/schemas/suppliers_product'
          type: array
        symbol:
          example: SYM123
          type: string
        title:
          example: Produkt testowy
          type: string
        unit_id:
          example: 1
          type: integer
        variants_group_id:
          example: 1
          type: integer
        vat:
          example: 23
          type: integer
        volume:
          description: Objętość - gabaryt
          example: 1
          type: integer
        weight:
          description: Waga produktu
          example: 1.5
          type: float
      title: ProductData
      type: object
    product_variant:
      properties:
        catalog:
          example: 1VWOCN48
          type: string
        ean:
          example: '7501031311309'
          type: string
        price:
          example: 1
          type: float
        price_promo:
          example: 1
          type: float
        pricesfieldsvalues:
          description: Wartości pól cenowych
          items:
            properties:
              pricesfield_id:
                description: Identyfikator pola cenowego
                example: 2
                type: integer
              value:
                description: Wartość pola
                example: 21.9
                type: number
            type: object
          type: array
        product_id:
          example: 1
          type: integer
        promotion:
          example: 1
          type: integer
        quantity:
          example: 5
          type: integer
        status:
          example: 1
          type: integer
        variants_properties:
          example:
            - variants_property_id: 1
          items:
            $ref: '#/components/schemas/variants_properties_object'
          type: array
        weight:
          example: 1
          type: float
      title: ProductsVariants
      type: object
    product_variant_update:
      properties:
        catalog:
          example: 1VWOCN48
          type: string
        ean:
          example: '7501031311309'
          type: string
        external_offers_settings:
          description: Ustawienia zewnętrznych ofert
          items:
            properties:
              external_account_id:
                description: Identyfikator konta
                example: 8
                type: integer
              offer_id:
                description: Identyfikator oferty (opcjonalnie)
                example: 8
                type: integer
              price:
                description: Cena
                example: 52.99
                type: number
              price_promo:
                description: Cena promocyjna
                example: 42.99
                type: number
              promotion:
                description: Status promocji
                example: 1
                type: integer
              promotion_end:
                description: Data zakończenia promocji
                example: '2026-07-20 12:00:59'
                type: string
            type: object
          type: array
        external_shops_mappings:
          description: Ustawienia mapowań zewnętrznych sklepów
          items:
            properties:
              foreign_id:
                description: Identyfikator produktu zewnętrzengo do zmapowania
                example: 2
                type: integer
              shop_id:
                description: Identyfikator sklepu
                example: 8
                type: integer
            type: object
          type: array
        pricesfieldsvalues:
          description: Wartości pól cenowych
          items:
            properties:
              id:
                description: Identyfikator wartości pola cenowego
                example: 1
                type: integer
              pricesfield_id:
                description: Identyfikator pola cenowego
                example: 2
                type: integer
              value:
                description: Wartość pola
                example: 21.9
                type: number
            type: object
          type: array
        promotion:
          example: 1
          type: integer
        quantity:
          example: 5
          type: integer
        status:
          example: 1
          type: integer
        symbol:
          example: L-5883
          type: string
      title: ProductsVariantsRequest
      type: object
    product_variants_object:
      properties:
        alert:
          description: Powiadomienie związane z stanem magazynowym
          example: 1
          type: integer
        allegro_id:
          description: Identyfikator na allegro
          example: abc1234
          type: string
        allegro_product_binded:
          description: Status połączenia produktu z allegro
          example: 1
          type: integer
        automater_product_id:
          description: Identyfikator w platformie automater
          example: 123456
          type: string
        availbility_id:
          description: Identyfikator kodu dostępności
          example: 1
          type: integer
        catalog:
          description: Kod katalogu produktu
          example: ''
          type: string
        ean:
          description: Kod EAN
          example: '1234567890123'
          type: string
        external_offers_settings:
          description: Ustawienia zewnętrznych ofert
          items:
            properties:
              account:
                description: Nazwa konta w serwisie
                example: kontoallegro
                type: string
              external_account_id:
                description: Identyfikator konta
                example: 2
                type: integer
              offer_id:
                description: Identyfikator oferty
                example: 8
                type: integer
              price:
                description: Cena
                example: 52.99
                type: number
              price_promo:
                description: Cena promocyjna
                example: 42.99
                type: number
              promotion:
                description: Status promocji
                example: 1
                type: integer
              promotion_end:
                description: Data zakończenia promocji
                example: '2026-07-20 12:00:59'
                type: string
              shop:
                description: Nazwa serwisu
                example: allegro
                type: string
            type: object
          type: array
        external_shops_mappings:
          description: Ustawienia ofert sklepów sellingo
          items:
            properties:
              foreign_product_id:
                description: Identyfikator produktu w zewnętrznym sklepie
                example: 2344
                type: integer
              shop_name:
                description: Nazwa sklepu
                example: Sklep goshop
                type: string
              shop_type:
                description: Typ sklepu
                example: goshop
                type: string
            type: object
          type: array
        id:
          description: Identyfikator wariantu w produkcie
          example: 1
          type: integer
        order:
          description: Numer porządkowy
          example: 1
          type: integer
        presale_date:
          description: Data przedsprzedaży
          example: ''
          type: datetime
        price:
          description: Cena wariantu produktu
          example: 1
          type: float
        price_buy:
          description: Cena zakupu
          example: 1
          type: float
        price_promo:
          description: Promocyjna cena produktu
          example: 1
          type: float
        pricesfieldsvalues:
          description: Wartości pól cenowych
          items:
            properties:
              id:
                description: Identyfikator wartości pola cenowego
                example: 1
                type: integer
              pricesfield_id:
                description: Identyfikator pola cenowego
                example: 2
                type: integer
              value:
                description: Wartość pola
                example: 21.9
                type: number
            type: object
          type: array
        product_id:
          description: Identyfikator produktu do którego należy wariant
          example: 20
          type: integer
        promotion:
          description: Stan promocji 1 = aktywna, 0 = wyłączona
          example: 1
          type: integer
        promotion_end:
          description: Data zakończenia promocji
          example: '2026-07-20 10:00:00'
          type: timestamp
        quantity:
          description: Stan magazynowy
          example: 1
          type: float
        quantity_suppliers:
          description: Stan u dostawców
          example: 1
          type: integer
        quantity_updated_at:
          description: Data aktualizacji stanu magazynowego
          example: '2026-07-20 10:00:00'
          type: timestamp
        reserved:
          description: Status rezerwacji
          example: 1
          type: integer
        sells:
          description: Ilość sprzedanych wariantów produktów
          example: 10
          type: integer
        status:
          description: Status wariantu produktu
          example: 1
          type: integer
        symbol:
          description: Symbol produktu
          example: ASCA
          type: string
        volume:
          description: Objętość (kubatura)
          example: 1
          type: float
        weight:
          description: Waga
          example: 1
          type: float
      title: ProductVariantObject
      type: object
    products_bulk:
      properties:
        lines:
          example:
            - line: 1
              product_id: 341
              status: success
            - line: 2
              message: item_not_found
              status: error
              variant_id: 15
            - line: 3
              status: success
              variant_id: 39
          type: array
        status:
          example: SUCCESS
          type: string
      title: ProductData
      type: object
    products_bulk_data:
      properties:
        archived:
          description: czy produkt jest zarchiwizowany
          example: true
          type: boolean
        as_set:
          description: Oznaczenie produktu jako zestaw
          example: 1
          type: integer
        availability_id:
          description: Identyfikator czasu wysyłki
          example: 3
          type: integer
        catalog_number:
          description: Numer katalogowy produktu
          example: Tow000017
          type: string
        ean:
          description: kod ean
          example: 5902135057247
          type: number
        external_offers:
          description: Lista ofert zewnętrznych
          items:
            properties:
              account_id:
                description: ID konta
                type: integer
              price:
                description: Cena w ofercie zewnętrznej
                type: number
              product_variant_id:
                description: ID wariantu produktu
                type: integer
              productexternal_id:
                description: ID oferty zewnętrznej
                type: integer
            type: object
          type: array
        location:
          description: Lokalizacja
          example: PS-32
          type: string
        price:
          description: Podstawowa cena produktu
          example: 12.34
          type: number
        price_buy:
          description: kwota zakupu produktu
          example: 9.99
          type: number
        price_promo:
          description: Cena promocyjna produktu
          example: 2.34
          type: number
        product_id:
          description: Identyfikator produktu
          example: 1
          type: number
        promotion:
          description: Status aktywności promocji produktu
          example: true
          type: bool
        quantity:
          description: stan magazynowy
          example: 1
          type: number
        storages:
          example:
            product_variant_id: 7691
            quantity: 1
            rack_id: 232
            shelf_id: 1
            storage_id: 341
          items:
            $ref: '#/components/schemas/storages_product_request'
          type: array
        symbol:
          description: Symbol Produktu
          example: L-5883
          type: string
        title:
          description: Nazwa produktu
          example: Produkt testowy
          type: string
        variants:
          description: stany magazynowe wariantów
          items:
            properties:
              catalog_number:
                description: Numer katalogowy Wariantu
                example: Tow000017
                type: string
              ean:
                description: kod ean
                example: 5902135057247
                type: number
              id:
                description: Identyfikator wariantu
                example: 945
                type: integer
              manufacturer_id:
                description: Numer id producenta
                example: 666
                type: integer
              price:
                description: Podstawowa cena wariantu
                example: 12.34
                type: number
              price_promo:
                description: Cena promocyjna wariantu
                example: 2.34
                type: number
              promotion:
                description: Status aktywności promocji wariantu
                example: true
                type: bool
              quantity:
                description: stan magazynowy
                example: 24
                type: number
              symbol:
                description: Symbol Wariantu
                example: L-5883
                type: string
            type: object
          type: array
        vat:
          description: Stawka VAT
          example: 23
          type: integer
        volume:
          description: Miara przestrzeni produktu
          example: 2
          type: integer
      title: ProductData
      type: object
    products_bulk_request:
      example:
        - availability_id: 3
          ean: 5902135057247
          location: PS-32
          price: 61.99
          price_promo: 31
          product_id: 341
          promotion: 1
          quantity: 1
          storages:
            - quantity: 20
              rack_id: 212
              shelf_id: 1
              storage_id: 341
          title: produkt testowy
          vat: 23
          volume: 2
        - availability_id: 3
          ean: 5902135057247
          price: 98.5
          price_promo: 80
          promotion: 1
          quantity: 5
          storages:
            - quantity: 1
              rack_id: 223
              shelf_id: 1
              storage_id: 341
          variant_id: 15
          volume: 2
        - availability_id: 3
          price: 98.5
          price_promo: 78.99
          promotion: 0
          quantity: 3
          storages:
            - quantity: 1
              rack_id: 232
              shelf_id: 1
              storage_id: 341
          variant_id: 39
          volume: 2
      items:
        type: object
      title: ProductData
      type: array
    products_fields_request:
      description: Struktura dodatkowego pola
      properties:
        file_type:
          description: Rozszerzenia pliku (image/document - Tylko dla typu files)
          example: image
          type: string
        max:
          description: Maksymalna wartość pola (Tylko dla typu number)
          example: 5
          type: number
        min:
          description: Minimalna wartość pola (Tylko dla typu number)
          example: 0.01
          type: number
        name:
          description: Nazwa pola
          example: dodatkowe_pole
          type: string
        option_type:
          description: Wielokrotność wyboru (one/multiple - Tylko dla typu option)
          example: multiple
          type: string
        type:
          description: Typ pola (text/number/files/option/checkbox)
          example: option
          type: string
        values:
          description: Wartości (Tylko dla typów option i checkbox)
          example:
            - title: Tak
            - title: Nie
          type: array
      title: ProductsFieldsRequest
      type: object
    products_fields_response:
      properties:
        file_type:
          description: Rozszerzenia pliku (image/document - Tylko dla typu files)
          example: image
          type: string
        max:
          description: Maksymalna wartość pola (Tylko dla typu number)
          example: 5
          type: number
        min:
          description: Minimalna wartość pola (Tylko dla typu number)
          example: 0.01
          type: number
        name:
          description: Nazwa pola
          example: dodatkowe_pole
          type: string
        option_type:
          description: Wielokrotność wyboru (one/multiple - Tylko dla typu option)
          example: multiple
          type: string
        type:
          description: Typ pola (text/number/files/option/checkbox)
          example: option
          type: string
        values:
          description: Wartości (Tylko dla typów option i checkbox)
          example:
            - title: Tak
            - title: Nie
          type: array
      title: ProductsFieldsResponse
      type: object
    ProductOfferResponse:
      type: object
      properties:
        id: { type: integer, example: 1524, description: "ID rekordu w tabeli dedykowanej dla integracji" }
        product_id: { type: integer, example: 123, description: "ID produktu w systemie" }
        account_id: { type: integer, example: 10, description: "ID konta z tabeli external_accounts" }
        external_offer_id: { type: string, example: "748392011", description: "Zewnętrzny identyfikator oferty (offer_id)" }
        integration: { type: string, example: "allegro", description: "Typ integracji (allegro, marketplaces, externalshops)" }
    receipt_details:
      description: Szczegóły paragonu
      properties:
        bdo_number:
          description: Numer BDO
          example: '09175912365'
          type: string
        buyer:
          description: Dane nabywcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            email:
              description: Adres e-mail
              example: test@sellasist.pl
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            phone:
              description: Numer telefonu
              example: '123456789'
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        currency:
          description: Waluta w formacie ISO 3
          example: PLN
          type: string
        id:
          description: Identyfikator paragonu
          example: 2
          type: integer
        issue_date:
          description: Data wystawienia paragonu
          example: '2026-07-20'
          type: string
        lines:
          description: Pozycje na paragonie
          items:
            properties:
              cart_id:
                description: Identyfikator koszyka w zamówieniu Sellasist
                example: 55
                type: integer
              discount:
                description: Rabat
                example: 15
                type: integer
              id:
                description: Identyfikator pozycji
                example: 1
                type: integer
              name:
                description: Nazwa pozycji
                example: Szafka
                type: string
              price_gross:
                description: Cena jednostkowa brutto
                example: 12.3
                type: number
              price_net:
                description: Cena jednostkowa netto
                example: 10
                type: number
              product_id:
                description: Identyfikator produktu w Sellasist
                example: 123
                type: integer
              quantity:
                description: Ilość sztuk
                example: 3
                type: integer
              vat:
                description: Stawka VAT
                example: 23
                type: integer
            type: object
          type: array
        number:
          description: Numer paragonu
          example: RACH/1/1
          type: string
        order_id:
          description: Identyfikator zamówienia w Sellasist
          example: 123
          type: integer
        package_number:
          description: Numer listu przewozowego
          example: A201297929
          type: string
        paid:
          description: Wartość dokonanej już wpłaty
          example: 20.19
          type: number
        payment_method:
          description: Forma płatności
          example: Przelew
          type: string
        print_suspended:
          description: Wydruk zawieszony (true/false)
          example: true
          type: bool
        printed:
          description: Status wydruku (true/false)
          example: true
          type: bool
        sale_date:
          description: Data sprzedaży
          example: '2026-07-20'
          type: string
        seller:
          description: Dane sprzedawcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            bank_name:
              description: Nazwa banku
              example: Alior
              type: string
            bank_number:
              description: Numer konta bankowego
              example: 0000 0000 0000 0000 0000 0000
              type: string
            bic:
              description: BIC
              example: ALBPPLPW
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            iban:
              description: IBAN
              example: PL 0000 0000 0000 0000 0000 0000
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        series_id:
          description: Identyfikator serii
          example: 1
          type: integer
        total:
          description: Wartość paragonu
          example: 39.99
          type: number
      title: ReceiptDetails
      type: object
    receipt_line_request:
      description: Struktura pozycji na paragonie
      properties:
        cart_id:
          description: Identyfikator koszyka w zamówieniu Sellasist
          example: 55
          type: integer
        discount:
          description: Rabat
          example: 15
          type: integer
        name:
          description: Nazwa pozycji
          example: Szafka
          type: string
        price_gross:
          description: Cena jednostkowa brutto
          example: 12.3
          type: number
        price_net:
          description: Cena jednostkowa netto
          example: 10
          type: number
        product_id:
          description: Identyfikator produktu w Sellasist
          example: 123
          type: integer
        quantity:
          description: Ilość sztuk
          example: 3
          type: integer
        receipt_id:
          description: Identyfikator paragonu
          example: 1
          type: integer
        vat:
          description: Stawka VAT
          example: 23
          type: integer
      title: ReceiptLineRequest
      type: object
    receipt_request:
      description: Struktura paragonu
      properties:
        bdo_number:
          description: Numer BDO
          example: '09175912365'
          type: string
        buyer:
          description: Dane nabywcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            email:
              description: Adres e-mail
              example: test@sellasist.pl
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            phone:
              description: Numer telefonu
              example: '123456789'
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        currency:
          description: Waluta w formacie ISO 3
          example: PLN
          type: string
        issue_date:
          description: Data wystawienia paragonu
          example: '2026-07-20'
          type: string
        lines:
          description: Pozycje na paragonie
          items:
            properties:
              cart_id:
                description: Identyfikator koszyka w zamówieniu Sellasist
                example: 55
                type: integer
              discount:
                description: Rabat
                example: 15
                type: integer
              name:
                description: Nazwa pozycji
                example: Szafka
                type: string
              price_gross:
                description: Cena jednostkowa brutto
                example: 12.3
                type: number
              price_net:
                description: Cena jednostkowa netto
                example: 10
                type: number
              product_id:
                description: Identyfikator produktu w Sellasist
                example: 123
                type: integer
              quantity:
                description: Ilość sztuk
                example: 3
                type: integer
              vat:
                description: Stawka VAT
                example: 23
                type: integer
            type: object
          type: array
        number:
          description: Numer paragonu
          example: RACH/1/1
          type: string
        order_id:
          description: Identyfikator zamówienia w Sellasist
          example: 123
          type: integer
        package_number:
          description: Numer listu przewozowego
          example: A201297929
          type: string
        paid:
          description: Wartość dokonanej już wpłaty
          example: 20.19
          type: number
        payment_method:
          description: Forma płatności
          example: Przelew
          type: string
        print_suspended:
          description: Wydruk zawieszony (true/false)
          example: true
          type: bool
        printed:
          description: Status wydruku (true/false)
          example: true
          type: bool
        sale_date:
          description: Data sprzedaży
          example: '2026-07-20'
          type: string
        seller:
          description: Dane sprzedawcy
          properties:
            address:
              description: Adres
              example: ul. Testowa 14
              type: string
            bank_name:
              description: Nazwa banku
              example: Alior
              type: string
            bank_number:
              description: Numer konta bankowego
              example: 0000 0000 0000 0000 0000 0000
              type: string
            bic:
              description: BIC
              example: ALBPPLPW
              type: string
            city:
              description: Miasto
              example: Warszawa
              type: string
            country:
              description: Kod kraju ISO 2
              example: PL
              type: string
            iban:
              description: IBAN
              example: PL 0000 0000 0000 0000 0000 0000
              type: string
            name:
              description: Nazwa
              example: Jan Testowy
              type: string
            nip:
              description: NIP
              example: 822-19-90-318
              type: string
            postcode:
              description: Kod pocztowy
              example: 05-075
              type: string
          type: object
        total:
          description: Wartość paragonu
          example: 39.99
          type: number
      title: ReceiptRequest
      type: object
    response_orders_bulk_400:
      properties:
        message:
          description: Komunikat błędu
          example: Invalid input
          type: string
        status:
          description: Status
          example: ERROR
          type: string
      type: object
    response_orders_bulk_413:
      properties:
        message:
          description: Komunikat błędu
          example: Too many orders provided, the maximum quantity is 1000.
          type: string
        status:
          description: Status
          example: ERROR
          type: string
      type: object
    response_products_bulk_400:
      properties:
        message:
          description: Komunikat błędu
          example: Invalid input
          type: string
        status:
          description: Status
          example: ERROR
          type: string
      type: object
    response_products_bulk_413:
      properties:
        message:
          description: Komunikat błędu
          example: Too many products provided, the maximum quantity is 1000.
          type: string
        status:
          description: Status
          example: ERROR
          type: string
      type: object
    response_unauthorized:
      properties:
        code:
          description: Kod błędu
          example: '401'
          type: string
        error:
          description: Komunikat błędu
          example: Unknown user
          type: string
      type: object
    return:
      properties:
        date:
          description: Data
          example: '2026-07-20 12:25:43'
          type: string
        id:
          description: Identyfikator reklamacji
          example: 666
          type: number
        order_number:
          description: numer zamówienia
          example: '62'
          type: string
        return_number:
          description: numer zwrotu
          example: RMZ215042024
          type: string
        returned_products:
          description: Zwrócone produkty
          items:
            properties:
              id:
                description: Identyfikator produktu
                example: 81
                type: integer
              name:
                description: nazwa produktu
                example: patyczki
                type: string
              price_total:
                description: cena za wszystkie produkty
                example: '60.00'
                type: string
              quantity:
                description: liczba produktów
                example: '2.000'
                type: string
              return_value:
                description: kwota do zwrotu
                example: '30.00'
                type: string
              returned_value:
                description: kwota zwrócona
                example: '0.00'
                type: string
              status:
                description: status produktu
                example: Częściowo przyjęte
                type: string
              topic:
                example: 2
                type: integer
              unit_price:
                description: cena jednego produktu
                example: '30.00'
                type: string
            type: object
          type: array
        sale_doc_data:
          description: dane dokumentu sprzedażowego
          items:
            properties:
              city:
                description: miasto
                example: Warszawa
                type: string
              company_name:
                description: nazwa firmy
                example: firma
                type: string
              company_nip:
                description: nip
                example: 12312312323
                type: number
              country:
                description: kraj
                example: PL
                type: string
              description:
                description: dodatkowy komentarz
                example: komentarz
                type: string
              flat_number:
                description: numer mieszkania
                example: '3'
                type: string
              home_number:
                description: numer domu
                example: '24'
                type: string
              name:
                description: imie
                example: Jan
                type: string
              phone:
                description: numer telefonu
                example: 123456789
                type: number
              post_code:
                description: kod pocztowy
                example: 65-666
                type: string
              state:
                description: województwo
                example: Wielkopolska
                type: string
              street:
                description: ulica
                example: szkolna
                type: string
              surname:
                description: nazwisko
                example: Nowak
                type: string
            type: object
          type: array
        source:
          description: źródło zamówienia
          example: Sklep
          type: string
        status:
          description: status zwrotu
          example: Zgłoszenie przyjęte
          type: string
      title: Zwrot
      type: object
    returns:
      properties:
        date:
          description: Data
          example: '2026-07-20 12:25:43'
          type: string
        id:
          description: Identyfikator reklamacji
          example: 666
          type: number
        order_number:
          description: numer zamówienia
          example: '62'
          type: string
        return_number:
          description: numer zwrotu
          example: RMZ215042024
          type: string
        source:
          description: źródło zamówienia
          example: Sklep
          type: string
        status:
          description: status zwrotu
          example: Zgłoszenie przyjęte
          type: string
        shipment_price:
          description: kwota zwrotu przesyłki
          example: '12.00'
          type: float
      title: Zwroty
      type: object
    shipment_method_pricing_object:
      description: >-
        Cennik przesyłek (do wyboru 1 z 4: constant - cena stała, prices_by_sum
        - cena zależna od wartości zamówienia, prices_by_weight - cena zależna
        od wagi przesyłki, prices_by_weight_and_sum - cena zależna od obydwu
        czynników)
      properties:
        do_percent:
          description: Czy doliczać procentowo za płatność za pobraniem 1/0
          example: 1
          type: integer
        free:
          description: >-
            (W przypadku by_sum, by_weight, by_weight_and_sum) Od jakiej kwoty
            wysyłka jest darmowa
          example: 1
          type: float
        free_from:
          description: (W przypadku constant) Od jakiej kwoty wysyłka jest darmowa
          example: 1
          type: float
        from:
          description: >-
            (W przypadku by_sum) Zakres cen produktów (od) (W przypadku
            by_weight) Zakres wagi przesyłki (minimalna)
          example: 1
          type: float
        overweight_price:
          description: Kwota dopłaty przy przekroczeniu wagi
          example: 10
          type: float
        overweight_step:
          description: Krok przy przekroczeniu wagi
          example: 10
          type: float
        overweight_value:
          description: Minimalna waga do klasyfikacji jako przekroczenie wagi
          example: 10
          type: float
        percent:
          description: Ile procent doliczyć za płatność za pobraniem
          example: 10
          type: float
        price:
          description: Cena wysyłki
          example: 1
          type: float
        sum_from:
          description: (W przypadku by_weight_and_sum)  Zakres cen produktów (od)
          example: 1
          type: float
        sum_to:
          description: (W przypadku by_weight_and_sum) Zakres cen produktów (do)
          example: 10
          type: float
        to:
          description: >-
            (W przypadku by_sum) Zakres cen produktów (do) (W przypadku
            by_weight) Zakres wagi przesyłki (maksymalna)
          example: 1
          type: float
        weight_from:
          description: (W przypadku by_weight_and_sum) Zakres wagi przesyłki (minimalna)
          example: 1
          type: float
        weight_to:
          description: (W przypadku by_weight_and_sum) Zakres wagi przesyłki (maksymalna)
          example: 10
          type: float
      title: ShipmentMethodPricingObject
      type: object
    shipment_method_request:
      properties:
        barcode:
          description: kod kreskowy
          example: ''
          type: string
        free_from:
          description: Kwota od której wysyłka jest darmowa
          example: 299.99
          type: float
        integration:
          description: Nazwa metody dostawy (nazwa technicznego klucza integracyjnego)
          example: sendegoinpost
          type: string
        order:
          description: numer porządkowy/sortowania
          example: ''
          type: integer
        payments:
          example:
            - 1
            - 2
          items:
            payment_id:
              description: id kanałów płatności
              example: 1
              type: integer
          type: array
        price:
          description: cena dostawy
          example: 12.99
          type: float
        price_type:
          description: >-
            Metoda wyceny kosztów wysyłki
            (constant/by_weight/by_sum/by_weight_and_sum)
          example: constant
          type: string
        prices_by_sum:
          example:
            - free: 99.99
              from: 1
              price: 10
              to: 10
          items: shipment_method_pricing_object
          type: array
        prices_by_sum_disabled_over_scope:
          description: ''
          example: 1
          type: integer
        prices_by_weight:
          example:
            - from: 1
              price: 10
              to: 10
          items: shipment_method_pricing_object
          type: array
        prices_by_weight_and_sum:
          example:
            - price: 10
              sum_from: 1
              sum_to: 10
              weight_from: 1
              weight_to: 10
          items: shipment_method_pricing_object
          type: array
        receive_point:
          description: >-
            Czy paczkę można odebrać w punkcie odbioru?
            (on/off/default/required)
          example: default
          type: string
        shops:
          example:
            - 1
            - 2
          items:
            shop_id:
              description: id sklepu
              example: 1
              type: integer
          type: array
        status:
          description: czy metoda dostawy jest dostępna 1/0
          example: 1
          type: integer
        symbol:
          description: symbol
          example: ''
          type: string
        title:
          description: Nazwa metody dostawy
          example: Paczkomat
          type: string
        translations:
          example:
            - text: <p>{account}</p>
              title: test
          items: shipment_method_translation_object
          type: array
      title: ShipmentMethodRequest
      type: object
    shipment_method_translation_object:
      properties:
        language_id:
          description: Identyfikator języka, pole nieobowiązkowe
          example: 2
          type: integer
        text:
          description: Treść wyświetlana w ostatnim kroku koszyka
          example: '{account}'
          type: string
        title:
          description: Nazwa metody dostawy
          example: Test
          type: string
      title: ShipmentMethodTranslationObject
      type: object
    shipments_response:
      properties:
        ordershipment_id:
          description: Identyfikator listu przewozowego
          example: 1
          type: integer
        service:
          description: ''
          example: INPOST - Paczka kurierska
          type: string
        tracking_number:
          description: Numer do śledzenia przesyłki
          example: '603236276201506110294169'
          type: string
      title: ShipmentsResponse
      type: object
    storage_method_request:
      properties:
        address:
          description: Adres magazynu
          example: ul. Trawiasta 58, 04-607 Warszawa
          type: string
        data_url:
          description: Adres URL do bramki XML do zaczytywania danych
          example: https://url.esprzedaz.com/data.xml
          type: string
        delivery_time:
          description: Czas dostawy (w dniach) z magazynu
          example: 3
          type: integer
        external_id:
          description: Identyfikator zewnętrzny magazynu
          example: 1
          type: integer
        id:
          description: Identyfikator magazynu tylko w zapytaniu GET
          example: 1
          type: integer
        supply_price:
          description: Cena dostawy z magazynu
          example: 10.99
          type: float
        title:
          description: Nazwa magazynu
          example: Centrum logistyczne Sellasist WA01
          type: string
      title: StorageMethodRequest
      type: object
    storages_product_request:
      properties:
        id:
          description: Identyfikator wpisu stanu magazynowego tylko w GET, PUT
          example: 4812
          type: string
        product_variant_id:
          description: Identyfikator wariantu produktu
          example: 199
          type: integer
        quantity:
          description: Ilość sztuk dostępnych w tym stanie magazynowym
          example: 3
          type: number
        rack_id:
          description: Numer identyfikacyjny szafy w magazynie
          example: 232
          type: number
        shelf_id:
          description: Numer identyfikacyjny półki w szafie
          example: 232
          type: number
        storage_id:
          description: Identyfikator magazynu
          example: 14
          type: integer
      title: StoragesProductRequest
      type: object
    suppliers_product:
      properties:
        quantity:
          description: Ilość sztuk dostępnych w hurtowni
          example: 1
          type: number
        supplier_id:
          description: Identyfikator hurtowni
          example: 5
          type: integer
      title: SuppliersProduct
      type: object
    update_image_request:
      description: Struktura obrazu
      properties:
        alt:
          description: Tekst alternatywny
          example: alternatywny tekst obrazu produktowego 1
          type: string
        order:
          description: Kolejność wyświetlania zdjęć w danym produkcie
          example: 1
          type: integer
        title:
          description: Nazwa produktu
          example: Obrazek produktu 1
          type: string
      title: UpdateImageRequest
      type: object
    variants:
      properties:
        group_id:
          example: 1
          type: integer
        name:
          example: Przykładowa nazwa wariantu
          type: string
      title: Variants
      type: object
    variants_groups:
      properties:
        name:
          example: Przykładowa nazwa grupy
          type: string
      title: VariantsGroups
      type: object
    variants_properties:
      properties:
        name:
          example: Przykładowa nazwa właściwości wariantu
          type: string
        variant_id:
          example: 1
          type: integer
      title: VariantsProperties
      type: object
    variants_properties_object:
      properties:
        variants_property_id:
          example: 1
          type: integer
      title: VariantsPropertyObject
      type: object
    vat_rate_data:
    title: VatRateData
    type: object
    properties:
      id:
        type: integer
        example: 2
        description: "Identyfikator stawki VAT"
      vat_country_id:
        type: integer
        example: 1
        description: "Identyfikator kraju stawki VAT"
      name:
        type: string
        example: 8
        description: "Wartość stawki VAT"
      standard:
        type: bool
        example: false
        description: "Czy stawka jest standardowa w danym kraju"
  securitySchemes:
    apiKey:
      description: Klucz API Sellasist
      in: header
      name: apiKey
      type: apiKey
security:
  - apiKey: [ ]