swagger: '2.0'
info:
  version: '1.0'
  title: iFIS Obchod REST API
  description: Rozhraní pro elektronický obchod
  contact:
    name: BBM s.r.o.
  license:
    name: (c) BBM s.r.o.
    url: 'http://www.bbm.cz'

# host: svijany.bbm.cz:7102

# basePath: /obc

schemes:
 - https

# tags are used for organizing operations
tags:
- name: admin
  description: administrace 
- name: objednavka
  description: řízení objednávek

securityDefinitions:
  basicAuth:
    type: basic
# To apply Basic auth to the whole API:
security:
  - basicAuth: []

paths:
  /ping:
    get:
      tags:
      - admin
      summary: test authentication
      operationId: checkAuth
      description: Test connection, http and DB authentication
      produces:
      - application/json
      responses:
        200:
          description: Úspěšné přihlášení
          schema:
            $ref: '#/definitions/TZprava'
        401:
           $ref: "#/responses/UnauthorizedError"
        404:
          description: Služba je nedostupná

  /ping/{UserName}:
    parameters:
      - $ref: '#/parameters/UserNameParam'
    get:
      tags:
      - admin
      summary: test user authentication
      operationId: checkUserAuth
      description: Test connection, http and DB authentication for user
      produces:
      - application/json
      responses:
        200:
          description: Úspěšné přihlášení
          schema:
            $ref: '#/definitions/TZprava'
        401:
           $ref: "#/responses/UnauthorizedError"
        404:
          description: Služba je nedostupná

  /obj:
    post:
      tags:
      - objednavka
      summary: vložení objednávky
      operationId: create
      description: Vložení objednávky
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: body
        name: objednavka
        required: true
        description: Objednávka
        schema:
          $ref: '#/definitions/TObjednavka'
      responses:
        200:
          description: Objednávka úspěšně vložena
          schema:
            $ref: '#/definitions/TZprava'
        401:
           $ref: "#/responses/UnauthorizedError"
        404:
          description: Služba je nedostupná

  /obj/{ObjednavkaId}:
    parameters:
      - $ref: '#/parameters/ObjednavkaIdParam'
    patch:
      tags:
      - objednavka
      summary: změna stavu objednávky
      operationId: update
      description: Změní pouze vybrané údaje v hlavičce objednávky, nelze měnit řádky
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: body
        name: objednavka
        required: true
        description: Údaje určené ke změně v hlavičce objednávky
        schema:
          $ref: '#/definitions/TObjednavka'
      responses:
        200:
          description: Stav události
          schema:
            $ref: '#/definitions/TZprava'
        401:
           $ref: "#/responses/UnauthorizedError"
        404:
          description: Služba je nedostupná
    delete:
      tags:
      - objednavka
      summary: storno objednávky
      operationId: delete
      description: Strornuje objednávku
      consumes:
      - application/json
      produces:
      - application/json
      responses:
        200:
          description: Stav zrušení
          schema:
            $ref: '#/definitions/TZprava'
        401:
           $ref: "#/responses/UnauthorizedError"
        404:
          description: Služba je nedostupná


responses:
  UnauthorizedError:
    description: Chyba autentizace
    headers:
      WWW_Authenticate:
        type: string


parameters:
  UserNameParam:
    in: path
    name: UserName
    type: string
    maxLength: 50
    required: true
    description: Uživatel
  ObjednavkaIdParam:
    in: path
    name: ObjednavkaId
    type: integer
    format: int64
    minimum: 0
    maximum: 9999999999
    required: true
    description: ID objednávky


definitions:
  TObjednavka:
    type: object
    required:
    - hlavicka
    properties:
      autorizace:
        $ref: '#/definitions/TAutorizace'
      hlavicka:
        $ref: '#/definitions/THlavicka'
      radky:
        type: array
        minItems: 1
        items:
          $ref: '#/definitions/TRadek'
          
  THlavicka:
    type: object
    properties:
      odberatelId:
        type: integer
        format: int64
        minimum: 0
        maximum: 9999999999
        description: ID odběratele z iFIS*Organizace
      prijemceId:
        type: integer
        format: int64
        minimum: 0
        maximum: 9999999999
        description: ID konečného příjemce z iFIS*Organizace
      doprava:
        type: string
        maxLength: 1
        enum:
        - A
        - B
        - C
        - D
        - O
        - T
        - V
        description: >
          Způsob dopravy:
            * A -  Elektronickou poštou
            * B  -  Dobírkou
            * C  -  Běžnou poštou
            * D  -  Interní poštou
            * O  -  Vyzvednutí objednavatelem
            * T  -  Expresní službou
            * V  -  Předání dodavatelem
      termin:
        type: string
        maxLength: 30
        description: Požadovaný termín dodání - volný text
      kategorie:
        type: string
        maxLength: 10
        description: Název kategorie prodejní ceny
      smlouva:
        type: string
        maxLength: 10
        description: Označení smlouvy - volný text
      mail:
        type: string
        maxLength: 50
        description: Kontakt na objednávajícího - mailová adresa
      tel:
        type: string
        maxLength: 30
        description: Kontakt na objednávajícího - telefon
      extId:
        type: string
        maxLength: 60
        description: Identifikace objednávky v externím systému
      fakturacniAdresa:
        type: string
        maxLength: 2000
        description: Fakturační adresa externího neregistrovaného zákazníka
      dorucovaciAdresa:
        type: string
        maxLength: 255
        description: Doručovací adresa externího neregistrovaného zákazníka
      cobjed:
        type: string
        maxLength: 20
        description: Číslo objednávky - lze provést změnu
      zppl:
        type: string
        maxLength: 1
        enum:
        - B
        - D
        - H
        - I
        - P
        - R
        - S
        description: >
          Způsob platby:
            * B -  Bankovní kartou
            * D -  Dobírkou
            * H -  Hotově
            * I -  Inkasem
            * P -  Příkazem
            * R -  Převodem před dodáním
            * S -  Kartou IPS
      identPlatba:
        type: string
        maxLength: 30
        description: Identifikace platby platební kartou - lze provést změnu
      strId:
        type: integer
        format: int64
        minimum: 0
        maximum: 9999999999
        description: ID evidenčního střediska - lze provést změnu
      nsId:
        type: integer
        format: int64
        minimum: 0
        maximum: 9999999999
        description: ID střediska - lze provést změnu
      typAkceId:
        type: integer
        format: int64
        minimum: 0
        maximum: 9999999999
        description: ID typu akce - lze provést změnu
      akceId:
        type: integer
        format: int64
        minimum: 0
        maximum: 9999999999
        description: ID akce - lze provést změnu
      kpId:
        type: integer
        format: int64
        minimum: 0
        maximum: 9999999999
        description: ID komplexní položky - lze provést změnu
      poznamka:
        type: string
        maxLength: 255
        description: Poznámka k objednávce - lze provést změnu
      komentar:
        type: string
        maxLength: 2000
        description: Komentář k objednávce - lze provést změnu

  TRadek:
    type: object
    required:
    - crad
    - cenikId
    - pocet
    properties:
      crad:
        $ref: '#/definitions/TCrad'
      cenikId:
        type: integer
        format: int64
        minimum: 0
        maximum: 9999999999
        description: ID skladové položky v ceníku
      pocet:
        type: number
        multipleOf: 0.001
        minimum: 0
        maximum: 9999999.999
        description: Požadovaný počet MJ
      cena:
        type: number
        multipleOf: 0.01
        minimum: 0
        maximum: 999999999999.99
        description: Cena bez DPH za 1 MJ, pokud není zadáno, bere se z prodejního ceníku
      cenaD:
        type: number
        multipleOf: 0.01
        minimum: 0
        maximum: 999999999999.99
        description: Cena s DPH za 1 MJ, pokud není zadáno, bere se z prodejního ceníku
      text:
        type: string
        maxLength: 255
        description: Text pro specifikaci položky pro kontaci

  TAutorizace:
    type: object
    required:
    - autor
    - datum
    properties:
      autor: 
        type: string
        maxLength: 255
        description: Autor události
      datum:
        type: string
        format: date-time
        description: Datum události

  TZprava:
    type: object
    required:
    - kod
    properties:
      kod:
        type: string
        maxLength: 32
        description: Kód zprávy
      popis:
        type: string
        maxLength: 2000
        description: Popis zprávy
      identifikator:
        type: integer
        format: int64
        minimum: 0
        maximum: 9999999999
        description: ID přidělené objednávce
      radkyChyby:
        type: array
        items:
          $ref: '#/definitions/TRadekChyba'

  TRadekChyba:
    type: object
    required:
    - crad
    - text
    properties:
      crad:
        $ref: '#/definitions/TCrad'
      text:
        type: string
        maxLength: 255
        description: Text chyby

  TCrad:
    type: integer
    format: int32
    minimum: 0
    description: Pořadové číslo položky pro identifikaci při zpracování


# Added by API Auto Mocking Plugin
host: virtserver.swaggerhub.com
basePath: /BBM-s.r.o8/iFis-Obchod/1.0