swagger: '2.0'
info:
  version: 1.0.0
  title: Verkosto
  description: >
    Tämä skeema on tuotettu Ristiinopiskelu-kärkihankkeelle 2018. Yhdessä
    sopimuksessa voi olla monta verkostoa, esim. automaattisista
    opetussuunnitema tasoista ja valinnaista.  Lisätietoja
    https://wiki.eduuni.fi/pages/viewpage.action?pageId=54694505
  contact:
    name: Pekka Järveläinen
    email: pj@csc.fi
  license:
    name: CC0
    url: 'https://creativecommons.org/licenses/by/4.0/'
consumes:
  - application/json
produces:
  - application/json
schemes:
  - https
basePath: /v1
paths:
  /verkosto/:
    post:
      description: >
        Verkoston tietojen siirto, yhdessä sopimuksessa voi olla monta
        verkostoa. Kukin verkosto talletetaan kolmasti eri kielisinä versioina.
        Tätä toteutusta saa muuttaa
      operationId: verkosto
      produces:
        - application/json
      parameters:
        - name: verkosto
          in: body
          description: Ristiinopiskelu verkosto
          required: true
          schema:
            $ref: '#/definitions/verkosto'
      responses:
        '200':
          description: kuittaus
          schema:
            $ref: '#/definitions/kuittaus'
        default:
          description: unexpected error
          schema:
            $ref: '#/definitions/errorModel'
  /sopimus/:
    post:
      description: >
        Sopimuksen tietojen siirto, yhdessä sopimuksessa voi olla monta
        verkostoa. Sopimus talletetaan 1-n kertaa eri kielisinä versioina. Tätä
        totetusta saa muuttaa. 
      operationId: sopimus
      produces:
        - application/json
      parameters:
        - name: sopimus
          in: body
          description: Ristiinopiskelu verkostosopimus
          required: true
          schema:
            $ref: '#/definitions/sopimus'
      responses:
        '200':
          description: kuittaus
          schema:
            $ref: '#/definitions/kuittaus'
        default:
          description: unexpected error
          schema:
            $ref: '#/definitions/errorModel'
definitions:
  sopimus:
    type: object
    required:
      - nimi
      - lyhenne
      - yksilöivätunniste
      - koulutusorganisaatiot
      - verkostot
      - sopimuksenkuvaus
      - voimassaoloaika
      - kustannukset
    properties:
      Content-Language:
        $ref: '#/definitions/kieli'
      lähetysaika:
          type: string
          format: date-time
          description: M2 0.3 CSCRISTIINOPISKELU-184
      purkuaika:
          type: string
          format: date-time
          description: >
            jira CSCRISTIINOPISKELU-184 viestin purkuhetken aikaleima
            on mahdoton alkuperäiselle lähettäjälle, mutta matkalla...
      nimi:
        type: string
        description: Sopimuksen nimi
      lyhenne:
        type: string
        description: Sopimuksen lyhenne
      yksilöivätunniste:
        type: string
        description: Sopimuksen yksilöivä tunniste (oid)
      koulutusorganisaatiot:
        type: array
        items:
          type: string
        description: OID
      verkostot:
        type: array
        items:
          type: string
        description: Sopimukseen kuuluvat verkostot 1-n OID
      sopimuksenkuvaus:
        type: string
        description: 'Sopimuksen kuvaus: markdown'
      lisätiedot:
        type: string
        description: Sopimuksen lisätiedot
      voimassaoloaika:
        $ref: '#/definitions/voimassaoloaika'
      kustannukset:
        $ref: '#/definitions/kustannukset'
  verkosto:
    type: object
    required:
      - nimi
      - lyhenne
      - yksilöivätunniste
      - koulutusorganisaatiot
      - verkostontyyppi
      - verkostonkuvaus
      - kohderyhmät
      - voimassaoloaika
      - kustannukset
    properties:
      Content-Language:
        $ref: '#/definitions/kieli'
      lähetysaika:
          type: string
          format: date-time
          description: M2 0.3 CSCRISTIINOPISKELU-184
      purkuaika:
          type: string
          format: date-time
          description: >
            jira CSCRISTIINOPISKELU-184 viestin purkuhetken aikaleima
            on mahdoton alkuperäiselle lähettäjälle, mutta matkalla...
      nimi:
        type: string
        description: Verkoston nimi
      lyhenne:
        type: string
        description: Verkoston lyhenne
      yksilöivätunniste:
        type: string
        description: Verkoston yksilöivä tunniste (oid)
      koulutusorganisaatiot:
        type: array
        items:
          type: string
        description: OID
      verkostontyyppi:
        type: string
        enum:
          - Opintosuunnitelmataso
          - Valinnanvapaus
      verkostonkuvaus:
        type: string
        description: 'Verkoston kuvaus: markdown'
      yleisiä huomioita:
        type: string
        description: Verkoston lisätiedot
      kohderyhmät:
        type: array
        items:
          type: string
          enum:
            - "1 Ammattikorkeakoulututkinto"
            - "2 Alempi korkeakoulututkinto"
            - "3 Ylempi ammattikorkeakoulututkinto"
            - "4 Ylempi korkeakoulututkinto"
            - "5 Lääkärien erikoistumiskoulutus"
            - "6 Lisensiaatintutkinto"
            - "7 Tohtorintutkinto"
            - "8 Kotimainen opiskelijaliikkuvuus"
            - "9 Kansainvälinen vaihto"
            - 10 Täydennyskoulutus
            - 12 Erikoistumisopinnot
            - 13 Avoimen opinnot
            - 14 Opettajan pedagogiset opinnot
            - 15 Ammatillinen opettajankoulutus
            - 16 Oppisopimus-tyyppinenkoulutus
            - 17 Valmentava koulutus
            - 18 Erillisoikeus
            - 19 Erikoistumiskoulutus
        description: >
          https://confluence.csc.fi/display/VIRTA/Tietovarannon+koodistot
          opiskeluoikeuden tyypit NO 11 puuttuu koska se on poistuva
          opiskeluoikeuden tyyppi, jota ei käytetä enää vuoden 2018 tiedoista
          alkaen. 

          12 Ammatilliset erikoistumisopinnot ovat ammattikorkeakoulututkintoon
          pohjautuvia täydennyskoulutusohjelmia, joiden laajuus on 30–60
          opintopistettä. 17 oppija suorittaa esim. maahanmuuttajien valmentavaa
          koulutusta.
      rajaukset:
        type: array
        items:
          type: number
          format: int32
        description: >
          ISCED 2011 6-numeroinen EU:n laajuinen.  Koskee vain lueteltuja aloja,
          kuten liiketaloustiede
      voimassaoloaika:
        $ref: '#/definitions/voimassaoloaika'
      kustannukset:
        $ref: '#/definitions/kustannukset'
  voimassaoloaika:
    type: object
    required:
      - alkaa
      - jatkuvuus
    properties:
      jatkuvuus:
        type: string
        enum:
          - määräaikainen
          - toistaiseksi
        description: >-
          Määräaikainen alkaa ja päättyy, vastakohtana toistaiseksi
          voimassaoleva
      alkaa:
        type: string
        format: date
        description: pakollinen
      päättyy:
        type: string
        format: date
        description: vain määräaikaisiin
      irtisanottu:
        type: string
        format: date
        description: tarjonta ei näy
  kustannukset:
    type: object
    required:
      - maksullinen
    properties:
      maksullinen:
        type: boolean
        description: 'jos true, seuraavatkin kentät täytettävä'
      hinnotteluperuste:
        type: string
        enum:
          - euroa/op
          - euroa/ilmoittatuminen/op
        description: 'vain tilastointiin, tämä järjestelmä ei laskuta'
      hinta:
        type: number
        format: int32
  kuittaus:
    type: object
    required:
      - code
    properties:
      code:
        type: integer
        format: int32
  errorModel:
    type: object
    required:
      - code
      - message
    properties:
      code:
        type: integer
        format: int32
      message:
        type: string
  kieli:
    type: string
    enum:
      - en
      - en-US
      - en-UK
      - fi
      - sv
    description: >
      RFC-5646 vastaava sisältö palautetaan Accept-Language headerin mukaan. 
      Vain yhden englannin käyttö riittää
