swagger: '2.0'
info:
  title: Moduł Przyjmowania i Zabezpieczania Wniosków
  description: >-
    Moduł Przyjmowania i Zabezpieczania Wniosków (MPiZW) jest odpowiedzialny za
    przyjmowanie i zabezpieczanie wniosków. W szczególności będzie
    przyjmował zaszyfrowane i podpisane podpisem kwalifikowanym dokumenty
    przygotowane przez Wykonawców, składane poprzez Portal e-Usług.
  version: '1.0'
schemes:
  - https
host: api.ezamowienia.gov.pl
basePath: /mpizw
consumes:
  - application/json
produces:
  - application/json
tags:
  - name: Składanie wniosku
  - name: Pobranie wniosku
  - name: Otwarcie wniosków
  - name: Ocena wniosku
paths:
  '/wnioski':
    post:
      summary: Utwórz wniosek
      description: >-
        Metoda służy do złożenia wniosku i otrzymania jej identyfikatora.
        Utworzenie identyfikatora odbywa się poprzez wysłanie wstępnego żądania
        zawierającego hash nowego wniosku. W odpowiedzi zwracane jest ID
        nowoutworzonego wniosku.
      operationId: UtworzWniosek
      tags:
        - Składanie wniosku
      parameters:
        - name: body
          description: Informacje o wniosku
          in: body
          required: true
          schema:
            $ref: '#/definitions/UtworzWniosekRequest'
      responses:
        '201':
          description: Utworzono wniosku
          schema:
            $ref: '#/definitions/UtworzWniosekResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Postępowanie nie istnieje
          schema:
            $ref: '#/definitions/Blad'
        '409':
          description: Wniosek o podanym hashu już istnieje
          schema:
            $ref: '#/definitions/Blad'
  '/wnioski/postepowanie/{idPostepowania}':
    parameters:
      - $ref: '#/parameters/IdPostepowania'
    get:
      summary: Pobierz wnioski
      description: >-
        Metoda służy do pobrania listy wszystkich wniosków, które zostały
        złożone dla danego postępowania. Wnioski może pobrać Zamawiający,
        tylko gdy upłynął termin składania wniosków.
      operationId: PobierzWnioski
      tags:
        - Pobranie wniosku
      responses:
        '200':
          description: Wniosek w postępowania
          schema:
            $ref: '#/definitions/PobierzWnioskiResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Postępowanie nie istnieje
          schema:
            $ref: '#/definitions/Blad'
    post:
      summary: Prześlij dane z otwarcia wniosków
      description: >-
        Metoda służy do przesłania danych z otwarcia wniosku, co kończy
        proces otwarcia wniosku.
      operationId: DaneZOtwarciaWniosow
      tags:
        - Otwarcie wniosków
      parameters:
        - name: body
          description: Informacje o wnioskach
          in: body
          required: true
          schema:
            $ref: '#/definitions/DaneZOtwarciaWnioskowRequest'
      responses:
        '200':
          description: Przyjęto dane z otwarcia wniosków
          schema:
            $ref: '#/definitions/DaneZOtwarciaWnioskowResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Postępowanie nie istnieje
          schema:
            $ref: '#/definitions/Blad'
  '/wnioski/postepowanie/{idPostepowania}/potwierdzenie':
    parameters:
      - $ref: '#/parameters/IdPostepowania'
    post:
      summary: Prześlij potwierdzenie pobrania wniosków
      description: >-
        Metoda służy do przesłania potwierdzenia pobrania wniosków postępowania.
      operationId: PotwierdzeniePobraniaWniosku
      tags:
        - Potwierdzenie pobrania wniosku
      parameters:
        - name: body
          description: Informacje o wniosku
          in: body
          required: true
          schema:
            $ref: '#/definitions/PotwierdzeniePobraniaWnioskowRequest'
      responses:
        '200':
          description: Przyjęto potwierdzenie pobrania wniosku
          schema:
            $ref: '#/definitions/PotwierdzniePobraniaWnioskuResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Postępowanie nie istnieje
          schema:
            $ref: '#/definitions/Blad'
  '/wnioski/postepowanie/{idPostepowania}/ocenaWnioskow':
    parameters:
      - $ref: '#/parameters/IdPostepowania'
    post:
      summary: Prześlij dane z oceny wniosku
      description: >-
        Metoda służy do przesłania danych z wyboru wniosku.
      operationId: DaneZWyboruWniosku
      tags:
        - Ocena wniosku
      parameters:
        - name: body
          description: Informacje o wyborze wniosku
          in: body
          required: true
          schema:
            $ref: '#/definitions/DaneZOcenyWnioskuRequest'
      responses:
        '201':
          description: Przyjęto dane z wyboru wniosku
          schema:
            $ref: '#/definitions/DaneZOcenyWnioskuResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Postępowanie nie istnieje
          schema:
            $ref: '#/definitions/Blad'
  '/wnioski/postepowanie/{idPostepowania}/rezygnacja':
    parameters:
      - $ref: '#/parameters/IdPostepowania'
    post:
      summary: Prześlij rezygnację ze składania wniosku
      description: >-
        Metoda służy do przesłania rezygnacji ze składania wniosku.
      operationId: RezygnacjaZeSkladaniaWniosku
      tags:
        - Składanie wniosku
      parameters:
        - name: body
          description: Informacje o rezygnacji
          in: body
          required: true
          schema:
            $ref: '#/definitions/RezygnacjaZeSkladaniaWnioskuRequest'
      responses:
        '200':
          description: Przyjęto rezygnację ze składania wniosku
          schema:
            $ref: '#/definitions/RezygnacjaZeSkladaniaWnioskuResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Postępowanie nie istnieje
          schema:
            $ref: '#/definitions/Blad'
  '/wnioski/{id}':
    parameters:
      - $ref: '#/parameters/IdWniosku'
    put:
      summary: Prześlij wniosek
      description: >-
        Metoda służy do przesyłania zaszyfrowanej treści wniosku dla
        podanego postępowania. Wniosek może wysłać Wykonawca, po
        uprzednim utworzeniu wniosku i otrzymaniu identyfikatora
        wniosku.
      operationId: PrzeslijWniosek
      tags:
        - Składanie wniosku
      parameters:
        - name: body
          description: Zaszyfrowany wniosek
          in: body
          required: true
          schema:
            $ref: '#/definitions/PrzeslijWniosekRequest'
      responses:
        '200':
          description: Zapisano wniosek
          schema:
            $ref: '#/definitions/PrzeslijWniosekResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Wniosek nie istnieje
          schema:
            $ref: '#/definitions/Blad'
    delete:
      summary: Wycofaj wniosek
      description: >-
        Metoda umożliwia wycofanie wniosku. Wycofanie nie będzie
        skuteczne, gdy żądanie zgłoszono po terminie składania wniosków,
        bądź oferent nie przeszedł pozytywnie weryfikacji.
      operationId: WycofajWniosek
      tags:
        - Wycofanie wniosku
      responses:
        '200':
          description: Wycofano wniosek
          schema:
            $ref: '#/definitions/WycofajWniosekResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Wniosek nie istnieje
          schema:
            $ref: '#/definitions/Blad'
        '409':
          description: Nie można wycofać wniosku
          schema:
            $ref: '#/definitions/Blad'
    get:
      summary: Pobierz wniosek
      description: >-
        Metoda służy do pobrania zaszyfrowanego wniosku. Pobranie jest
        możliwe przez Zamawiającego, tylko po upłynięciu terminu składania
        wniosku.
      operationId: PobierzWniosek
      tags:
        - Pobranie wniosku
      responses:
        '200':
          description: Wniosek
          schema:
            $ref: '#/definitions/PobierzWniosekResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Wniosek nie istnieje
          schema:
            $ref: '#/definitions/Blad'
  '/wnioski/{id}/zmiana/{hash}':
    parameters:
      - $ref: '#/parameters/IdWniosku'
      - $ref: '#/parameters/Hash'
    put:
      summary: Zmień wniosek
      description: >-
        Metoda umożliwia zmianę wniosku. Zmiana polega na wycofaniu
        istniejącego wniosku i złożeniu nowego wniosku. Aby
        wycofanie starego wniosku było skuteczne, należy przesłać zaszyfrowany wniosek
        w żądaniu. Zmiana nie będzie skuteczna, gdy żądanie
        zgłoszono po terminie składania wniosku, bądź oferent nie
        przeszedł pozytywnie weryfikacji.
      operationId: ZmienWniosek
      tags:
        - Składanie wniosku
      parameters:
        - name: body
          description: Zaszyfrowany wniosek
          in: body
          required: true
          schema:
            $ref: '#/definitions/PrzeslijWniosekRequest'
      responses:
        '200':
          description: Zmieniono wniosek
          schema:
            $ref: '#/definitions/ZmienWniosekResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Wniosek nie istnieje
          schema:
            $ref: '#/definitions/Blad'
        '409':
          description: Nie można zmienić wniosku
          schema:
            $ref: '#/definitions/Blad'
  '/wnioski/{id}/epo':
    parameters:
      - $ref: '#/parameters/IdWniosku'
    get:
      summary: Pobierz EPO
      description: >-
        Metoda umożliwia pobranie Elektronicznego Potwierdzenia Otrzymania (EPO)
        dla zadanego wniosku.
      operationId: PobierzEpo
      tags:
        - Składanie wniosku
      responses:
        '200':
          description: EPO
          schema:
            $ref: '#/definitions/PobierzEpoResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Wniosek nie istnieje
          schema:
            $ref: '#/definitions/Blad'
  '/wnioski/postepowanie/{idPostepowania}/informacjeOWykluczeniu':
    parameters:
      - $ref: '#/parameters/IdPostepowania'
    post:
      summary: Wyslanie informacji o wykluczeniu dla wniosków
      description: >-
        Metoda służy do wysłania informacji o wykluczeniu dla wniosków.
      operationId: InformacjeOWykluczeniu
      tags:
        - Informacja o wykluczeniu
      parameters:
        - name: body
          description: Informacje o wykluczeniu
          in: body
          required: true
          schema:
            $ref: '#/definitions/InformacjeOWykluczeniuRequest'
      responses:
        '201':
          description: Dodano informacje o wykluczeniu
          schema:
            $ref: '#/definitions/InformacjeOWykluczeniuResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Postępowanie nie istnieje
          schema:
            $ref: '#/definitions/Blad'
  '/wnioski/postepowanie/{idPostepowania}/potrzebaWyslaniaZaproszeniaDoSkladaniaOfert':
    parameters:
      - $ref: '#/parameters/IdPostepowania'
    post:
      summary: Wyslanie informacji o potrzebie wysłania zaproszenia do składania ofert
      description: >-
        Metoda służy do wysłania informacji o potrzebie wysłania zaproszenia do składania ofert.
      operationId: PotrzebaWyslaniaZaproszeniaDoSkladaniaOfert
      tags:
        - Potrzeba wysłania zaproszenia do składania ofert
      parameters:
        - name: body
          description: Informacje o wniosku
          in: body
          required: true
          schema:
            $ref: '#/definitions/PotrzebaWyslaniaZaproszeniaDoSkladaniaOfertRequest'
      responses:
        '201':
          description: Przyjęto potrzebę wysłania zaproszenia do składania ofert
          schema:
            $ref: '#/definitions/PotrzebaWyslaniaZaproszeniaDoSkladaniaOfertResponse'
        '400':
          description: Niepoprawne żądanie
          schema:
            $ref: '#/definitions/Blad'
        '401':
          description: Niezalogowany
          schema:
            $ref: '#/definitions/Blad'
        '403':
          description: Brak uprawnień
          schema:
            $ref: '#/definitions/Blad'
        '404':
          description: Postępowanie nie istnieje
          schema:
            $ref: '#/definitions/Blad'
parameters:
  IdPostepowania:
    name: idPostepowania
    in: path
    description: Identyfikator postępowania
    required: true
    type: string
    format: uuid
  IdWniosku:
    name: id
    in: path
    description: Identyfikator wniosku
    required: true
    type: string
    format: uuid
  Hash:
    name: hash
    in: path
    description: Hash wniosku w formie base64
    required: true
    type: string
    format: byte
definitions:
  IdPostepowania:
    description: Identyfikator postępowania
    type: string
    format: uuid
  IdWniosku:
    description: Identyfikator wniosku
    type: string
    format: uuid
  IdWykonawcy:
    description: Identyfikator Wykonawcy
    type: string
    format: uuid
  UtworzWniosekRequest:
    type: object
    required:
      - idPostepowania
      - hash
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      hash:
        description: Hash wniosku w formie base64
        type: string
        format: byte
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      hash: NEYUeineC/Oxpv8rEZQ0rDdIICcSVWt85yRaWHXmcVjIR0g3y7
  UtworzWniosekResponse:
    type: object
    required:
      - idPostepowania
      - idWniosku
      - czasUtworzeniaWniosku
      - links
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      idWniosku:
        $ref: '#/definitions/IdWniosku'
      czasUtworzeniaWniosku:
        description: Znacznik czasu utworzenia wniosku
        type: string
        format: date-time
      uplynalTermin:
        description: Informacja o upłynięciu terminu
        type: object
        required:
          - czasOtrzymaniaWniosku
          - terminSkladaniaWniosku
        properties:
          czasOtrzymaniaWniosku:
            description: Znacznik czasu otrzymania wniosku
            type: string
            format: date-time
          terminSkladaniaWniosku:
            description: Znacznik czasu terminu składania wniosku
            type: string
            format: date-time
      links:
        $ref: '#/definitions/Links'
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      idWniosku: 1e07ba0b-4d8c-43c0-a222-86e0e3118c36
      czasUtworzeniaWniosku: '2018-04-05T11:51:20.123'
      uplynalTermin:
        czasOtrzymaniaWniosku: '2018-04-05T11:51:20.123'
        terminSkladaniaWniosku: '2018-04-05T11:51:20.123'
      links:
        - rel: PobierzEpo
          action: GET
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36/epo
        - rel: PrzeslijWniosek
          action: PUT
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36
        - rel: ZmienWniosek
          action: PUT
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36/zmiana
        - rel: WycofajWniosek
          action: DELETE
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36
  PobierzWnioskiResponse:
    type: object
    required:
      - idPostepowania
      - czasWydaniaWnioskow
      - links
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      czasWydaniaWnioskow:
        description: Znacznik czasu wydania wniosków
        type: string
        format: date-time
      wnioski:
        description: Wnioski
        type: array
        items:
          type: object
          required:
            - idWniosku
            - hash
          properties:
            idWniosku:
              $ref: '#/definitions/IdWniosku'
            hash:
              description: Hash wniosku w formie base64
              type: string
              format: byte
      links:
        $ref: '#/definitions/Links'
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      czasWydaniaWniosku: '2018-04-05T11:51:20.123'
      wnioski:
        - idWniosek: 1e07ba0b-4d8c-43c0-a222-86e0e3118c36
          hash: NEYUeineC/Oxpv8rEZQ0rDdIICcSVWt85yRaWHXmcVjIR0g3y7
      links:
        - rel: PobierzWniosek
          action: GET
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36
  PrzeslijWniosekRequest:
    type: object
    required:
      - wniosek
    properties:
      wniosek:
        description: Zaszyfrowana zawartość wniosku
        type: string
        format: binary
      decyzjaOZlozeniuPoTerminie:
        description: Decyzja o złożeniu wniosku po terminie składania wniosku
        type: boolean
    example:
      wniosek: NEYUeineC/Oxpv8rEZQ0rDdIICcSVWt85yRaWHXmcVjIR0g3y7
  PrzeslijWniosekResponse:
    type: object
    required:
      - idPostepowania
      - idWniosku
      - czasOtrzymaniaWniosku
      - links
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      idWniosku:
        $ref: '#/definitions/IdWniosku'
      czasOtrzymaniaWniosku:
        description: Znacznik czasu otrzymania wniosku
        type: string
        format: date-time
      links:
        $ref: '#/definitions/Links'
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      idWniosku: 1e07ba0b-4d8c-43c0-a222-86e0e3118c36
      czasOtrzymaniaWniosku: '2018-04-05T11:51:20.123'
      links:
        - rel: PobierzEpo
          action: GET
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36/epo
        - rel: ZmienWniosek
          action: PUT
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36/zmiana
        - rel: WycofajWniosek
          action: DELETE
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36
  WycofajWniosekResponse:
    type: object
    required:
      - idPostepowania
      - idWniosku
      - czasWycofaniaWniosku
      - links
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      idWniosku:
        $ref: '#/definitions/IdWniosku'
      czasWycofaniaWniosku:
        description: Znacznik czasu wycofania wniosku
        type: string
        format: date-time
      powodOdmowyWycofaniaWniosku:
        description: 'Powód braku możliwości wycofania wniosku'
        type: string
      links:
        $ref: '#/definitions/Links'
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      idWniosku: 1e07ba0b-4d8c-43c0-a222-86e0e3118c36
      czasWycofaniaWniosku: '2018-04-05T11:51:20.123'
      links:
        - rel: PobierzEpo
          action: GET
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36/epo
        - rel: UtworzWniosek
          action: POST
          href: /wnioski
  ZmienWniosekResponse:
    type: object
    required:
      - idPostepowania
      - idWniosku
      - czasZmianyWniosku
      - links
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      idWniosku:
        $ref: '#/definitions/IdWniosku'
      czasZmianyWniosku:
        description: Znacznik czasu zmiany wniosku
        type: string
        format: date-time
      powodOdmowyZmianyWniosku:
        description: 'Powód braku możliwości zmiany wniosku'
        type: string
      links:
        $ref: '#/definitions/Links'
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      idWniosku: 1e07ba0b-4d8c-43c0-a222-86e0e3118c36
      czasZmianyWniosku: '2018-04-05T11:51:20.123'
      links:
        - rel: PobierzEpo
          action: GET
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36/epo
        - rel: UtworzWniosek
          action: POST
          href: /wnioski
  PobierzWniosekResponse:
    type: object
    required:
      - idPostepowania
      - idWniosku
      - czasWydaniaWniosku
      - wniosku
      - links
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      idWniosku:
        $ref: '#/definitions/IdWniosku'
      czasWydaniaWniosku:
        description: Znacznik czasu wydania wniosku
        type: string
        format: date-time
      wniosek:
        description: Zaszyfrowana zawartość wniosku
        type: string
      links:
        $ref: '#/definitions/Links'
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      idWniosku: 1e07ba0b-4d8c-43c0-a222-86e0e3118c36
      czasWydaniaWniosku: '2018-04-05T11:51:20.123'
      wniosek: NEYUeineC/Oxpv8rEZQ0rDdIICcSVWt85yRaWHXmcVjIR0g3y7
      links:
        - rel: PobierzWniosek
          action: GET
          href: /wnioski/e63bf835-224a-4b3b-a564-160640911f0a
  PobierzEpoResponse:
    type: object
    required:
      - idPostepowania
      - idWniosku
      - czasOtrzymaniaWniosku
      - czasWygenerowaniaEpo
      - links
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      idWniosku:
        $ref: '#/definitions/IdWniosku'
      czasOtrzymaniaWniosku:
        description: Znacznik czasu otrzymania wniosku
        type: string
        format: date-time
      czasWygenerowaniaEpo:
        description: Znacznik czasu wygenerowania EPO
        type: string
        format: date-time
      links:
        $ref: '#/definitions/Links'
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      idWniosku: 1e07ba0b-4d8c-43c0-a222-86e0e3118c36
      czasOtrzymaniaWniosku: '2018-04-05T11:51:20.123'
      czasWygenerowaniaEpo: '2018-04-05T11:51:20.123'
      links:
        - rel: PrzeslijWniosek
          action: PUT
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36
        - rel: ZmienWniosek
          action: PUT
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36/zmiana
        - rel: WycofajWniosek
          action: DELETE
          href: /wnioski/1e07ba0b-4d8c-43c0-a222-86e0e3118c36
  DaneZOtwarciaWnioskowRequest:
    type: object
    required:
      - czasOtwarciaWnioskow
      - iloscZlozonychWnioskow
    properties:
      czasOtwarciaWnioskow:
        description: Znacznik czasu otwarcia wniosków
        type: string
        format: date-time
      iloscZlozonychWnioskow:
        description: Ile złożono wniosków w podanym postępowaniu
        type: integer
      wnioski:
        description: Lista wniosków
        type: array
        items:
          type: object
          required:
            - czyKonsorcjum
            - idWniosku
          properties:
            idWniosku:
              $ref: '#/definitions/IdWniosku'
            idWykonawcy:
              $ref: '#/definitions/IdWykonawcy'
            czyKonsorcjum:
              description: Czy konsorcjum
              type: boolean
            czyZlozonyPoTerminie:
              description: Informacja, iż Wniosek został złożony po terminie
              type: boolean
    example:
      czasOtwarciaWniosku: '2018-04-05T11:51:20.123'
      iloscZlozonychWnioskow: 4
      wnioski:
        - idWniosku: e63bf835-224a-4b3b-a564-160640911f0a
          czyKonsorcjum: true
        - idWniosku: 1e07ba0b-4d8c-43c0-a222-86e0e3118c36
          czyKonsorcjum: false
  DaneZOtwarciaWnioskowResponse:
    type: object
    required:
      - idPostepowania
      - czasOtrzymania
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      czasOtrzymania:
        description: Znacznik czasu otrzymania danych z otwarcia wniosków
        type: string
        format: date-time
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      czasOtrzymania: '2018-04-05T11:51:20.123'
  PotwierdzeniePobraniaWnioskowRequest:
    type: object
    required:
      - czasPobraniaWnioskow
      - listaPobranychWnioskow
    properties:
      czasPobraniaWnioskow:
        description: Znacznik czasu pobrania wniosku
        type: string
        format: date-time
      listaPobranychWnioskow:
        description: Lista identyfikatorów wniosków
        type: array
        minLength: 1
        items:
          $ref: '#/definitions/pobranyWniosek'
    example:
      czasPobraniaWniosku: '2018-04-05T11:51:20.123'
      listaPobranychWnioskow:
          - idWniosku: 1e07ba0b-4d8c-43c0-a222-86e0e3118c36
            hash: faslkfjasdkljf40
  PotwierdzniePobraniaWnioskuResponse:
    type: object
    required:
      - idPostepowania
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
  DaneZOcenyWnioskuRequest:
    type: object
    required:
      - dataRozstrzygniecia
      - idPostepowania
      - ocenyWnioskow
    properties:
      dataRozstrzygniecia:
        description: 'Data roztrzygnięcia najkorzystniejszego wniosku'
        type: string
        format: date-time
        example: '2019-01-01 00:00:00'
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      ocenyWnioskow:
        type: array
        items:
          type: object
          required:
            - idWniosku
            - przekazanieInformacjiOOcenieWniosku
            - czyKonsorcjum
          properties:
            idWniosku:
              $ref: '#/definitions/IdWniosku'
            przekazanieInformacjiOOcenieWniosku:
              description: Data przekazania informacji o ocenie
              type: string
              format: date-time
              example: '2019-01-01 00:00:00'
            czyKonsorcjum:
              description: Czy konsorcjum
              type: boolean
            konsorcjanci:
              type: object
              properties:
                nazwa:
                  type: string
                identyfikatorKrajowy:
                  $ref: '#/definitions/IdentyfikatorKrajowy'
                daneTeleadresowe:
                  $ref: '#/definitions/DaneTeleadresowe'
      selfCleaning:
        $ref: '#/definitions/SelfCleaning'
    example:
      dataRozstrzygniecia: '2019-01-01 00:00:00'
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      ocenyWnioskow:
        - idWniosku: e63bf835-224a-4b3b-a564-160640911f0a
          przekazanieInformacjiOOcenieWniosku: '2019-01-01 00:00:00'
          czyKonsorcjum: false
      selfCleaning:
        - idWykonawcy: e63bf835-224a-4b3b-a564-160640911f0a
          czyUznano: false
        - idWykonawcy: e63bf835-224a-4b3b-a564-160640911234
          czyUznano: true
  SelfCleaning:
    description: 'Jeśli tablica jest pusta, albo nie została w ogóle przesłana - żaden z Wykonawców nie skorzystał z self-cleaningu.'
    type: array
    items:
      type: object
      properties:
        idWykonawcy:
          allOf:
            - $ref: '#/definitions/IdWykonawcy'
          description: 'Wykonawca korzystający z self-cleaningu'
        czyUznano:
          description: 'Informacja, czy Zamawiający uznał dowody self-cleaning za wystarczające wobec danego Wykonawcy.'
          type: boolean
    minItems: 0
  DaneZOcenyWnioskuResponse:
    type: object
    required:
      - idPostepowania
      - czasOtrzymania
    properties:
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
      czasOtrzymania:
        description: Znacznik czasu otrzymania danych z wyboru wniosku
        type: string
        format: date-time
    example:
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
      czasOtrzymania: '2018-04-05T11:51:20.123'
  RezygnacjaZeSkladaniaWnioskuRequest:
    type: object
    properties:
      hashWniosku:
        description: Hash wniosku, w formie base64
        type: string
      dataHashWniosku:
        description: Data otrzymania hasha wniosku
        type: string
        format: date-time
  RezygnacjaZeSkladaniaWnioskuResponse:
    type: object
    properties:
      dataRezygnacji:
        description: Data, kiedy przyjęto rezygnację ze składania wniosku
        type: string
        format: date-time
  InformacjeOWykluczeniuRequest:
    type: object
    properties:
      wnioski:
        type: array
        items:
          type: object
          required:
            - idWniosku
            - czyZlozonyWTerminie
            - czyZastosowanoArt26
          properties:
            idWniosku:
              $ref: '#/definitions/IdWniosku'
            czyZlozonyWTerminie:
              type: boolean
            wykluczenie:
              type: object
              properties:
                dataWyslaniaInformacjiOWykluczenie:
                  type: string
                  format: date-time
                powodWykluczenia:
                  type: string
            czyZastosowanoArt26:
              type: boolean
            niespelnioneWarunkiUdzialuArt22:
              type: array
              items:
                type: string
    example:
      daneZZaproszeniaDoSkladaniaOfert:
        terminSkladaniaOfert: '2018-04-05T11:51:20.123'
        urlSwiz: 'http://portal/siwz'
        terminPublikacjiOgloszenia: '2018-04-05T11:51:20.123'
        wymaganyJezykOferty: 'PL'
      wnioski:
        - idWniosku: e63bf835-224a-4b3b-a564-160640911f0a
          czyZlozonyWTerminie: true
          czyZastosowanoArt26: false
  InformacjeOWykluczeniuResponse:
    type: object
    properties:
      czasOtrzymania:
        description: Znacznik czasu otrzymania danych z wyboru wniosku
        type: string
        format: date-time
    example:
      czasOtrzymania: '2018-04-05T11:51:20.123'
  PotrzebaWyslaniaZaproszeniaDoSkladaniaOfertRequest:
    type: object
    required:
      - typ
    properties:
      dodatkoweInformacje:
        type: string
      typ:
        type: string
        enum:
          - Oferta
          - Oferta wstępna
          - Oferta dodatkowa
  PotrzebaWyslaniaZaproszeniaDoSkladaniaOfertResponse:
    type: object
    required:
      - czasOdebrania
      - idPostepowania
    properties:
      czasOdebrania:
        type: string
        format: date-time
      idPostepowania:
        $ref: '#/definitions/IdPostepowania'
    example:
      czasOdebrania: '2018-04-05T11:51:20.123'
      idPostepowania: e63bf835-224a-4b3b-a564-160640911f0a
  Blad:
    description: Błąd
    type: object
    required:
      - blad
    properties:
      blad:
        type: object
        required:
          - id
          - podsystem
          - kod
          - opis
          - czas
        properties:
          id:
            description: Unikalny identyfikator błędu
            type: string
            format: uuid
          podsystem:
            description: ID modułu Platformy, w ramach którego wystąpił błąd
            type: string
          kod:
            description: Kod błędu
            type: string
          opis:
            description: Opis błędu
            type: string
          czas:
            description: Znacznik czasu wystąpienia błędu
            type: string
            format: date-time
    example:
      blad:
        id: e63bf835-224a-4b3b-a564-160640911f0a
        podsystem: MPiZO
        kod: 123
        opis: Szczegółowy opis błędu
        czas: '2018-04-05T11:51:20.123'
  Links:
    description: Odnośniki do zasobów
    type: array
    items:
      description: Odnośnik
      type: object
      required:
        - rel
        - action
        - href
      properties:
        rel:
          description: Nazwa odnośnika do zasobu
          type: string
        action:
          description: Metoda HTTP
          type: string
          enum:
            - GET
            - POST
            - PUT
            - DELETE
        href:
          description: Adres zasobu
          type: string
  pobranyWniosek:
      type: object
      required:
        - idWniosku
        - hash
      properties:
        idWniosku:
          $ref: '#/definitions/IdWniosku'
        hash:
          description: Hash wniosku w formie base64
          type: string
          format: byte
  DaneTeleadresowe:
    description: Dane teleadresowe
    type: object
    properties:
      adresy:
        description: Adresy Podmiotu
        type: array
        items:
          $ref: '#/definitions/Adres'
      daneKontaktowe:
        type: object
        properties:
          typ:
            type: string
            enum:
              - adres e-mail
              - numer telefon
              - numer fax
              - adres URL
          wartosc:
            type: string
    example:
      adresy:
        - kodPocztowy: 00-000
          kraj: Polska
          miejscowosc: TestowaMiejscowosc
          numerBudynku: 1a
          numerLokalu: 1a
          ulica: Testowa
          wojewodztwo: Testowe
      daneKontatkowe:
        - typ: email
          wartosc: testowy.email@gov.test.pl
  IdentyfikatorKrajowy:
    description: Opis typu identyfikatora występującego dla danego kraju
    properties:
      rodzaj:
        description: Rodzaj identyfikatora - krajowy, zagraniczny
        type: string
        enum:
          - Krajowy
          - Zagraniczny
      typ:
        description: typ identyfikatora krajowego
        type: string
        enum:
          - REGON
          - PESEL
          - NIP
          - Inny
      identyfikator:
        description: Identyfikator krajowy
        type: string
      opis:
        description: Opis identyfikatora, jeżeli wybrano w typie inny
        type: string
    required:
        - rodzaj
        - typ
        - identyfikator
    example:
      rodzaj: Krajowy
      type: REGON
      identyfikator: '000-00-00'
  Adres:
    description: Obiekt zawierający dane adresu
    type: object
    properties:
      kodPocztowy:
        type: string
      kraj:
        type: string
      miejscowosc:
        type: string
      numerBudynku:
        type: string
      numerLokalu:
        type: string
      typAdresu:
        description: typ adresu
        type: string
      ulica:
        type: string
      wojewodztwo:
        type: string
    example:
      kodPocztowy: 00-000
      kraj: Polska
      miejscowosc: TestowaMiejscowosc
      numerBudynku: 1a
      numerLokalu: 1a
      ulica: Testowa
      wojewodztwo: Testowe
