ivpk / uapi

Universal Application Programming Interface (UAPI)
0 stars 1 forks source link

Schemos pagal duomenų tipus #3

Closed sirex closed 1 month ago

sirex commented 8 months ago

https://github.com/ivpk/uapi/blob/f18e83a5d49e756bd6ef17022686a8d2d331bca4/openapi/components/schemas/object.yaml#L27-L32

Šioje vietoje, reikėtų aprašyti visus variantus, pagal galimus duomenų tipus. Galimų tipų sąrašas yra čia:

https://atviriduomenys.readthedocs.io/dsa/duomenu-tipai.html

Reikia atkreipti dėmesį, kad JSON reprezentacija priklauso ne tik nuo tipo, bet ir nuo brandos lygio, pavyzdžiui:

https://atviriduomenys.readthedocs.io/api/index.html#ir-zemesnis-brandos-lygis

Pavyzdžiai

patternProperties:
  ^[a-z](_?[a-z0-9]+)*$:
    oneOf:
      - $ref: ./string.yaml
      - $ref: ./integer.yaml
      - $ref: ./boolean.yaml
      - $ref: ./ref.yaml
      - $ref: ./backref.yaml
      - $ref: ./object.yaml
      - $ref: ./array.yaml
      # ...

Kur kiekvieno tipo schema gali būti skirtinga, pavyzdžiui ./string.yaml atveju: ./string.yaml:

type: string

./integer.yaml:

type: integer

Reikia atkreipti dėmesį, kad schema gali skirtis priklausomai nuo brandos lygio, pavyzdžiui:

./ref.yaml:

oneOf:
  # level > 3
  - type: object
    properties:
      _id:
        type: string
    patternProperties:
      ^[a-z](_?[a-z0-9]+)*$:
        oneOf:
          - $ref: ./string.yaml
          - $ref: ./integer.yaml
          - $ref: ./boolean.yaml
          - $ref: ./ref.yaml
          - $ref: ./backref.yaml
          - $ref: ./object.yaml
          - $ref: ./array.yaml
          # ...

  # level <= 3
  - type: object
    patternProperties:
      ^[a-z](_?[a-z0-9]+)*$:
        oneOf:
          - $ref: ./string.yaml
          - $ref: ./integer.yaml
          - $ref: ./boolean.yaml
          - $ref: ./ref.yaml
          - $ref: ./backref.yaml
          - $ref: ./object.yaml
          - $ref: ./array.yaml
          # ...

Konkrečiai ref atveju, jei brandos lygis > 3, tada _id yra privalomas, jei brandos lygis <= 3, tada _id neprivalomas.

riteris13 commented 5 months ago

03-29 dienos Pull Request atnaujinta ir pridėti minėti duomenų tipai. Swagger įrankis rodo klaidas kuriant „self-reference“ iš „object“ į „object“, todėl ši eilutė yra užkomentuota.

sirex commented 4 months ago