> ## 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.

# Register Multi Instance App

> Sends a registration request for another instance of the same application



## OpenAPI

````yaml /openapi/2.0.json post /v2/authentication/{registrationId}
openapi: 3.0.0
info:
  title: JTL-WAWI API (Cloud)
  description: "JTL-Wawi-Version: 2.1.0-beta.5276+Sha.ca198c5\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.0'
  x-application-version: 2.1.0.0
servers:
  - url: https://api.jtl-cloud.com/erp
    description: Production Environment Cloud API Gateway
security: []
tags:
  - name: worker
    description: Planned
  - 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: WawiApp
    description: Development
  - name: warehouse
    description: >-
      <p data-section-id='tag/warehouse' class='stable_summary'></p>Query all
      warehouses
  - name: unitsOfMeasure
    description: Development
  - name: transactionStatus
    description: >-
      <p data-section-id='tag/transactionStatus'
      class='stable_summary'></p>Query all transaction status for sales order
  - name: tax
    description: >-
      <p data-section-id='tag/tax' class='stable_summary'></p>Returns the
      Taxrate for the given Item
  - name: item
    description: >-
      <p data-section-id='tag/item' class='stable_summary'></p>Query all tax
      classes
  - name: supplier
    description: >-
      <p data-section-id='tag/supplier' class='stable_summary'></p>Query all
      suppliers
  - name: stock
    description: >-
      <p data-section-id='tag/stock' class='stable_summary'></p>Query stocks for
      a specific item, warehouse or storage location
  - name: shippingmethod
    description: >-
      <p data-section-id='tag/shippingmethod' class='stable_summary'></p>Query
      all shipping methods
  - name: shipment
    description: >-
      <p data-section-id='tag/shipment' class='stable_summary'></p>Download a
      PDF Shipping Label from database by ID
  - name: salesorder
    description: >-
      <p data-section-id='tag/salesorder' class='stable_summary'></p>Query all
      sales orders
  - name: cancellationreason
    description: Planned
  - name: salesinvoicecorrection
    description: Development
  - name: saleschannel
    description: >-
      <p data-section-id='tag/saleschannel' class='stable_summary'></p>Get all
      sales channels
  - name: return
    description: >-
      <p data-section-id='tag/return' class='beta_summary'></p>Create a new
      return with associated items and packages.
  - name: returnstate
    description: Planned
  - name: returnreason
    description: Planned
  - name: property
    description: >-
      <p data-section-id='tag/property' class='stable_summary'></p>Query all
      properties for items
  - name: printer
    description: >-
      <p data-section-id='tag/printer' class='beta_summary'></p>Returns all
      Installed Printers
  - name: paymentmethod
    description: >-
      <p data-section-id='tag/paymentmethod' class='stable_summary'></p>Query
      all payment methods
  - name: onholdreason
    description: >-
      <p data-section-id='tag/onholdreason' class='stable_summary'></p>Query all
      on hold reasons for sales orders
  - name: offer
    description: >-
      <p data-section-id='tag/offer' class='beta_summary'></p>Execute the
      printing of a Offer
  - name: Configuration
    description: Planned
  - name: manufacturer
    description: Development
  - name: label
    description: Development
  - name: duplicateItem
    description: Development
  - name: copyItem
    description: Development
  - name: 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: shipping
    description: Development
  - name: deliverynote
    description: Planned
  - name: customfields
    description: Development
  - name: customfield
    description: Development
  - name: customer
    description: >-
      <p data-section-id='tag/customer' class='stable_summary'></p>Query all
      customers
  - name: customerGroup
    description: >-
      <p data-section-id='tag/customerGroup' class='stable_summary'></p>Query
      all customer groups
  - name: customerCategory
    description: >-
      <p data-section-id='tag/customerCategory' class='stable_summary'></p>Query
      all customer categories
  - name: creditnote
    description: >-
      <p data-section-id='tag/creditnote' class='beta_summary'></p>Execute the
      printing of a CreditNote
  - name: company
    description: >-
      <p data-section-id='tag/company' class='stable_summary'></p>Query all
      companies
  - name: colorcodes
    description: >-
      <p data-section-id='tag/colorcodes' class='stable_summary'></p>Query all
      color codes for sales orders
  - name: category
    description: Development
  - name: appRegistration
    description: >-
      <p data-section-id='tag/appRegistration' class='stable_summary'></p>Send a
      registration request for an (external) application
  - name: login
    description: >-
      <p data-section-id='tag/login' class='beta_summary'></p>Sends a request to
      log in the user / dynamically assign the WAWI user. Only use this request
      if your API uses SSL.
  - name: logout
    description: >-
      <p data-section-id='tag/logout' class='beta_summary'></p>Sends a request
      to log out the user
  - name: attribute
    description: Development
  - name: accountingData
    description: Planned
paths:
  /v2/authentication/{registrationId}:
    post:
      tags:
        - appRegistration
      summary: Register Multi Instance App
      description: >-
        Sends a registration request for another instance of the same
        application
      operationId: Authentication_RegisterMultiInstanceAppAsync
      parameters:
        - name: x-tenant-id
          in: header
          required: true
          schema:
            type: string
            format: uuid
          description: The tenant ID for the target ERP instance.
        - name: registrationId
          in: path
          required: true
          description: Unique identifier of the registration request
          schema:
            type: string
          x-position: 1
        - name: x-challengecode
          in: header
          required: true
          description: >-
            You can enter any custom value here. The X-ChallengeCode is used
            during app registration and must be the same for all registration
            requests. The maximum length is 30 characters.
          schema:
            type: string
      responses:
        '200':
          description: >-
            Status of the registration process (including the unique identifiers
            of the application and registration request)
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/JTL.Wawi.Rest.Contracts.Models.V1.Authentication.RegistrationRequestStatusInfo
        '400':
          description: The operation was not allowed in the given context.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/JTL.Wawi.Rest.Abstraction.Exceptions.ErrorResponse
        '402':
          description: >-
            No licence available or the application has not been authorised by
            JTL.
          content:
            application/json: {}
        '403':
          description: >-
            There was no application service available to receive and handle the
            registration.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/JTL.Wawi.Rest.Abstraction.Exceptions.ErrorResponse
      security:
        - oauth2-authorization-code: []
        - oauth2-client-credentials: []
components:
  schemas:
    JTL.Wawi.Rest.Contracts.Models.V1.Authentication.RegistrationRequestStatusInfo:
      type: object
      description: 'Model Class: RegistrationRequestStatusInfo '
      additionalProperties: false
      required:
        - AppId
        - RegistrationRequestId
        - Status
      properties:
        appId:
          type: string
          description: Unique identifier of the application
        registrationRequestId:
          type: string
          description: Unique identifier of the registration request
        status:
          $ref: >-
            #/components/schemas/JTL.Wawi.Rest.Contracts.Models.V1.Authentication.RegistrationStatus
          description: Status of the registration process
    JTL.Wawi.Rest.Abstraction.Exceptions.ErrorResponse:
      type: object
      description: >-
        Represents an error response returned by the system in case of a failure
        or exception.
      additionalProperties: false
      properties:
        errorCode:
          type: string
          description: >-
            Gets or sets the error code that identifies the type of error
            encountered.
        validationErrors:
          type: object
          description: >-
            Gets or sets a dictionary containing validation errors associated
            with the request.
          deprecated: true
          x-deprecatedMessage: Use Errors
          additionalProperties:
            type: string
        errors:
          type: object
          description: Gets or sets a collection of errors associated with the response.
          additionalProperties:
            type: array
            items:
              type: string
        errorMessage:
          type: string
          description: >-
            Gets or sets the error message that provides details about the error
            encountered.
        stacktrace:
          type: string
          description: >-
            Gets or sets the stack trace associated with the error, providing
            detailed

            information about the sequence of method calls that led to the
            exception.
    JTL.Wawi.Rest.Contracts.Models.V1.Authentication.RegistrationStatus:
      type: integer
      description: 0 = Pending, 1 = Rejected, 2 = Accepted
      format: int32
      x-enumNames:
        - Pending
        - Rejected
        - Accepted
      enum:
        - 0
        - 1
        - 2
  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:
            items.read: Artikel lesen
            items.write: Artikel schreiben
            accountings.read: ''
            all.read: Erlaubt der Anwendung, alle Daten zu lesen.
            authentication.updateforeignapp: ''
            cusomters.read: ''
            customers.read: ''
            customers.write: ''
            customfields.read: ''
            customfields.write: ''
            deliveries.read: ''
            deliveries.write: ''
            deliverynotes.print: ''
            deliverynotes.read: ''
            deliverynotes.write: ''
            extensibility.integration: ''
            foreignapps.manage: ''
            inventories.read: ''
            inventories.write: ''
            invoices.print: ''
            invoices.read: ''
            invoices.write: ''
            labels.read: ''
            labels.write: ''
            offers.print: ''
            offers.read: ''
            orders.read: ''
            picklists.read: ''
            picklists.write: ''
            returns.read: ''
            returns.write: ''
            saleschannels.read: ''
            salesinvoicecorrections.print: ''
            salesinvoicecorrections.read: ''
            salesinvoicecorrections.write: ''
            salesorders.print: ''
            salesorders.read: ''
            salesorders.write: ''
            suppliers.read: ''
            system.config.read: ''
            system.config.write: ''
            system.read: ''
            system.worker.read: ''
            system.worker.write: ''
            taxes.read: ''
            warehouse.read: ''
            wawiapp.all: Ermöglicht den Zugriff auf Wawi-App bezogene Opperationen.
            currencies.read: Grants read access to currencies.
            jera.read: Grants read access to JERA internal endpoints.
            paymentmethods.read: Grants read access to payment methods.
            salesinvoices.read: Grants read access to sales invoices.
            salesinvoices.write: Grants write access to sales invoices.
            salesquotations.read: Grants read access to sales quotations.
            salesquotations.write: Grants write access to sales quotations.
            resources.read: Ressourcen lesen
            resources.write: Ressourcen schreiben
            pps.read: Produktionsdaten lesen
            pps.write: Produktionsdaten schreiben
            inventory.read: Lagerbestand lesen
            inventory.write: Lagerbestand schreiben
            taxes.write: Steuern schreiben
            application.runas: >-
              Ermöglicht der Anwendung, Anfragen im Namen eines anderen
              Benutzers auszuführen.
    oauth2-client-credentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth.jtl-cloud.com/oauth2/token
          scopes:
            items.read: Artikel lesen
            items.write: Artikel schreiben
            accountings.read: ''
            all.read: Erlaubt der Anwendung, alle Daten zu lesen.
            authentication.updateforeignapp: ''
            cusomters.read: ''
            customers.read: ''
            customers.write: ''
            customfields.read: ''
            customfields.write: ''
            deliveries.read: ''
            deliveries.write: ''
            deliverynotes.print: ''
            deliverynotes.read: ''
            deliverynotes.write: ''
            extensibility.integration: ''
            foreignapps.manage: ''
            inventories.read: ''
            inventories.write: ''
            invoices.print: ''
            invoices.read: ''
            invoices.write: ''
            labels.read: ''
            labels.write: ''
            offers.print: ''
            offers.read: ''
            orders.read: ''
            picklists.read: ''
            picklists.write: ''
            returns.read: ''
            returns.write: ''
            saleschannels.read: ''
            salesinvoicecorrections.print: ''
            salesinvoicecorrections.read: ''
            salesinvoicecorrections.write: ''
            salesorders.print: ''
            salesorders.read: ''
            salesorders.write: ''
            suppliers.read: ''
            system.config.read: ''
            system.config.write: ''
            system.read: ''
            system.worker.read: ''
            system.worker.write: ''
            taxes.read: ''
            warehouse.read: ''
            wawiapp.all: Ermöglicht den Zugriff auf Wawi-App bezogene Opperationen.
            currencies.read: Grants read access to currencies.
            jera.read: Grants read access to JERA internal endpoints.
            paymentmethods.read: Grants read access to payment methods.
            salesinvoices.read: Grants read access to sales invoices.
            salesinvoices.write: Grants write access to sales invoices.
            salesquotations.read: Grants read access to sales quotations.
            salesquotations.write: Grants write access to sales quotations.
            resources.read: Ressourcen lesen
            resources.write: Ressourcen schreiben
            pps.read: Produktionsdaten lesen
            pps.write: Produktionsdaten schreiben
            inventory.read: Lagerbestand lesen
            inventory.write: Lagerbestand schreiben
            taxes.write: Steuern schreiben
            application.runas: >-
              Ermöglicht der Anwendung, Anfragen im Namen eines anderen
              Benutzers auszuführen.

````