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

# Sevkiyat tanımı oluştur

> Yeni sevkiyat tanımı ekler.

* `Code` zorunludur ve şirket içinde benzersiz olmalıdır.
* `TransportMode` zorunludur ve aşağıdaki değerlerden biri olmalıdır.
* `TransportInfo1` zorunludur; anlamı taşıma şekline göre değişir (aşağıda).
* Sevkiyat ya taşıyıcı firmayla ya da kendi aracınızla yapılır; kurallar aşağıda.
* `TransportInfo1` zorunludur; anlamı taşıma şekline göre değişir (aşağıda).
* Sevkiyat ya taşıyıcı firmayla ya da kendi aracınızla yapılır; kurallar aşağıda.
* Diğer alanlar isteğe bağlı serbest metindir; her alanın azami uzunluğu alan açıklamasında yazar. Aşan değerler `0003` ile reddedilir.

`TransportInfo1` ve `TransportInfo2` alanlarının anlamı taşıma şekline göre değişir; Noyax ekranında da bu alanların etiketi buna göre değişir. Bu bilgiler e-irsaliyeye taşıma bilgisi olarak yazılır.

| `TransportMode` | Taşıma şekli | `TransportInfo1` (zorunlu) | `TransportInfo2` |
| --------------- | ------------ | -------------------------- | ---------------- |
| `1`             | Karayolu     | Plaka                      | —                |
| `2`             | Demiryolu    | Tren numarası              | Vagon numarası   |
| `3`             | Denizyolu    | Gemi adı                   | IMO numarası     |
| `4`             | Havayolu     | Uçak numarası              | —                |

İkinci alan yalnızca demiryolu ve denizyolunda vardır; karayolu ve havayolunda `TransportInfo2` gönderilse bile kaydedilmez.

## Taşıyıcı firma mı, kendi aracınız mı?

Bir sevkiyat ya taşıyıcı bir firmayla ya da şirketin kendi aracıyla yapılır. API bunu ayrı bir alanla değil, **taşıyıcı firma alanlarının dolu olup olmamasıyla** anlar:

<Tabs>
  <Tab title="Kendi aracı">
    Taşıyıcı firma alanlarının (`CarrierName`, `CarrierTaxNumber`, `CarrierCity`, `CarrierDistrict`, `CarrierCountry`) hepsi boş bırakılır.

    * `Driver1FirstName`, `Driver1LastName` ve `Driver1IdentityNumber` **zorunludur** (`0537`).
    * `Driver2*` alanları isteğe bağlıdır.
    * Dorse plakaları yalnızca **karayolunda** (`TransportMode: 1`) kaydedilir; diğer taşıma şekillerinde gönderilseler bile boş kalır.
  </Tab>

  <Tab title="Taşıyıcı firma">
    Taşıyıcı firma alanlarından biri doluysa **beşi de zorunludur** (`0536`).

    * Sürücü bilgisi gerekmez; gönderilse bile kaydedilmez, yanıtta boş döner.
    * Dorse plakaları kaydedilmez.
  </Tab>
</Tabs>


## OpenAPI

````yaml api-reference/openapi.tr.json POST /api/v1/definitions/shipment-definitions
openapi: 3.1.1
info:
  title: Noyax API
  description: Server-to-server API for integrations to access Noyax data.
  version: '1.0'
servers:
  - url: https://api.noyax.com
security:
  - Bearer: []
tags:
  - name: Sections
  - name: Warehouses
  - name: Product Critical Stock
  - name: Product groups
  - name: Product Parameter Definitions
  - name: Product Parameters
  - name: Product Prices
  - name: Products
  - name: Cities
  - name: Countries
  - name: Currencies
  - name: Districts
  - name: Shipment Definitions
  - name: Units
  - name: VAT rates
  - name: Customer Addresses
  - name: Customer Bank Accounts
  - name: Customer Definitions
  - name: Customer Group Members
  - name: Customer Links
  - name: Customer Parameters
  - name: Customer Representatives
  - name: Customers
  - name: Customer Statement
  - name: Customer Telephones
paths:
  /api/v1/definitions/shipment-definitions:
    post:
      tags:
        - Shipment Definitions
      summary: Sevkiyat tanımı oluştur
      description: >-
        Sevkiyat tanımı ekler. Code, şirket içinde benzersiz olmalıdır;
        TransportMode 1-4 arasında olmalıdır.
      parameters:
        - name: X-UserID
          in: header
          description: >-
            İsteğin adına yapıldığı Noyax kullanıcısının ID'si. Oluşturulan,
            güncellenen ve silinen kayıtların denetim alanlarına yazılır.
          required: true
          schema:
            minimum: 1
            type: integer
            format: int32
        - name: X-CompanyID
          in: header
          description: >-
            Şirketin ID'si. Kullanıcı bu şirkete tanımlı olmalıdır. Bütün okuma
            ve yazma işlemleri bu şirketle sınırlıdır.
          required: true
          schema:
            minimum: 1
            type: integer
            format: int32
        - name: X-PeriodID
          in: header
          description: >-
            Muhasebe döneminin ID'si. Cari endpoint'lerinde isteğe bağlıdır;
            gönderilirse oluşturulan kayıtlara yazılır.
          schema:
            minimum: 1
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentDefinitionRequestDto'
          text/json:
            schema:
              $ref: '#/components/schemas/ShipmentDefinitionRequestDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ShipmentDefinitionRequestDto'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataResultOfShipmentDefinitionDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '0537'
                Message: >-
                  Driver1FirstName, Driver1LastName and Driver1IdentityNumber
                  are required when no carrier company is used.
                Errors:
                  - Code: '0537'
                    Message: >-
                      Driver1FirstName, Driver1LastName and
                      Driver1IdentityNumber are required when no carrier company
                      is used.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '0102'
                Message: Token has expired. Obtain a new token using the refresh token.
                Errors:
                  - Code: '0102'
                    Message: >-
                      Token has expired. Obtain a new token using the refresh
                      token.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '0110'
                Message: You do not have permission for this operation.
                Errors:
                  - Code: '0110'
                    Message: You do not have permission for this operation.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '0120'
                Message: Daily request limit (10000) exceeded.
                Errors:
                  - Code: '0120'
                    Message: Daily request limit (10000) exceeded.
components:
  schemas:
    ShipmentDefinitionRequestDto:
      type: object
      properties:
        Code:
          type:
            - 'null'
            - string
          description: >-
            Zorunlu. Sevkiyat kodu, şirket içinde benzersiz olmalıdır. En fazla
            50 karakter.
          example: '5469'
        Description:
          type:
            - 'null'
            - string
          description: Açıklama. En fazla 255 karakter.
          example: Istanbul road shipments
        TransportMode:
          type: integer
          description: >-
            Zorunlu. 1: Karayolu, 2: Demiryolu, 3: Denizyolu, 4: Havayolu.
            TransportInfo1 ve TransportInfo2 alanlarının anlamını belirler.
          format: int32
          example: 1
        TransportInfo1:
          type:
            - 'null'
            - string
          description: >-
            Zorunlu. Taşıma şekline göre araç bilgisi: 1 plaka, 2 tren numarası,
            3 gemi adı, 4 uçak numarası. En fazla 50 karakter.
          example: 34ABC123
        TransportInfo2:
          type:
            - 'null'
            - string
          description: >-
            İkinci taşıma bilgisi; yalnızca TransportMode 2 (vagon numarası) ya
            da 3 (IMO numarası) iken kullanılır. 1 (karayolu) ve 4 (havayolu)
            için kaydedilmez. En fazla 50 karakter.
        CarrierName:
          type:
            - 'null'
            - string
          description: >-
            Taşıyıcı firma adı. Sevkiyat taşıyıcı firmayla yapılıyorsa diğer
            Carrier* alanlarıyla birlikte zorunludur; kendi aracınız için
            hepsini boş bırakın. En fazla 75 karakter.
          example: Example Logistics Ltd.
        CarrierTaxNumber:
          type:
            - 'null'
            - string
          description: Taşıyıcı firmanın vergi numarası. En fazla 50 karakter.
          example: '1234567890'
        CarrierCity:
          type:
            - 'null'
            - string
          description: Taşıyıcı firmanın ili. En fazla 50 karakter.
          example: ISTANBUL
        CarrierDistrict:
          type:
            - 'null'
            - string
          description: Taşıyıcı firmanın ilçesi. En fazla 50 karakter.
          example: KADIKÖY
        CarrierCountry:
          type:
            - 'null'
            - string
          description: Taşıyıcı firmanın ülkesi. En fazla 50 karakter.
          example: TÜRKİYE
        Driver1FirstName:
          type:
            - 'null'
            - string
          description: >-
            1. sürücünün adı. Taşıyıcı firma yoksa zorunludur. Taşıyıcı firma
            varsa kaydedilmez. En fazla 50 karakter.
          example: Ahmet
        Driver1LastName:
          type:
            - 'null'
            - string
          description: >-
            1. sürücünün soyadı. Taşıyıcı firma yoksa zorunludur. En fazla 20
            karakter.
          example: Kaya
        Driver1IdentityNumber:
          type:
            - 'null'
            - string
          description: >-
            1. sürücünün T.C. kimlik numarası. Taşıyıcı firma yoksa zorunludur.
            En fazla 20 karakter.
          example: '12345678901'
        Driver2FirstName:
          type:
            - 'null'
            - string
          description: 2. sürücünün adı. En fazla 50 karakter.
        Driver2LastName:
          type:
            - 'null'
            - string
          description: 2. sürücünün soyadı. En fazla 20 karakter.
        Driver2IdentityNumber:
          type:
            - 'null'
            - string
          description: 2. sürücünün T.C. kimlik numarası. En fazla 20 karakter.
        TrailerPlate1:
          type:
            - 'null'
            - string
          description: >-
            Dorse plakası 1. Yalnızca TransportMode 1 (karayolu) ve taşıyıcı
            firma yokken kaydedilir. En fazla 20 karakter.
          example: 34ABC123
        TrailerPlate2:
          type:
            - 'null'
            - string
          description: >-
            Dorse plakası 2. Yalnızca TransportMode 1 (karayolu) ve taşıyıcı
            firma yokken kaydedilir. En fazla 20 karakter.
    DataResultOfShipmentDefinitionDto:
      required:
        - Success
        - ResultCode
        - Data
      type: object
      properties:
        Success:
          type: boolean
          description: İşlemin başarılı olup olmadığı.
          example: true
        ResultCode:
          type: string
          description: >-
            Başarıda "0000". Hatada ilk hatanın kodu; hataların tamamı Errors
            içinde listelenir.
          example: '0000'
        Message:
          type:
            - 'null'
            - string
          description: >-
            Success false olduğunda hata mesajı. Bütün hataların mesajları tek
            metinde birleştirilir.
        Data:
          $ref: '#/components/schemas/ShipmentDefinitionDto'
    ErrorResult:
      type: object
      properties:
        Success:
          type: boolean
          description: İşlemin başarılı olup olmadığı.
          example: false
        ResultCode:
          type:
            - 'null'
            - string
          description: >-
            Başarıda "0000". Hatada ilk hatanın kodu; hataların tamamı Errors
            içinde listelenir.
        Message:
          type:
            - 'null'
            - string
          description: >-
            Success false olduğunda hata mesajı. Bütün hataların mesajları tek
            metinde birleştirilir.
        Errors:
          type:
            - 'null'
            - array
          items:
            $ref: '#/components/schemas/ResultError'
          description: >-
            Kodlarıyla birlikte bütün hatalar. Yalnızca Success false olduğunda
            bulunur.
    ShipmentDefinitionDto:
      type: object
      properties:
        Id:
          type: string
          description: >-
            Sevkiyat tanımı ID'si. Caride ShipmentDefinitionId alanında
            kullanılır.
          format: uuid
        Code:
          type:
            - 'null'
            - string
          description: >-
            Zorunlu. Sevkiyat kodu, şirket içinde benzersiz olmalıdır. En fazla
            50 karakter.
          example: '5469'
        Description:
          type:
            - 'null'
            - string
          description: Açıklama. En fazla 255 karakter.
          example: Istanbul road shipments
        TransportMode:
          type: integer
          description: >-
            Zorunlu. 1: Karayolu, 2: Demiryolu, 3: Denizyolu, 4: Havayolu.
            TransportInfo1 ve TransportInfo2 alanlarının anlamını belirler.
          format: int32
          example: 1
        TransportInfo1:
          type:
            - 'null'
            - string
          description: >-
            Zorunlu. Taşıma şekline göre araç bilgisi: 1 plaka, 2 tren numarası,
            3 gemi adı, 4 uçak numarası. En fazla 50 karakter.
          example: 34ABC123
        TransportInfo2:
          type:
            - 'null'
            - string
          description: >-
            İkinci taşıma bilgisi; yalnızca TransportMode 2 (vagon numarası) ya
            da 3 (IMO numarası) iken kullanılır. 1 (karayolu) ve 4 (havayolu)
            için kaydedilmez. En fazla 50 karakter.
        CarrierName:
          type:
            - 'null'
            - string
          description: >-
            Taşıyıcı firma adı. Sevkiyat taşıyıcı firmayla yapılıyorsa diğer
            Carrier* alanlarıyla birlikte zorunludur; kendi aracınız için
            hepsini boş bırakın. En fazla 75 karakter.
          example: Example Logistics Ltd.
        CarrierTaxNumber:
          type:
            - 'null'
            - string
          description: Taşıyıcı firmanın vergi numarası. En fazla 50 karakter.
          example: '1234567890'
        CarrierCity:
          type:
            - 'null'
            - string
          description: Taşıyıcı firmanın ili. En fazla 50 karakter.
          example: ISTANBUL
        CarrierDistrict:
          type:
            - 'null'
            - string
          description: Taşıyıcı firmanın ilçesi. En fazla 50 karakter.
          example: KADIKÖY
        CarrierCountry:
          type:
            - 'null'
            - string
          description: Taşıyıcı firmanın ülkesi. En fazla 50 karakter.
          example: TÜRKİYE
        Driver1FirstName:
          type:
            - 'null'
            - string
          description: >-
            1. sürücünün adı. Taşıyıcı firma yoksa zorunludur. Taşıyıcı firma
            varsa kaydedilmez. En fazla 50 karakter.
          example: Ahmet
        Driver1LastName:
          type:
            - 'null'
            - string
          description: >-
            1. sürücünün soyadı. Taşıyıcı firma yoksa zorunludur. En fazla 20
            karakter.
          example: Kaya
        Driver1IdentityNumber:
          type:
            - 'null'
            - string
          description: >-
            1. sürücünün T.C. kimlik numarası. Taşıyıcı firma yoksa zorunludur.
            En fazla 20 karakter.
          example: '12345678901'
        Driver2FirstName:
          type:
            - 'null'
            - string
          description: 2. sürücünün adı. En fazla 50 karakter.
        Driver2LastName:
          type:
            - 'null'
            - string
          description: 2. sürücünün soyadı. En fazla 20 karakter.
        Driver2IdentityNumber:
          type:
            - 'null'
            - string
          description: 2. sürücünün T.C. kimlik numarası. En fazla 20 karakter.
        TrailerPlate1:
          type:
            - 'null'
            - string
          description: >-
            Dorse plakası 1. Yalnızca TransportMode 1 (karayolu) ve taşıyıcı
            firma yokken kaydedilir. En fazla 20 karakter.
          example: 34ABC123
        TrailerPlate2:
          type:
            - 'null'
            - string
          description: >-
            Dorse plakası 2. Yalnızca TransportMode 1 (karayolu) ve taşıyıcı
            firma yokken kaydedilir. En fazla 20 karakter.
    ResultError:
      required:
        - Code
        - Message
      type: object
      properties:
        Code:
          type: string
          description: Hata kodu. Tam liste için sonuç kodları sayfasına bakın.
        Message:
          type: string
          description: Hata açıklaması.
  securitySchemes:
    Bearer:
      type: http
      description: Access token obtained from the Noyax auth service with your API key.
      scheme: bearer
      bearerFormat: JWT

````