Skip to content
Snippets Groups Projects
swagger.yaml 7.08 KiB
Newer Older
openapi: 3.0.0
info:
  version: 1.0.0
  title: REPP Backend
  description: ''
security:
  - BearerAuth: []
tags:
  - name: Auth
  - name: Parser
  - name: Calculation
paths:

  /login:
    post:
      tags:
        - Auth
      summary: Login to get an access token
      requestBody:
          required: true
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCredentials'
               
      responses:
        '200':
           description: Ok.
      security: []
    
  /sheetParser:
    post:
      tags:
        - Parser
      summary: Given a sheet returns SheetParserResponse
      requestBody:
        content:
          application/octet-stream:
            schema:
              format: binary
        required: true
      responses:
        '200':
          description: Ok.
      security:
        - BearerAuth: []
Agustin's avatar
Agustin committed
    post:
      tags:
        - Calculation
      summary: Given population data calculates its energetic requirement
      requestBody:
        content: 
          application/json:
            schema:
Agustin's avatar
Agustin committed
              $ref: '#/components/schemas/ReqCalculation'
        required: true
      responses:
        '200':
          description: Ok.
Agustin's avatar
Agustin committed
        '400':
          description: Bad request.
      tags:
        - Parameters
      summary: Get all parameters
      responses:
        '200':
          description: Ok.
        '400':
          description: Bad request.
      security:
        - BearerAuth: []
  /parameters/weights:
Agustin's avatar
Agustin committed
    get:
      tags:
        - Parameters
      summary: Get all default weights
      responses:
        '200':
          description: Ok.
        '400':
          description: Bad request.
      security:
        - BearerAuth: []
  /parameters/extraData:
Agustin's avatar
Agustin committed
    get:
      tags:
        - Parameters
      summary: Get all extra data
      responses:
        '200':
          description: Ok.
        '400':
          description: Bad request.
      security:
        - BearerAuth: []
  /parameters/parameterUpdate:
    put:
      tags:
        - Parameters
      summary: Update a certain parameter. The array contains exactly one item, unless the parameters to be updated are a trio, in which case all three parameters must be included, or have the TEE/BMR parameter type in which case all equation constants must be included.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Parameter'
        required: true 
      responses:
        '200':
          description: Ok.
        '400':
          description: Bad request.
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
  schemas:
    Menores:
      properties:
        edad:
          type: integer
        peso:
          type: integer
    Mayores:
      properties:
        edad:
          type: integer
        peso:
          type: integer
        talla:
          type: integer
    SheetParserResponse:
      properties:
        hombresMenores:
          type: array
          items:
            $ref: '#/components/schemas/Menores'
        mujeresMenores:
          type: array
          items:
            $ref: '#/components/schemas/Menores'
        hombres:
          type: array
          items:
            $ref: '#/components/schemas/Mayores'
        mujeres:
          type: array
          items:
            $ref: '#/components/schemas/Mayores'
    UserCredentials:
      properties:
        user:
          type: string
        pass:
          type: string
Agustin's avatar
Agustin committed
        age:
Agustin's avatar
Agustin committed
        sex:
Agustin's avatar
Agustin committed
        medianWeight:
Agustin's avatar
Agustin committed
        population:
Agustin's avatar
Agustin committed
      required:
        - age
        - sex
        - medianWeight
        - population
    MinorPAL:
      properties:
        lowPALPrevalence:
          type: number
        moderatePALPrevalence:
          type: number
        intensePALPrevalence:
          type: number
      required:
        - lowPALPrevalence
        - moderatePALPrevalence
        - intensePALPrevalence
    AdultPAL:
      properties:
        urbanPercentage:
          type: number
        activeUrbanPAL:
          type: number
        lowUrbanPAL:
          type: number
        ruralPercentage:
          type: number
        activeRuralPAL:
          type: number
        lowRuralPAL:
          type: number
      required:
        - urbanPercentage
        - activeUrbanPAL
        - lowUrbanPAL
        - ruralPercentage
        - activeRuralPAL
        - lowRuralPAL
    IndividualMaternity:
      properties:
        pregnantWomen:
          type: number
        lactatingWomen:
          type: number
      required:
        - pregnantWomen
        - lactatingWomen
    PopulationMaternity:
      properties:
        countryBirthRate:
          type: number
        countryPopulation:
          type: number
      required:
        - countryBirthRate
        - countryPopulation
    ExtraData:
      properties:
        minorPAL:
          $ref: '#/components/schemas/MinorPAL'
        adultPAL:
          $ref: '#/components/schemas/AdultPAL'
        maternity18to29:
          oneOf:
            - $ref: '#/components/schemas/IndividualMaternity'
            - $ref: '#/components/schemas/PopulationMaternity'
        maternity30to59:
          oneOf:
            - $ref: '#/components/schemas/IndividualMaternity'
            - $ref: '#/components/schemas/PopulationMaternity'
    ReqCalculation:
      properties:
        groups:
          type: array
          items:
            $ref: '#/components/schemas/AgeGroupJSON'
        extraData:
          $ref: '#/components/schemas/ExtraData'
      required:
        - groups
Agustin's avatar
Agustin committed
        parameters:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/WeightParameter'
              - $ref: '#/components/schemas/ExtraDataParameter'
              - $ref: '#/components/schemas/EquationConstantParameter'
    WeightParameter:
      properties:
        parameterType:
          type: string
        ageRange:
          type: string
        sex:
          type: string
        value:
          type: number
      required:
        - parameterType
        - ageRange
        - sex
        - value
    ExtraDataParameter:
      properties:
        parameterType:
          type: string
        id:
          type: string
        value:
          type: number
        description:
          type: string
      required:
        - parameterType
        - id
        - value
    EquationConstantParameter:
      properties:
        parameterType:
          type: string
        ageRange:
          type: string
        sex:
          type: string
        order:
          type: number
        value:
          type: number
        description:
          type: string
      required:
        - parameterType
        - ageRange
        - sex
        - order
        - value