> ## Documentation Index
> Fetch the complete documentation index at: https://developer.jtl-software.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Connector

> Partially updates an existing JTL-Connector account. Every field is optional: a field present in the request body is changed, a field left out keeps its persisted value (May<T> PATCH semantics). The writable field set is the writable half of CreateConnector, property for property, and the response is the same full Connector object - create an account, then patch any subset of the same fields. Only locally editable data is writable here: tShop base data, the connection credentials and tShopKonfiguration. The connector-driven sections (Languages, Currencies, Features, TaxRates, ServerInfo) are response-only and are never accepted as request input, for the same reason as in CreateConnector. Changing Url or ApiToken is not a local write: the persisted metadata mirror describes one specific endpoint, so a connection change is verified against the connection the account would end up with, before anything is written, and the request fails without persisting when that handshake does not succeed. The mirror itself is not refreshed here - the shared refresh service is WAWI-91762 and has no code yet, so until it lands the mirror is brought up to date by RefreshConnector or the next Abgleich. A request that changes neither - or submits the values the account already has - performs a purely local persist with no live call. There is deliberately no ?simulate switch: testing a connection before an account exists is CreateConnector's ?simulate=true, and testing an existing account's credentials is AuthenticateConnector (WAWI-90496). This monolithic PATCH deliberately overlaps the section-based save family (WAWI-90485 configuration, WAWI-90494 credentials); the team decided on 2026-08-26 to build both and remove one later.



## OpenAPI

````yaml /openapi/erp/2.1.json patch /v2/sales-channels/{salesChannelId}/connector
openapi: 3.0.0
info:
  title: JTL-WAWI API (Cloud)
  description: "JTL-Wawi-Version: 2.2.0-beta.601+Sha.59ba796\r\n# Introduction\r\n\r\nWelcome to the JTL-WAWI technical API documentation. This guide is here to help developers understand how our REST API works and how it can be integrated into your existing systems. We'll delve into the details of authentication and data manipulation processes, providing clear examples along the way. Whether you're a developer or an IT professional, this documentation aims to give you a practical understanding, laying the groundwork for effectively using the JTL-WAWI API to enhance your processes.\r\n\r\n# Authentication\r\n\r\nYou register your application with the API by sending a POST request with the required information and corresponding keys. You can find the exact request details at https://developer.jtl-software.com/products/erp/swagger/appregistration. This information has to include the following:\r\n\r\n* AppId\r\n* DisplayName\r\n* Description\r\n* Version\r\n* ProviderName\r\n* ProviderWebsite\r\n* MandatoryApiScopes\r\n\r\nThis data is crucial for identifying and registering your application with the API. The API uses it to generate a temporary authentication ID that allows your application to access the necessary resources. After successful validation of this information, you will receive the API key required for future authentication and API requests.\r\n\r\nBefore you can begin the registration process, you must open JTL-Wawi (new interface) and start the registration process under 'Admin->App registration'. Only at this point are you authorised to send the first API call. This step in JTL-Wawi ensures that your application is properly registered and has permission to use the API.\r\n\r\nThe API will send you an authentication ID in the form of a token. Once you have received this token and successfully completed the registration in JTL-Wawi, you will send another request to the API by including this authentication ID in the URL path.\r\n\r\nAfter successful validation of this second request by the API and confirmation of the correct information, you will be provided with the actual API key. It is important to note that this API key will not be displayed again!\r\n\r\nThis API key will be used in the future to authenticate requests to the API. It is of utmost importance that you securely store the API key upon receipt, as it cannot be retrieved from any other location in the system."
  contact:
    name: JTL-Software-GmbH
    url: https://developer.jtl-software.com/
    email: partner@jtl-software.com
  version: '2.1'
  x-application-version: 2.2.0.0
servers:
  - url: https://api.jtl-cloud.com/erp
    description: Production Environment Cloud API Gateway
security: []
tags:
  - name: WMS
    description: >-
      <p data-section-id='tag/WMS' class='stable_summary'></p>Query all pick
      lists for a specific wms warehouse that are not completed.
  - name: Wawi App
    description: >-
      <p data-section-id='tag/Wawi App' class='stable_summary'></p>Get a
      specific customer
  - name: Warehouses
    description: >-
      <p data-section-id='tag/Warehouses' class='stable_summary'></p>Queries all
      storage locations for a given warehouse.
  - name: Units
    description: Development
  - name: Transaction Status
    description: >-
      <p data-section-id='tag/Transaction Status'
      class='stable_summary'></p>Queries all transaction statuses for a sales
      order.
  - name: Tax
    description: >-
      <p data-section-id='tag/Tax' class='stable_summary'></p>Returns the tax
      rate for the given item.
  - name: Inventory
    description: >-
      <p data-section-id='tag/Inventory' class='stable_summary'></p>Queries
      stocks for a specific item, warehouse or storage location.
  - name: Sales Order
    description: Planned
  - name: Sales Invoice Correction
    description: Planned
  - name: Return
    description: >-
      <p data-section-id='tag/Return' class='beta_summary'></p>Create a new
      return with associated items and packages.
  - name: Item
    description: >-
      <p data-section-id='tag/Item' class='beta_summary'></p>Queries all
      responsible persons.
  - name: Refund
    description: Planned
  - name: Property
    description: >-
      <p data-section-id='tag/Property' class='stable_summary'></p>Queries all
      properties of items.
  - name: Printer
    description: >-
      <p data-section-id='tag/Printer' class='beta_summary'></p>Retrieves all
      installed printers.
  - name: Master Data
    description: >-
      <p data-section-id='tag/Master Data' class='stable_summary'></p>Queries
      all on hold reasons for sales orders.
  - name: Manufacturer
    description: Development
  - name: Label
    description: Development
  - name: Sales Invoice
    description: Planned
  - name: Info
    description: >-
      <p data-section-id='tag/Info' class='stable_summary'></p>Returns the
      status of the API.
  - name: Features
    description: >-
      <p data-section-id='tag/Features' class='stable_summary'></p>Returns the
      available feature sets with release state and API version.
  - name: Extensibility
    description: Planned
  - name: Shipment
    description: Development
  - name: Delivery Note
    description: Planned
  - name: Custom Field
    description: Development
  - name: Customer
    description: >-
      <p data-section-id='tag/Customer' class='stable_summary'></p>Deletes a
      specific customer.
  - name: Authentication
    description: >-
      <p data-section-id='tag/Authentication'
      class='deprecated_summary'></p>DEPRECATED seit Wawi 2.2.0: No-Op. Seit
      Wawi 2.1.0 registriert sich die Wawi selbst per JWT.
  - name: Attribute
    description: Development
  - name: Sales Quotation
    description: >-
      <p data-section-id='tag/Sales Quotation' class='beta_summary'></p>Execute
      the printing of a sales quotation
  - name: Production
  - name: Resources
  - name: Company
  - name: Sales Orders
  - name: Marketplace Order
  - name: Marketplace Offer
  - name: Marketplace Invoicing
  - name: Sales Channel
  - name: Payment
  - name: Warehouse Assistant
  - name: Worker
paths:
  /v2/sales-channels/{salesChannelId}/connector:
    patch:
      tags:
        - wawi
        - Sales Channel
      summary: Update Connector
      description: >-
        Partially updates an existing JTL-Connector account. Every field is
        optional: a field present in the request body is changed, a field left
        out keeps its persisted value (May<T> PATCH semantics). The writable
        field set is the writable half of CreateConnector, property for
        property, and the response is the same full Connector object - create an
        account, then patch any subset of the same fields. Only locally editable
        data is writable here: tShop base data, the connection credentials and
        tShopKonfiguration. The connector-driven sections (Languages,
        Currencies, Features, TaxRates, ServerInfo) are response-only and are
        never accepted as request input, for the same reason as in
        CreateConnector. Changing Url or ApiToken is not a local write: the
        persisted metadata mirror describes one specific endpoint, so a
        connection change is verified against the connection the account would
        end up with, before anything is written, and the request fails without
        persisting when that handshake does not succeed. The mirror itself is
        not refreshed here - the shared refresh service is WAWI-91762 and has no
        code yet, so until it lands the mirror is brought up to date by
        RefreshConnector or the next Abgleich. A request that changes neither -
        or submits the values the account already has - performs a purely local
        persist with no live call. There is deliberately no ?simulate switch:
        testing a connection before an account exists is CreateConnector's
        ?simulate=true, and testing an existing account's credentials is
        AuthenticateConnector (WAWI-90496). This monolithic PATCH deliberately
        overlaps the section-based save family (WAWI-90485 configuration,
        WAWI-90494 credentials); the team decided on 2026-08-26 to build both
        and remove one later.
      operationId: Connector_UpdateConnector
      parameters:
        - name: salesChannelId
          in: path
          required: true
          description: Sales channel id of the connector account to update.
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          description: >-
            Optional, client-generated key for deduplicating repeated write
            requests. A repeated request with the same key returns the
            originally recorded result instead of executing the effect again.
          schema:
            type: string
            maxLength: 255
            minLength: 1
        - name: x-tenant-id
          in: header
          required: true
          schema:
            type: string
            format: uuid
          description: The tenant ID for the target ERP instance.
      requestBody:
        x-name: UpdateConnectorRequest
        description: ''
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/JTL.Wawi.Verkaufskanaele.PublicApi.Endpoints.V2.Connector.UpdateConnectorRequest
        required: true
        x-position: 1
      responses:
        '200':
          description: >-
            The connector account was updated. The body is the same full
            Connector object CreateConnector returns, read back after the write,
            so the caller sees the actual post-conditions - normalised values,
            the fields it did not send, and the connector-driven sections. The
            metadata sections are the persisted ones; a connection change
            verifies the new connection but does not re-mirror the metadata yet
            (WAWI-91762).
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.Connector
        '400':
          description: >-
            Request validation failed - a field that was present carries an
            invalid value (for example a malformed ShippingCountryIso, a blank
            ApiToken or Name, a negative count). Fields left out of the request
            are never validated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FastEndpoints.ProblemDetails'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FastEndpoints.ProblemDetails'
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FastEndpoints.ProblemDetails'
        '404':
          description: >-
            Malformed or invalid sales channel id, or no Connector account
            exists for the specified sales channel id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FastEndpoints.ProblemDetails'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FastEndpoints.ProblemDetails'
        '502':
          description: >-
            Only reachable when the request changed the connection data. The
            Connector endpoint could not be reached, rejected the request, or
            returned an invalid response; machine-readable error code in the
            problem details, same three values as CreateConnector:
            connector-authentication-failed (API token rejected, wire error
            790), connector-unreachable, connector-invalid-response. Nothing is
            persisted - neither the local fields nor the metadata mirror.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FastEndpoints.ProblemDetails'
        '504':
          description: >-
            Only reachable when the request changed the connection data: the
            connector endpoint did not respond within the request timeout.
            Nothing is persisted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FastEndpoints.ProblemDetails'
      security:
        - oauth2-authorization-code:
            - saleschannels.write
        - oauth2-client-credentials:
            - saleschannels.write
components:
  schemas:
    JTL.Wawi.Verkaufskanaele.PublicApi.Endpoints.V2.Connector.UpdateConnectorRequest:
      type: object
      description: >-
        Request model for UpdateConnector command endpoint.

        Route parameters bind from the route, query parameters from the query
        string, everything else from the body.
      additionalProperties: false
      properties:
        url:
          type: string
          description: >-
            URL of the connector endpoint. Omit to leave unchanged. Connection
            data - submitting a different value triggers the live handshake,
            which must succeed before anything is written.
        apiToken:
          type: string
          description: >-
            API token used to authenticate against the connector endpoint. Omit
            to leave unchanged. Write-only - never echoed back, and no response
            model of this API exposes it. Connection data - a new token triggers
            the live handshake, which must succeed before anything is written,
            and discards any Connector session cached for this account so the
            next call authenticates with the new token.
        name:
          type: string
          description: Name of the connector account. Omit to leave unchanged.
        companyId:
          $ref: '#/components/schemas/JTL.Data.Contracts.Keys.FirmaKey'
          description: >-
            ID of the company the connector account belongs to. Omit to leave
            unchanged. Cannot be cleared - the company is mandatory at creation
            and is the company whose tSteuersatz the endpoint-reported taxrates
            are validated against.
          example: b45f6432-2462-4c6f-b00f-1d9d01000000
        isActive:
          type: boolean
          description: Connector account is active. Omit to leave unchanged.
        isLocked:
          type: boolean
          description: Connector account is locked. Omit to leave unchanged.
        rootCategoryId:
          $ref: '#/components/schemas/JTL.Data.Contracts.Keys.KategorieKey'
          description: >-
            Root category for imported items. Omit to leave unchanged; send null
            to clear it.
          example: b45f6432-2462-4c6f-b00f-1d9d01000000
        useShopOrderNumber:
          type: boolean
          description: >-
            Use the shop-assigned order number instead of the Wawi-generated
            one. Omit to leave unchanged.
        canImport:
          type: boolean
          description: >-
            The connector account is allowed to import data from the endpoint.
            Omit to leave unchanged.
        shouldImportItemsAndCategories:
          type: boolean
          description: Items and categories are imported. Omit to leave unchanged.
        shouldImportOrdersAndCustomers:
          type: boolean
          description: Orders and customers are imported. Omit to leave unchanged.
        shouldImportImages:
          type: boolean
          description: Item images are imported. Omit to leave unchanged.
        canUpload:
          type: boolean
          description: >-
            The connector account is allowed to upload data to the endpoint.
            Omit to leave unchanged.
        shouldUploadItemComplete:
          type: boolean
          description: >-
            Items are uploaded completely, rather than price/stock-restricted.
            Omit to leave unchanged.
        shouldUploadItemPriceRestricted:
          type: boolean
          description: Item uploads are restricted to prices only. Omit to leave unchanged.
        shouldUploadItemStockRestricted:
          type: boolean
          description: Item uploads are restricted to stock only. Omit to leave unchanged.
        shouldUploadCustomers:
          type: boolean
          description: Customer data is uploaded. Omit to leave unchanged.
        shouldUploadImages:
          type: boolean
          description: Images are uploaded. Omit to leave unchanged.
        shouldRefreshExistingItems:
          type: boolean
          description: >-
            Existing items are merged/refreshed rather than only added. Omit to
            leave unchanged.
        shouldRefreshCustomers:
          type: boolean
          description: Existing customer data is refreshed. Omit to leave unchanged.
        shouldDeleteImagesOnImport:
          type: boolean
          description: Images are deleted on import. Omit to leave unchanged.
        shouldWawiCalculateTaxRate:
          type: boolean
          description: >-
            The Wawi calculates the tax rate for items, rather than taking the
            endpoint-reported one. Omit to leave unchanged.
        shouldWawiCalculateTaxRateForShipping:
          type: boolean
          description: >-
            The Wawi calculates the tax rate for shipping, rather than taking
            the endpoint-reported one. Omit to leave unchanged.
        shippingCountryIso:
          type: string
          description: >-
            The shipping/departure country as an ISO 3166-1 alpha-2 country
            code. Omit to leave unchanged; send null to clear it. Canonical form
            is UPPERCASE (ADR-85); matching is case-insensitive.
        entityCount:
          type: integer
          description: >-
            Maximum number of entities transferred per run. Omit to leave
            unchanged; send null for unrestricted.
          format: int32
        pullCount:
          type: integer
          description: >-
            Maximum pull count per sync run. Omit to leave unchanged. Not
            nullable - the column carries a definite value, so there is no
            unrestricted state to express.
          format: int32
        imagesCount:
          type: integer
          description: >-
            Maximum number of images transferred per run. Omit to leave
            unchanged; send null for unrestricted.
          format: int32
        maximumTransferRate:
          type: number
          description: >-
            Maximum transfer rate for uploads, in megabytes. Omit to leave
            unchanged; send null for unrestricted.
          format: decimal
        quickSyncCount:
          type: integer
          description: >-
            Maximum quick-sync count per sync run. Omit to leave unchanged. Not
            nullable, for the same reason as PullCount.
          format: int32
        sendOnlyAssignedManufacturers:
          type: boolean
          description: >-
            Manufacturer data sent to the endpoint is filtered to only assigned
            manufacturers. Omit to leave unchanged.
    JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.Connector:
      type: object
      description: >-
        Full result of the CreateConnector live pipeline: the created (or, for
        ?simulate=true, merely verified) connector account together with its
        complete metadata mirror. Base data and configuration are the persisted
        DB state (null/default-filled from the WPF editor defaults where the
        request omitted them); the connector-driven sections (Languages,
        Currencies, Features, TaxRates, ServerInfo) are always sourced live from
        the endpoint handshake, ISO-identified per the ADR-85 pattern
        established by ConnectorCurrency. Deliberate ADR-4 deviation: ADR-4 asks
        Create commands to return only the created Id, but this command returns
        the full object instead, because ?simulate=true never persists anything
        and therefore has no Id to return - the live
        handshake/taxrate-validation result (Languages, Currencies, Features,
        TaxRates, ServerInfo) is the only useful response for that preview path,
        so the same shape is used for the persisted case too rather than
        modeling two different response contracts. Known limitations: (1)
        RootCategoryId and UseShopOrderNumber are modeled here rather than
        folded into ConnectorAccount/ConnectorConfiguration, because those two
        shared GET models are out of this ticket's scope - reconcile once
        WAWI-91760 lands; (2) synchronisation settings (send/receive/delete per
        object type) are deliberately NOT included here -
        ConnectorSynchronisationEntityType is a 90+ value enum owned by
        JTL.Wawi.Connector.Core.Contracts, and duplicating it into this response
        ahead of WAWI-91760's actual mapping design risked a stale/incorrect
        mirror; use the existing QueryConnectorSynchronisationSettings endpoint
        for now and fold it in here once the orchestration lands.
      additionalProperties: false
      required:
        - isActive
        - isLocked
        - canImport
        - shouldImportItemsAndCategories
        - shouldImportOrdersAndCustomers
        - shouldImportImages
        - canUpload
        - shouldUploadItemComplete
        - shouldUploadItemPriceRestricted
        - shouldUploadItemStockRestricted
        - shouldUploadCustomers
        - shouldUploadImages
        - shouldRefreshExistingItems
        - shouldRefreshCustomers
        - shouldDeleteImagesOnImport
        - shouldWawiCalculateTaxRate
        - shouldWawiCalculateTaxRateForShipping
        - pullCount
        - quickSyncCount
        - sendOnlyAssignedManufacturers
        - useShopOrderNumber
        - languages
        - currencies
        - features
        - taxRates
        - serverInfo
      properties:
        salesChannelId:
          type: string
          description: >-
            Sales channel id of this connector account. Null when the request
            used ?simulate=true - no account was persisted, so no id could be
            assigned.
        name:
          type: string
          description: Name of the connector account.
        url:
          type: string
          description: URL of the connector endpoint.
        isActive:
          type: boolean
          description: Connector account is active.
        isLocked:
          type: boolean
          description: Connector account is locked.
        companyId:
          $ref: '#/components/schemas/JTL.Data.Contracts.Keys.FirmaKey'
          description: ID of the company the connector account belongs to.
        canImport:
          type: boolean
          description: The connector account is allowed to import data from the endpoint.
        shouldImportItemsAndCategories:
          type: boolean
          description: Items and categories are imported.
        shouldImportOrdersAndCustomers:
          type: boolean
          description: Orders and customers are imported.
        shouldImportImages:
          type: boolean
          description: Item images are imported.
        canUpload:
          type: boolean
          description: The connector account is allowed to upload data to the endpoint.
        shouldUploadItemComplete:
          type: boolean
          description: Items are uploaded completely, rather than price/stock-restricted.
        shouldUploadItemPriceRestricted:
          type: boolean
          description: Item uploads are restricted to prices only.
        shouldUploadItemStockRestricted:
          type: boolean
          description: Item uploads are restricted to stock only.
        shouldUploadCustomers:
          type: boolean
          description: Customer data is uploaded.
        shouldUploadImages:
          type: boolean
          description: Images are uploaded.
        shouldRefreshExistingItems:
          type: boolean
          description: Existing items are merged/refreshed rather than only added.
        shouldRefreshCustomers:
          type: boolean
          description: Existing customer data is refreshed.
        shouldDeleteImagesOnImport:
          type: boolean
          description: Images are deleted on import.
        shouldWawiCalculateTaxRate:
          type: boolean
          description: >-
            The Wawi calculates the tax rate for items, rather than taking the
            endpoint-reported one.
        shouldWawiCalculateTaxRateForShipping:
          type: boolean
          description: >-
            The Wawi calculates the tax rate for shipping, rather than taking
            the endpoint-reported one.
        maximumTransferRate:
          type: number
          description: >-
            Maximum transfer rate for uploads, in megabytes, or null if
            unrestricted.
          format: decimal
        imagesCount:
          type: integer
          description: >-
            Maximum number of images transferred per run, or null if
            unrestricted.
          format: int32
        entityCount:
          type: integer
          description: >-
            Maximum number of entities transferred per run, or null if
            unrestricted.
          format: int32
        pullCount:
          type: integer
          description: Maximum pull count per sync run.
          format: int32
        quickSyncCount:
          type: integer
          description: Maximum quick-sync count per sync run.
          format: int32
        sendOnlyAssignedManufacturers:
          type: boolean
          description: >-
            Manufacturer data sent to the endpoint is filtered to only assigned
            manufacturers.
        shippingCountryIso:
          type: string
          description: >-
            The shipping/departure country as an ISO 3166-1 alpha-2 country
            code, or null if not set. Canonical form is UPPERCASE (ADR-85);
            matching is case-insensitive.
        dummyCategoryId:
          $ref: '#/components/schemas/JTL.Data.Contracts.Keys.KategorieKey'
          description: >-
            Fallback category for uncategorized imported items, or null if not
            set.
        rootCategoryId:
          $ref: '#/components/schemas/JTL.Data.Contracts.Keys.KategorieKey'
          description: Root category for imported items, or null if not set.
        useShopOrderNumber:
          type: boolean
          description: >-
            The shop-assigned order number is used instead of the Wawi-generated
            one.
        languages:
          type: array
          description: >-
            Languages available in the Wawi, annotated with the
            assignment/default state reported by the connector endpoint's live
            handshake.
          items:
            $ref: >-
              #/components/schemas/JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorLanguage
        currencies:
          type: array
          description: >-
            ISO 4217 currencies known to the Wawi, annotated with the
            assignment/default state reported by the connector endpoint's live
            handshake.
          items:
            $ref: >-
              #/components/schemas/JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorCurrency
        features:
          type: array
          description: >-
            Every known connector feature, each marked whether the connector
            endpoint reported it as enabled.
          items:
            $ref: >-
              #/components/schemas/JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorFeatureListItem
        taxRates:
          type: array
          description: >-
            Taxrates reported by the connector endpoint's live handshake, each
            merged with the internal Wawi taxrate it was validated against.
          items:
            $ref: >-
              #/components/schemas/JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorTaxRate
        serverInfo:
          $ref: >-
            #/components/schemas/JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorServerInfo
          description: >-
            Live-only metadata about the connected endpoint's platform and
            protocol version, as reported by its handshake.
    FastEndpoints.ProblemDetails:
      type: object
      additionalProperties: false
      properties:
        type:
          type: string
          default: https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1
        title:
          type: string
          default: One or more validation errors occurred.
        status:
          type: integer
          format: int32
          default: 400
        instance:
          type: string
          default: /api/route
        traceId:
          type: string
          default: 0HMPNHL0JHL76:00000001
        detail:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/FastEndpoints.ProblemDetails_Error'
    JTL.Data.Contracts.Keys.FirmaKey:
      type: string
      description: Represents a key for identifying a firm within the application.
      format: uuid
      example: b45f6432-2462-4c6f-b00f-1d9d01000000
      additionalProperties: false
    JTL.Data.Contracts.Keys.KategorieKey:
      type: string
      format: uuid
      example: b45f6432-2462-4c6f-b00f-1d9d01000000
      additionalProperties: false
    JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorLanguage:
      type: object
      description: >-
        A single language available in the Wawi in the context of a connector
        account.
      additionalProperties: false
      required:
        - iso
        - isAssigned
        - isDefault
      properties:
        iso:
          type: string
          description: >-
            ISO 639-1 code of the language (lowercase). Identifies the language
            (ADR-85) - languages are standardized reference data, so no separate
            surrogate id is exposed.
        nameGerman:
          type: string
          description: German name of the language.
        nameEnglish:
          type: string
          description: English name of the language.
        isAssigned:
          type: boolean
          description: Language is currently assigned to the connector account.
        isDefault:
          type: boolean
          description: Language is the connector account's default language.
    JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorCurrency:
      type: object
      description: >-
        A single ISO 4217 currency known to the Wawi, in the context of a
        connector account, including its assignment/default state.
      additionalProperties: false
      required:
        - currencyCode
        - codeSource
        - isAssigned
        - isDefault
      properties:
        currencyCode:
          type: string
          description: >-
            Code of the currency in ISO 4217 alpha-3 form, uppercase. This is
            the identifier of the resource (ADR-85) - the internal surrogate key
            (kWaehrung) is not exposed. Only the FORM of the code is validated;
            membership in the ISO 4217 register is not verified, because the
            Wawi ships no register. Responses always carry the canonical form
            (uppercase). Currencies whose code does not match that form are not
            exposed by this endpoint; the x-prefixed private-use namespace is
            reserved for them.
        codeSource:
          $ref: >-
            #/components/schemas/JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.CurrencyCodeSource
          description: >-
            Source of CurrencyCode - standardized ISO 4217 code or
            tenant-defined code. Always Iso for now, because only codes in ISO
            4217 alpha-3 form are returned; a tenant-defined code that happens
            to have that form is therefore reported as Iso. Distinguishing the
            two requires the code registry from the pending ADR-85
            implementation tickets.
        name:
          type: string
          description: Name of the currency.
        isAssigned:
          type: boolean
          description: Currency is assigned to the connector account.
        isDefault:
          type: boolean
          description: Currency is the connector account's default currency.
    JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorFeatureListItem:
      type: object
      description: >-
        A single connector feature together with its configuration state for one
        connector account. The list covers every known feature, so a disabled
        feature is reported as well rather than being omitted.
      additionalProperties: false
      required:
        - feature
        - isEnabled
      properties:
        feature:
          $ref: >-
            #/components/schemas/JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorFeature
          description: >-
            The connector feature this entry describes. Always a single feature,
            never a combination.
        isEnabled:
          type: boolean
          description: >-
            The feature is enabled for the connector account. A connector
            account without any persisted feature configuration reports every
            feature as false.
    JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorTaxRate:
      type: object
      description: >-
        A single taxrate reported by the Connector endpoint's live handshake,
        merged with the internal Wawi taxrate it was validated against.
        Connector-driven, response-only - never accepted as request input. Every
        entry is guaranteed to carry a resolved TaxRateId, because
        CreateConnector rejects the request with 400 if any endpoint-reported
        taxrate does not exist in the chosen company's tSteuersatz.
      additionalProperties: false
      required:
        - rate
        - taxRateId
      properties:
        rate:
          type: number
          description: The tax rate percentage as reported by the endpoint.
          format: decimal
        taxRateId:
          $ref: '#/components/schemas/JTL.Data.Contracts.Keys.SteuersatzKey'
          description: >-
            ID of the internal Wawi taxrate (dbo.tSteuersatz) this endpoint rate
            was validated against.
    JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorServerInfo:
      type: object
      description: >-
        Live-only, non-persisted metadata about the connected endpoint's
        software, reported by its handshake (init call). Never part of a
        DB-backed read - only present on a live pipeline result such as
        CreateConnector.
      additionalProperties: false
      required:
        - isOldConnector
      properties:
        platformName:
          type: string
          description: Name of the endpoint's platform.
        platformVersion:
          type: string
          description: Version of the endpoint's platform.
        protocolVersion:
          type: string
          description: Version of the Connector RPC protocol spoken by the endpoint.
        endpointVersion:
          type: string
          description: Version of the JTL-Connector endpoint plugin itself.
        isOldConnector:
          type: boolean
          description: The endpoint reported a legacy Connector protocol generation.
    FastEndpoints.ProblemDetails_Error:
      type: object
      additionalProperties: false
      properties:
        name:
          type: string
          default: Error or field name
        reason:
          type: string
          default: Error reason
        code:
          type: string
        severity:
          type: string
    JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.CurrencyCodeSource:
      type: integer
      description: 0 = Iso, 1 = UserAssigned
      format: int32
      x-enumNames:
        - Iso
        - UserAssigned
      enum:
        - 0
        - 1
    JTL.Wawi.Verkaufskanaele.PublicApi.DataTransferObjects.V2.Connector.ConnectorFeature:
      type: integer
      description: >-
        1 = ChildVariationsFirst, 2 = PartialPaymentPossible, 4 =
        OrderUpdatePossible, 8 = OrderReactivationPossible, 16 =
        SupportsArticleImages, 32 = SupportsCategoryImages, 64 =
        SupportsManufacturerImages, 128 = SupportsAttributeImages, 256 =
        SupportsAttributeValueImages, 512 = SupportsConfigGroupImages, 1024 =
        SupportsVariationImages, 2048 = SupportsNormalVariations, 4096 =
        SupportsVariationCombinations, 16384 = RequiresCompletionCall, 32768 =
        SupportsFreeFields, 65536 = RequiresRootCategory, 131072 =
        AttributesMultilingual, 262144 = RespectArticleActiveFlag, 524288 =
        IgnoreStatistics, 1048576 = SendAllAcks
      format: int32
      x-enumNames:
        - ChildVariationsFirst
        - PartialPaymentPossible
        - OrderUpdatePossible
        - OrderReactivationPossible
        - SupportsArticleImages
        - SupportsCategoryImages
        - SupportsManufacturerImages
        - SupportsAttributeImages
        - SupportsAttributeValueImages
        - SupportsConfigGroupImages
        - SupportsVariationImages
        - SupportsNormalVariations
        - SupportsVariationCombinations
        - RequiresCompletionCall
        - SupportsFreeFields
        - RequiresRootCategory
        - AttributesMultilingual
        - RespectArticleActiveFlag
        - IgnoreStatistics
        - SendAllAcks
      enum:
        - 1
        - 2
        - 4
        - 8
        - 16
        - 32
        - 64
        - 128
        - 256
        - 512
        - 1024
        - 2048
        - 4096
        - 16384
        - 32768
        - 65536
        - 131072
        - 262144
        - 524288
        - 1048576
    JTL.Data.Contracts.Keys.SteuersatzKey:
      type: string
      format: uuid
      example: b45f6432-2462-4c6f-b00f-1d9d01000000
      additionalProperties: false
  securitySchemes:
    oauth2-authorization-code:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://auth.jtl-cloud.com/oauth2/auth
          tokenUrl: https://auth.jtl-cloud.com/oauth2/token
          scopes:
            inventories.write: Grants permission to modify stock levels.
            inventory.read: Grants permission to read stock levels.
            inventory.write: Grants permission to modify stock levels.
            items.read: Grants permission to read item data.
            items.write: Grants permission to create and modify item data.
            procurements.read: Beschaffung lesen
            saleschannels.read: Grants permission to read sales channels.
            saleschannels.write: Grants permission to create and modify sales channels.
            all.read: Allows the application to read all data.
            customers.read: Grants permission to read customer data.
            customers.write: Grants permission to create and modify customer data.
            customfields.read: Grants permission to read custom fields.
            customfields.write: Grants permission to create and modify custom fields.
            deliveries.read: Grants permission to read deliveries.
            deliveries.write: Grants permission to create and modify deliveries.
            deliverynotes.print: Grants permission to print and output delivery notes.
            deliverynotes.read: Grants permission to read delivery notes.
            deliverynotes.write: Grants permission to create and modify delivery notes.
            extensibility.integration: >-
              Grants permission to manage extensions and integrations of the
              JTL-Wawi.
            inventories.read: Grants permission to read stock levels.
            invoices.read: Grants permission to read invoices.
            invoices.write: Grants permission to create and modify invoices.
            labels.read: Grants permission to read labels.
            labels.write: Grants permission to create and modify labels.
            masterdata.read: >-
              Read master data such as shipping methods, payment methods, color
              codes and tax classes.
            orders.read: Grants permission to read orders.
            picklists.read: Grants permission to read pick lists.
            picklists.write: Grants permission to create and modify pick lists.
            returns.read: Grants permission to read returns.
            returns.write: Grants permission to create and modify returns.
            salesinvoicecorrections.read: Grants permission to read invoice corrections.
            salesinvoicecorrections.write: Grants permission to create and modify invoice corrections.
            salesorders.print: Grants permission to print and output sales orders.
            salesorders.read: Grants permission to read sales orders.
            salesorders.write: Grants permission to create and modify sales orders.
            system.config.read: Grants permission to read the system configuration.
            system.config.write: Grants permission to modify the system configuration.
            taxes.read: Grants permission to read tax data.
            warehouse.read: Grants permission to read warehouse data.
            wawiapp.all: Grants access to Wawi app related operations.
            currencies.read: Grants read access to currencies.
            jera.read: Grants read access to JERA internal endpoints.
            paymentmethods.read: Grants read access to payment methods.
            payments.read: Ermöglicht den Lesezugriff auf Zahlungen.
            payments.write: Ermöglicht den Schreibzugriff auf Zahlungen.
            salesinvoicecorrections.print: Grants permission to print and output invoice corrections.
            salesinvoices.print: Grants permission to print and output sales invoices.
            salesinvoices.read: Grants read access to sales invoices.
            salesinvoices.write: Grants write access to sales invoices.
            salesquotations.print: Grants permission to print and output sales quotations.
            salesquotations.read: Grants read access to sales quotations.
            salesquotations.write: Grants write access to sales quotations.
            system.worker.read: Worker-Synchronisationen lesen
            system.worker.write: Worker-Synchronisationen schreiben
            resources.read: Grants permission to read resource management data.
            resources.write: Grants permission to create and modify resource management data.
            pps.read: Grants permission to read production data.
            pps.write: Grants permission to create and modify production data.
            channels.read: Grants permission to read marketplace channels.
            invoices.print: >-
              Grants permission to print marketplace external documents
              (invoices, credit notes).
            marketplaceoffers.read: Grants permission to read marketplace offers and offer failures.
            marketplaceoffers.write: Grants permission to create and modify marketplace offers.
            notifications.read: Grants permission to read marketplace notifications.
            orders.write: >-
              Grants permission to modify marketplace order data (exclude/reset
              cancellation, payment, return and shipping uploads).
            masterdata.write: Write master data
            taxes.write: Grants permission to create and modify tax data.
            application.runas: >-
              Allows the application to execute requests on behalf of another
              user.
    oauth2-client-credentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth.jtl-cloud.com/oauth2/token
          scopes:
            inventories.write: Grants permission to modify stock levels.
            inventory.read: Grants permission to read stock levels.
            inventory.write: Grants permission to modify stock levels.
            items.read: Grants permission to read item data.
            items.write: Grants permission to create and modify item data.
            procurements.read: Beschaffung lesen
            saleschannels.read: Grants permission to read sales channels.
            saleschannels.write: Grants permission to create and modify sales channels.
            all.read: Allows the application to read all data.
            customers.read: Grants permission to read customer data.
            customers.write: Grants permission to create and modify customer data.
            customfields.read: Grants permission to read custom fields.
            customfields.write: Grants permission to create and modify custom fields.
            deliveries.read: Grants permission to read deliveries.
            deliveries.write: Grants permission to create and modify deliveries.
            deliverynotes.print: Grants permission to print and output delivery notes.
            deliverynotes.read: Grants permission to read delivery notes.
            deliverynotes.write: Grants permission to create and modify delivery notes.
            extensibility.integration: >-
              Grants permission to manage extensions and integrations of the
              JTL-Wawi.
            inventories.read: Grants permission to read stock levels.
            invoices.read: Grants permission to read invoices.
            invoices.write: Grants permission to create and modify invoices.
            labels.read: Grants permission to read labels.
            labels.write: Grants permission to create and modify labels.
            masterdata.read: >-
              Read master data such as shipping methods, payment methods, color
              codes and tax classes.
            orders.read: Grants permission to read orders.
            picklists.read: Grants permission to read pick lists.
            picklists.write: Grants permission to create and modify pick lists.
            returns.read: Grants permission to read returns.
            returns.write: Grants permission to create and modify returns.
            salesinvoicecorrections.read: Grants permission to read invoice corrections.
            salesinvoicecorrections.write: Grants permission to create and modify invoice corrections.
            salesorders.print: Grants permission to print and output sales orders.
            salesorders.read: Grants permission to read sales orders.
            salesorders.write: Grants permission to create and modify sales orders.
            system.config.read: Grants permission to read the system configuration.
            system.config.write: Grants permission to modify the system configuration.
            taxes.read: Grants permission to read tax data.
            warehouse.read: Grants permission to read warehouse data.
            wawiapp.all: Grants access to Wawi app related operations.
            currencies.read: Grants read access to currencies.
            jera.read: Grants read access to JERA internal endpoints.
            paymentmethods.read: Grants read access to payment methods.
            payments.read: Ermöglicht den Lesezugriff auf Zahlungen.
            payments.write: Ermöglicht den Schreibzugriff auf Zahlungen.
            salesinvoicecorrections.print: Grants permission to print and output invoice corrections.
            salesinvoices.print: Grants permission to print and output sales invoices.
            salesinvoices.read: Grants read access to sales invoices.
            salesinvoices.write: Grants write access to sales invoices.
            salesquotations.print: Grants permission to print and output sales quotations.
            salesquotations.read: Grants read access to sales quotations.
            salesquotations.write: Grants write access to sales quotations.
            system.worker.read: Worker-Synchronisationen lesen
            system.worker.write: Worker-Synchronisationen schreiben
            resources.read: Grants permission to read resource management data.
            resources.write: Grants permission to create and modify resource management data.
            pps.read: Grants permission to read production data.
            pps.write: Grants permission to create and modify production data.
            channels.read: Grants permission to read marketplace channels.
            invoices.print: >-
              Grants permission to print marketplace external documents
              (invoices, credit notes).
            marketplaceoffers.read: Grants permission to read marketplace offers and offer failures.
            marketplaceoffers.write: Grants permission to create and modify marketplace offers.
            notifications.read: Grants permission to read marketplace notifications.
            orders.write: >-
              Grants permission to modify marketplace order data (exclude/reset
              cancellation, payment, return and shipping uploads).
            masterdata.write: Write master data
            taxes.write: Grants permission to create and modify tax data.
            application.runas: >-
              Allows the application to execute requests on behalf of another
              user.

````