openapi: 3.0.0
servers:
  - url: https://tl-api.azurewebsites.net
  - url: https://triviallife.azure-api.net/v1
info:
  contact:
    email: support@unicorn-solutions.com
    name: Unicorn Solutions
    url: https://unicorn-solutions.com
  description: Web API for TL mobile and web app
  license:
    name: Use under Unicorn
    url: https://unicorn-solutions.com
  termsOfService: None
  title: API
  version: 2020-08-10_6-22
  x-origin:
    - format: openapi
      url: https://tl-api.azurewebsites.net/swagger/default/swagger.json
      version: "3.0"
  x-providerName: tl-api.azurewebsites.net
security:
  - bearer: []
paths:
  /api/Article:
    delete:
      operationId: Article_Delete
      parameters:
        - description: indentity number(primary key) for article object
          in: query
          name: ArticleId
          schema:
            format: int32
            type: integer
          x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfInteger"
          description: "operation was success(true) or fail(false) "
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfInteger"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiException"
          description: ""
      summary: "Delete article from the system

        \            "
      tags:
        - Article
    post:
      operationId: Article_Post
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ArticleDTO"
        description: article object
        required: true
        x-name: article
        x-position: 1
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfStatusDTO"
          description: messageId that can use to get the status of import later on.!
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      summary: "Add new article\n            "
      tags:
        - Article
    put:
      operationId: Article_Put
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ArticleDTO"
        description: article object
        required: true
        x-name: article
        x-position: 1
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfStatusDTO"
          description: messageId that can use to get the status of import later on.!
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiException"
          description: ""
      summary: "update existing article\n            "
      tags:
        - Article
  /api/Article/ArticleGymDetails:
    put:
      operationId: Article_UpdateArticleGymDetails
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: "#/components/schemas/GymArticleDetailsDTO"
              type: array
        required: true
        x-name: articleDetails
        x-position: 1
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfStatusDTO"
          description: messageId that can use to get the status of import later on.!
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      summary: "Add article details that associate with a Gym

        \            "
      tags:
        - Article
  /api/Article/GetAddons:
    get:
      operationId: Article_GetAddons
      parameters:
        - description: Search text - will be search by the name
          in: query
          name: searchText
          schema:
            nullable: true
            type: string
          x-position: 1
        - description: Comma separated gymIds deafult "-1" for all gyms
          in: query
          name: gymIds
          schema:
            default: "-1"
            nullable: true
            type: string
          x-position: 2
        - in: query
          name: type
          schema:
            default: all
            nullable: true
            type: string
          x-position: 3
        - in: query
          name: limit
          schema:
            default: 100
            format: int32
            type: integer
          x-position: 4
        - in: query
          name: offset
          schema:
            default: 0
            format: int32
            type: integer
          x-position: 5
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfListOfArticleSearchDTO"
          description: ""
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfListOfArticleSearchDTO"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      tags:
        - Article
  "/api/Article/GymArticle/{articleId}/{gymId}":
    get:
      operationId: Article_GymArticleDetails
      parameters:
        - description: indentity number(primary key) for article object
          in: path
          name: articleId
          required: true
          schema:
            format: int32
            type: integer
          x-position: 1
        - description: indentity number(primary key) for gym object
          in: path
          name: gymId
          required: true
          schema:
            format: int32
            type: integer
          x-position: 2
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GymArticleDetailsDTO"
          description: API Response with Article entity
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfListOfArticleSearchDTO"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      summary: "Get Gym specific properties for article

        \            "
      tags:
        - Article
  /api/Article/MeasureUnit:
    post:
      operationId: Article_AddMeasureUnit
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: "#/components/schemas/MeasureUnitDTO"
              type: array
        description: list of measureUnit
        required: true
        x-name: measureUnits
        x-position: 1
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfStatusDTO"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      summary: Add measure unit
      tags:
        - Article
  /api/Article/MeasureUnits:
    get:
      operationId: Article_GetMeasureUnits
      parameters:
        - description: type of the measure unit (all, item, service)
          in: query
          name: type
          schema:
            nullable: true
            type: string
          x-position: 1
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfStatusDTO"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      summary: Get mesure units
      tags:
        - Article
  /api/Article/RevenueAccounts:
    get:
      operationId: Article_GetRevenueAccounts
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfStatusDTO"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      summary: "Get Revenue Accounts "
      tags:
        - Article
  /api/Article/Search:
    get:
      operationId: Article_Search
      parameters:
        - description: part of article name
          in: query
          name: searchText
          schema:
            nullable: true
            type: string
          x-position: 1
        - description: "-1 for all gyms "
          in: query
          name: gymId
          schema:
            default: -1
            format: int32
            type: integer
          x-position: 2
        - description: filter article type. default is 'all'
          in: query
          name: type
          schema:
            default: all
            nullable: true
            type: string
          x-position: 3
        - description: order by column.!-- invalid column will give internal server error
          in: query
          name: orderBy
          schema:
            default: "1"
            nullable: true
            type: string
          x-position: 4
        - description: number of recode in result and default is 100. use negative numbers to order by desc
          in: query
          name: limit
          schema:
            default: 100
            format: int32
            type: integer
          x-position: 5
        - description: number of recodes to skip
          in: query
          name: offset
          schema:
            default: 0
            format: int32
            type: integer
          x-position: 6
        - description: "Active Status 1 : Active, 2: Inactive, 3: All, Default : 1"
          in: query
          name: activeStatus
          schema:
            default: 1
            format: int32
            type: integer
          x-position: 7
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfListOfArticleSearchDTO"
          description: API Response with set of a Article entities
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfListOfArticleSearchDTO"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      summary: "Search articles

        It will only return basic information of article

        \            "
      tags:
        - Article
  /api/Article/UpdateStatus:
    put:
      operationId: Article_UpdateStatus
      parameters:
        - in: query
          name: ArticleId
          schema:
            format: int32
            type: integer
          x-position: 1
        - description: "1 : activate , 2 deactivate"
          in: query
          name: status
          schema:
            format: int32
            type: integer
          x-position: 2
        - description: Updating user
          in: query
          name: userName
          schema:
            nullable: true
            type: string
          x-position: 3
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfInteger"
          description: ""
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfInteger"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiException"
          description: ""
      summary: "Deactivate existing article "
      tags:
        - Article
  "/api/Article/{articleID}":
    get:
      operationId: Article_get
      parameters:
        - description: indentity number (primary key) for article object
          in: path
          name: articleID
          required: true
          schema:
            format: int32
            type: integer
          x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfArticleDTO"
          description: API Response with Article entity
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      summary: "Get article details

        This will return all properties related to article entity

        \            "
      tags:
        - Article
  /api/Auth/login:
    post:
      operationId: Auth_Login
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LoginDTO"
        description: Login Credentials
        required: true
        x-name: user
        x-position: 1
      responses:
        "200":
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: Authorizized with a new token or unauthorized request.
      summary: "Authenticate and provide token for autherizations.

        \            "
      tags:
        - Auth
  "/api/Gym/{gymID}":
    get:
      operationId: Gym_get
      parameters:
        - description: indentity number (primary key) for gym object
          in: path
          name: gymID
          required: true
          schema:
            format: int32
            type: integer
          x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfGymDTO"
          description: API Response with Gym entity
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiResponse"
          description: ""
      summary: "Get gym details

        This will return all properties related to gym entity

        \            "
      tags:
        - Gym
  /api/Membership:
    get:
      operationId: Membership_Get
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/MemberDTO"
                type: array
          description: API Response with all Members entity as a list.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: ""
      security:
        - bearer: []
      summary: "Get all of the members details

        This will return all properties related to member entity

        \            "
      tags:
        - Membership
    post:
      operationId: Membership_Post
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MemberDTO"
        description: member object
        required: true
        x-name: member
        x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                type: boolean
          description: newly created member entity
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: ""
      summary: "Add new Member\n            "
      tags:
        - Membership
  /api/Package:
    delete:
      operationId: Package_Delete
      parameters:
        - description: primary key of package entity
          in: query
          name: PackageId
          schema:
            format: int32
            type: integer
          x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfBoolean"
          description: "status 1  : success, status 404 : package not found, status -2: package already in use "
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfString"
          description: ""
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfString"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiException"
          description: ""
      summary: "Delete existing package\n            "
      tags:
        - Package
    get:
      operationId: Package_Get
      parameters:
        - description: primary key of package entity
          in: query
          name: packageId
          schema:
            format: int32
            type: integer
          x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfPackageDTO"
          description: all the fields that related to the package
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfPackageDTO"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiException"
          description: ""
      summary: "Get package details by packageId

        \            "
      tags:
        - Package
    post:
      operationId: Package_Post
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PackageDTO"
        description: package object
        required: true
        x-name: package
        x-position: 1
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfStatusDTO"
          description: messageId that can use to get the status of import later on.!
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiException"
          description: ""
      summary: "Insert new package into the system

        \            "
      tags:
        - Package
    put:
      operationId: Package_Put
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PackageDTO"
        description: package object
        required: true
        x-name: package
        x-position: 1
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfStatusDTO"
          description: messageId that can use to get the status of import later on.!
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiException"
          description: ""
      summary: "Update existing package by its ID

        \            "
      tags:
        - Package
  /api/Package/Search:
    get:
      operationId: Package_Search
      parameters:
        - description: part of package name
          in: query
          name: searchText
          schema:
            nullable: true
            type: string
          x-position: 1
        - description: primary key of TL gym entity
          in: query
          name: gymId
          schema:
            default: -1
            format: int32
            type: integer
          x-position: 2
        - description: filter package type.!-- default is 'all'
          in: query
          name: type
          schema:
            default: all
            nullable: true
            type: string
          x-position: 3
        - description: order by column.!-- invalid column will give internal server error
          in: query
          name: orderBy
          schema:
            default: "1"
            nullable: true
            type: string
          x-position: 4
        - description: number of recode in result and default is 100. use negative numbers to order by desc
          in: query
          name: limit
          schema:
            default: 100
            format: int32
            type: integer
          x-position: 5
        - description: number of recodes to skip
          in: query
          name: offset
          schema:
            default: 0
            format: int32
            type: integer
          x-position: 6
        - description: "active status active : 1, inactive : 2, all 3, deafult : 1"
          in: query
          name: activeStatus
          schema:
            default: 1
            format: int32
            type: integer
          x-position: 7
        - description: Packge Category Id
          in: query
          name: categoryId
          schema:
            default: -1
            format: int32
            type: integer
          x-position: 8
        - description: Start price of the price Range
          in: query
          name: startpPrice
          schema:
            default: 0
            format: decimal
            type: number
          x-position: 9
        - description: End Price of the price Range
          in: query
          name: endPrice
          schema:
            default: 9999999
            format: decimal
            type: number
          x-position: 10
        - description: "1 : MRM, 2 : Mobile "
          in: query
          name: requestSource
          schema:
            default: 1
            format: int32
            type: integer
          x-position: 11
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/DefaultResponseDTOOfPackageSearchDTO"
                type: array
          description: basic information of package entity
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfListOfPackageSearchDTO"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiException"
          description: ""
      summary: "Search packages\n            "
      tags:
        - Package
  /api/Package/UpdateStatus:
    put:
      operationId: Package_UpdateStatus
      parameters:
        - description: package Id
          in: query
          name: packageId
          schema:
            format: int32
            type: integer
          x-position: 1
        - description: "status : 1 activate, 2 : deactivate"
          in: query
          name: status
          schema:
            default: 1
            format: int32
            type: integer
          x-position: 2
        - description: Status updated User
          in: query
          name: userName
          schema:
            default: system
            nullable: true
            type: string
          x-position: 3
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfBoolean"
          description: "status 1 : success, status 404 : package not found, status -2: package already in use "
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfString"
          description: ""
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DefaultResponseDTOOfString"
          description: ""
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiException"
          description: ""
      summary: "Status update of existing package "
      tags:
        - Package
  /api/Status:
    get:
      operationId: Status_Get
      parameters:
        - description: respose of POST request
          in: query
          name: messageId
          schema:
            nullable: true
            type: string
          x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageStatus"
          description: same response result will retrun with different status and messageText
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblemDetails"
          description: ""
      summary: Get the current status of message
      tags:
        - Status
  /api/Test:
    get:
      operationId: Test_get
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TestDTO"
          description: API Response with test objects as a list.
      summary: "Get the all Test objects.

        \            "
      tags:
        - Test
  /api/User:
    get:
      operationId: User_Get
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserDTO"
          description: API Response with User entity
      summary: "Get all Users detail

        This will return all properties related to User entity

        \            "
      tags:
        - User
  /api/User/registerUser:
    post:
      operationId: User_registerUser
      parameters:
        - description: "Indentity number(primary key) for user object. Generated in DB table when inserting a record.

            \            "
          in: query
          name: UserId
          schema:
            format: int32
            type: integer
          x-position: 1
        - description: "Account number of the user.It can be any stakeholder of the application.even can be a gym.

            \            "
          in: query
          name: AccountNumber
          schema:
            nullable: true
            type: string
          x-position: 2
        - description: "If this user is a gym, then the gym number.

            \            "
          in: query
          name: GymNumber
          schema:
            nullable: true
            type: string
          x-position: 3
        - description: "Entity number that make a relationship with BOX API DB.

            \            "
          in: query
          name: ExternalEntityNumber
          schema:
            nullable: true
            type: string
          x-position: 4
        - description: "Name of the user.\n            "
          in: query
          name: Name
          schema:
            nullable: true
            type: string
          x-position: 5
        - description: "Unique number maintain by application to idenify user.

            \            "
          in: query
          name: Number
          schema:
            nullable: true
            type: string
          x-position: 6
        - description: "If Someone introduced this user to the system, then that user's UserId.

            \            "
          in: query
          name: IntroduceBy
          schema:
            format: int32
            type: integer
          x-position: 7
        - description: "Gaurdian of the this user if he/she is under 18 years old.

            \            "
          in: query
          name: Guardian
          schema:
            format: int32
            type: integer
          x-position: 8
        - description: "Type of the user.\n            "
          in: query
          name: TypeId
          schema:
            format: int32
            type: integer
          x-position: 9
      responses:
        "200":
          description: API Response
        "404":
          description: ""
      summary: "Register a new User\n            "
      tags:
        - User
  /api/User/updateuser:
    put:
      operationId: User_updateUser
      parameters:
        - description: "Indentity number(primary key) for user object. Generated in DB table when inserting a record.

            \            "
          in: query
          name: UserId
          schema:
            format: int32
            type: integer
          x-position: 1
        - description: "Account number of the user.It can be any stakeholder of the application.even can be a gym.

            \            "
          in: query
          name: AccountNumber
          schema:
            nullable: true
            type: string
          x-position: 2
        - description: "If this user is a gym, then the gym number.

            \            "
          in: query
          name: GymNumber
          schema:
            nullable: true
            type: string
          x-position: 3
        - description: "Entity number that make a relationship with BOX API DB.

            \            "
          in: query
          name: ExternalEntityNumber
          schema:
            nullable: true
            type: string
          x-position: 4
        - description: "Name of the user.\n            "
          in: query
          name: Name
          schema:
            nullable: true
            type: string
          x-position: 5
        - description: "Unique number maintain by application to idenify user.

            \            "
          in: query
          name: Number
          schema:
            nullable: true
            type: string
          x-position: 6
        - description: "If Someone introduced this user to the system, then that user's UserId.

            \            "
          in: query
          name: IntroduceBy
          schema:
            format: int32
            type: integer
          x-position: 7
        - description: "Gaurdian of the this user if he/she is under 18 years old.

            \            "
          in: query
          name: Guardian
          schema:
            format: int32
            type: integer
          x-position: 8
        - description: "Type of the user.\n            "
          in: query
          name: TypeId
          schema:
            format: int32
            type: integer
          x-position: 9
      responses:
        "200":
          description: API Response true or false
        "404":
          description: ""
      summary: "Update an exsisting User

        \            "
      tags:
        - User
components:
  schemas:
    ApiException:
      allOf:
        - $ref: "#/components/schemas/Exception"
        - additionalProperties: false
          properties:
            customError:
              nullable: true
            errors:
              items:
                $ref: "#/components/schemas/ValidationError"
              nullable: true
              type: array
            isCustomErrorObject:
              type: boolean
            isModelValidatonError:
              type: boolean
            referenceDocumentLink:
              nullable: true
              type: string
            referenceErrorCode:
              nullable: true
              type: string
            statusCode:
              format: int32
              type: integer
          type: object
    ApiResponse:
      additionalProperties: false
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          nullable: true
        statusCode:
          format: int32
          type: integer
        version:
          nullable: true
          type: string
      type: object
    ArticleDTO:
      additionalProperties: false
      description: "The ArticleDTO Class.

        Contains relevant fields of Article DTO by masking actual Article entity's fields in application.

        \            "
      properties:
        activeStatus:
          description: "Active Status "
          type: boolean
        applyForAllGyms:
          type: boolean
        articleId:
          format: int32
          type: integer
        availableGyms:
          items:
            $ref: "#/components/schemas/GymDTO"
          type: array
        availableQty:
          description: Default AvailableQty
          format: decimal
          type: number
        barcode:
          maxLength: 100
          minLength: 0
          nullable: true
          type: string
        createdDate:
          format: date-time
          type: string
        createdUser:
          nullable: true
          type: string
        cronExpression:
          description: "Access Schedule CRON Expression "
          nullable: true
          type: string
        description:
          nullable: true
          type: string
        discount:
          format: decimal
          pattern: ^\d+.\d{0,2}$|^\d
          type: number
        employeeDiscount:
          description: Default EmployeeDiscount
          format: decimal
          type: number
        employeePrice:
          description: Default EmployeePrice
          format: decimal
          type: number
        gymArticles:
          description: "Gym Customizations "
          items:
            $ref: "#/components/schemas/GymArticleDetailsDTO"
          nullable: true
          type: array
        isAddOn:
          type: boolean
        isInventoryItem:
          description: "Default IsInventoryItem of the Article "
          type: boolean
        isObsolete:
          description: "Default IsObsolete of the Article "
          type: boolean
        measureUnit:
          minLength: 1
          type: string
        modifiedDate:
          format: date-time
          type: string
        modifiedUser:
          nullable: true
          type: string
        name:
          maxLength: 100
          minLength: 0
          type: string
        number:
          format: int32
          type: integer
        price:
          format: decimal
          pattern: ^\d+.\d{0,2}$|^\d
          type: number
        reorderLevel:
          description: Deafault ReorderLevel
          format: decimal
          type: number
        revenueAccountId:
          description: Default Revenue account
          format: int32
          type: integer
        sellingPrice:
          description: Default SellingPrice
          format: decimal
          type: number
        tags:
          maxLength: 200
          minLength: 0
          nullable: true
          type: string
        type:
          minLength: 1
          pattern: item|service|access
          type: string
        vat:
          format: decimal
          pattern: ^\d+.\d{0,2}$|^\d
          type: number
        vatApplicable:
          description: "VAT Applicable "
          type: boolean
      required:
        - name
        - type
        - price
        - measureUnit
        - availableGyms
      type: object
    ArticleSearchDTO:
      additionalProperties: false
      description: "The ArticleSearchDTO Class.

        Contains relevant fields of ArticleSearch DTO by masking actual Article entity's fields in application.

        \            "
      properties:
        activeStatus:
          description: "Active Status "
          type: boolean
        applyForAllGyms:
          type: boolean
        articleId:
          format: int32
          type: integer
        createdDate:
          format: date-time
          type: string
        createdUser:
          nullable: true
          type: string
        description:
          nullable: true
          type: string
        measureUnit:
          description: "MeasureUnit "
          nullable: true
          type: string
        modifiedDate:
          format: date-time
          type: string
        modifiedUser:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        number:
          format: int32
          type: integer
        price:
          format: decimal
          type: number
        sellingPrice:
          description: "Actual Selling price of the article "
          format: decimal
          type: number
        tags:
          nullable: true
          type: string
        totalCount:
          description: "total number of recode for particular search "
          format: int32
          type: integer
        type:
          description: article type
          nullable: true
          type: string
      type: object
    DefaultResponseDTOOfArticleDTO:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/ArticleDTO"
      type: object
    DefaultResponseDTOOfBoolean:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          type: boolean
      type: object
    DefaultResponseDTOOfGymDTO:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/GymDTO"
      type: object
    DefaultResponseDTOOfInteger:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          format: int32
          type: integer
      type: object
    DefaultResponseDTOOfListOfArticleSearchDTO:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          items:
            $ref: "#/components/schemas/ArticleSearchDTO"
          nullable: true
          type: array
      type: object
    DefaultResponseDTOOfListOfPackageSearchDTO:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          items:
            $ref: "#/components/schemas/PackageSearchDTO"
          nullable: true
          type: array
      type: object
    DefaultResponseDTOOfPackageDTO:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/PackageDTO"
      type: object
    DefaultResponseDTOOfPackageSearchDTO:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/PackageSearchDTO"
      type: object
    DefaultResponseDTOOfStatusDTO:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/StatusDTO"
      type: object
    DefaultResponseDTOOfString:
      additionalProperties: false
      description: "The DefaultResponseDTO Class.

        Contains fields of DefaultResponse DTO in application.

        \            "
      properties:
        isError:
          type: boolean
        message:
          nullable: true
          type: string
        responseException:
          nullable: true
        result:
          nullable: true
          type: string
      type: object
    Exception:
      additionalProperties: false
      properties:
        InnerException:
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/Exception"
        Message:
          type: string
        Source:
          nullable: true
          type: string
        StackTrace:
          nullable: true
          type: string
      type: object
    GymArticleDetailsDTO:
      additionalProperties: false
      description: "The GymArticleDetailsDTO Class.

        Contains fields of GymArticleDetails DTO in application.

        \            "
      properties:
        articleId:
          format: int32
          type: integer
        availableQty:
          format: decimal
          type: number
        createdUser:
          description: "Created User "
          nullable: true
          type: string
        employeeDiscount:
          format: decimal
          type: number
        employeePrice:
          format: decimal
          type: number
        gymId:
          description: "Gym Id where article is related "
          format: int32
          type: integer
        gymIdList:
          description: "GymId - Gym Id string with comma separated GymIds "
          nullable: true
          type: string
        gymName:
          description: Gym Name
          nullable: true
          type: string
        id:
          format: int32
          type: integer
        isDefault:
          description: "Set as the default values for the article "
          type: boolean
        isInventoryItem:
          type: boolean
        isObsolete:
          type: boolean
        modifiedUser:
          description: Modified user
          nullable: true
          type: string
        reorderLevel:
          format: decimal
          type: number
        revenueAccountId:
          description: Revenue account Id
          format: int32
          type: integer
        sellingPrice:
          format: decimal
          type: number
      type: object
    GymDTO:
      additionalProperties: false
      description: "The GymDTO Class.

        Contains relevant fields of Gym DTO by masking actual Gym entity's fields in application.

        \            "
      properties:
        externalGymNumber:
          format: int32
          type: integer
        gymId:
          format: int32
          type: integer
        gymName:
          nullable: true
          type: string
        location:
          nullable: true
          type: string
      type: object
    LoginDTO:
      additionalProperties: false
      description: "The LoginDTO Class.

        Contains relevant fields of Login DTO.

        \            "
      properties:
        password:
          nullable: true
          type: string
        remember:
          type: boolean
        username:
          nullable: true
          type: string
      type: object
    MeasureUnitDTO:
      additionalProperties: false
      description: "Mesure unit to represent article mesure unit "
      properties:
        id:
          description: Id of the table
          format: int32
          type: integer
        name:
          description: Mesure Unit Type
          nullable: true
          type: string
        type:
          description: Type of the article used with (all, service, item)
          nullable: true
          type: string
      type: object
    MemberDTO:
      additionalProperties: false
      description: "The MemeberDTO Class.

        Contains relevant fields of Member DTO by masking actual Member entity's fields in application.

        \            "
      properties:
        name:
          nullable: true
          type: string
      type: object
    MessageStatus:
      additionalProperties: false
      properties:
        messageId:
          nullable: true
          type: string
        referenceId:
          format: int32
          type: integer
        source:
          nullable: true
        statusId:
          format: int32
          type: integer
        statusText:
          nullable: true
          type: string
      type: object
    PackageDTO:
      additionalProperties: false
      description: "The PackageDTO Class.

        Contains relevant fields of Package DTO by masking actual Package entity's fields in application.

        \            "
      properties:
        addOns:
          description: "Extra articles list added to the given package.

            \            "
          items:
            $ref: "#/components/schemas/PackageItemDTO"
          nullable: true
          type: array
        addonFee:
          description: "sum of addon fees.

            incoming values for this filed will ignore.

            \            "
          format: decimal
          type: number
        applyForAllGyms:
          description: "Boolean value to indicate wheather package is available in all the gyms.

            \            "
          type: boolean
        availableGyms:
          description: "Gyms list where this package is available.

            \            "
          items:
            $ref: "#/components/schemas/GymDTO"
          nullable: true
          type: array
        bindingPeriod:
          description: "Range of period a member is bound to the contract if he/she choose this package.

            \            "
          format: int32
          type: integer
        createdDate:
          description: "Package created DateTime.

            \            "
          format: date-time
          type: string
        createdUser:
          description: "Package created user.\n            "
          nullable: true
          type: string
        description:
          description: "Common descriptions about package.If there are more instructions\ 

            \             can be stored as comma separated values.

            \            "
          nullable: true
          type: string
        endDate:
          description: "End date of the package.After that package is not valid for use.

            \            "
          format: date-time
          type: string
        expireInMonths:
          description: "No of months the fixed package is valid for sale

            \            "
          format: int32
          type: integer
        features:
          description: "What are the facilities, features available for package.ex:- wifi,

            ACm etc.Can be stored as comma seperated values.

            \            "
          nullable: true
          type: string
        freeMonths:
          description: "No of months gym member can come without payments.

            \            "
          format: int32
          type: integer
        instructionsToGymUsers:
          description: "Instruction to the gym members relevant to the package.

            \             If there are more instructions can be stored as comma seperated values.

            \            "
          nullable: true
          type: string
        instructionsToWebUsers:
          description: "Instruction to the MRM members relevant to the package.

            \             If there are more instructions can be stored as comma seperated values.

            \            "
          nullable: true
          type: string
        isActive:
          description: "Boolean value to indicate this package is still active or not.

            \            "
          type: boolean
        isAtg:
          description: "Boolean value to indicate ATG transaction from bank is applicable or not.

            \            "
          type: boolean
        isAutoRenew:
          description: "Boolean value to indicate the contract will auto renew after expiration\ 

            \             if this package would be chosen.

            \            "
          type: boolean
        isFirstMonthFree:
          description: "Boolean value to indicate if the first month charges is free.

            \            "
          type: boolean
        isRegistrationFee:
          description: "Boolean value to indicate this package has registration fee or not.

            \            "
          type: boolean
        isRestAmount:
          description: "Boolean value to indicate rest amount is applicable or not.

            \            "
          type: boolean
        isShownInMobile:
          description: "Boolean value to indicate package is visible in Mobile App or not.

            \            "
          type: boolean
        isSponsorPackage:
          description: "Boolean value to indicate package can be sponsored or not by other party.

            \            "
          type: boolean
        maximumGiveAwayRestAmount:
          description: "If a member join the gym middle of a month via this package,\ 

            \             what is the maximum amount of price can be neglected from payment from the member.

            \            "
          format: decimal
          type: number
        memberCanAddAddOns:
          description: "Boolean value to indicate member can add extra addons he wish if he choose this package.

            \            "
          type: boolean
        memberCanLeaveWithinFreePeriod:
          description: "Boolean value to indicate if member can leave from contract within\ 

            \             free period if he/she choose this package.

            \            "
          type: boolean
        memberCanRemoveAddOns:
          description: "Boolean value to indicate member can remove already added addons if he choose this package.

            \            "
          type: boolean
        modifiedDate:
          description: "Package last modified DateTime.

            \            "
          format: date-time
          type: string
        modifiedUser:
          description: "Package last modified user.

            \            "
          nullable: true
          type: string
        monthlyFee:
          description: "Monthly installment fee if package is not fixed visit.

            addition of the servicefee and addon fees divided by binding period.

            \             read only

            \            "
          format: decimal
          type: number
        nextPackageNumber:
          description: "Next Package the contract continue after the binding period of this package.

            \            "
          format: int32
          type: integer
        numberOfInstallments:
          description: "Maximum Number of installment a member can divide the package price/cost to pay.

            \            "
          format: int32
          type: integer
        numberOfVisits:
          description: "If package is fixed visit type, then how many visits are available for this package.

            \            "
          format: int32
          type: integer
        packageId:
          format: int32
          type: integer
        packageName:
          minLength: 1
          type: string
        packageNumber:
          nullable: true
          type: string
        packageType:
          description: "Package type can be either fixed visit or unlimited.

            \            "
          minLength: 1
          pattern: fixedvisit|unlimited
          type: string
        perVisitPrice:
          description: "Cost/Price of the single visit to gym.

            \            "
          format: decimal
          type: number
        registrationFee:
          description: "Registartion fee for the package at a gym.

            \             read only

            \            "
          format: decimal
          type: number
        serviceFee:
          description: "total Service charge of the package for entire period.

            \            "
          format: decimal
          type: number
        shownInWeb:
          description: "Boolean value to show this package in MRM system or not.

            \            "
          type: boolean
        startDate:
          description: "Start date of the package.

            \            "
          format: date-time
          type: string
        tags:
          description: "Comma separated string values in case of need of maintain some labels kind of\ 

            \             stuff relevant to the package.

            \            "
          nullable: true
          type: string
        totalPrice:
          description: "total price for the package including Addon fees, service fee and registration fee.

            incoming values for this field will ignore.

            \            "
          format: decimal
          type: number
      required:
        - packageName
        - registrationFee
        - packageType
        - serviceFee
      type: object
    PackageItemDTO:
      additionalProperties: false
      description: "The PackageItemDTO Class.

        Contains relevant fields of PackageItem DTO by masking actual Package entity's fields in application.

        \            "
      properties:
        articleId:
          description: "Refer to ArticleId in Article table in DB.

            \            "
          format: int32
          type: integer
        articleName:
          description: "Name of the article(Addon) in a particular package.

            \             read only

            \            "
          nullable: true
          type: string
        articleNumber:
          description: "Number assigned the article(Addon) in a particular package.

            \             read only

            \            "
          format: int32
          type: integer
        articlePrice:
          description: "Price of the article determined from that package.

            Price of a same article can be varied from package to package.

            \            "
          format: decimal
          type: number
        endOrder:
          description: "Number of the installment this article is available to.

            \            "
          format: int32
          type: integer
        isIncludeServiceInCharge:
          description: "Is Included in service charge "
          type: boolean
        measureUnit:
          nullable: true
          type: string
        numberOfItems:
          description: "How many article(Addon) is available for that package from that type.

            \            "
          format: decimal
          type: number
        startOrder:
          description: "Number of the installment this article is available from.

            \            "
          format: int32
          type: integer
      required:
        - articleId
      type: object
    PackageSearchDTO:
      additionalProperties: false
      description: "The PackageSearchDTO Class.

        Contains relevant fields of PackageSearch DTO by masking actual Package entity's fields in application.

        \               "
      properties:
        activeStatus:
          description: "Active Status "
          type: boolean
        addonFee:
          description: "sum of addon fees.

            incoming values for this filed will ignore.

            \            "
          format: decimal
          type: number
        applyForAllGyms:
          description: "Boolean value to indicate wheather package is available in all the gyms.

            \            "
          type: boolean
        bindingPeriod:
          description: "Range of period a member is bound to the contract if he/she choose this package.

            \            "
          format: int32
          type: integer
        createdDate:
          description: "Package created DateTime.

            \            "
          format: date-time
          type: string
        createdUser:
          description: "Package created user.\n            "
          nullable: true
          type: string
        description:
          description: "Common descriptions about package.If there are more instructions can be stored as comma separated values.

            \            "
          nullable: true
          type: string
        features:
          description: "What are the facilities, features available for package.ex:- wifi, ACm etc.Can be stored as comma seperated values.

            \            "
          nullable: true
          type: string
        freeMonths:
          description: "No of months gym member can come without payments.

            \            "
          format: int32
          type: integer
        memberCanRemoveAddOns:
          description: "Boolean value to indicate member can remove already added addons if he choose this package.

            \            "
          type: boolean
        modifiedDate:
          description: "Package last modified DateTime.

            \            "
          format: date-time
          type: string
        modifiedUser:
          description: "Package last modified user.

            \            "
          nullable: true
          type: string
        monthlyFee:
          description: "Monthly installment fee if package is not fixed visit.

            addition of the servicefee and addon fees divided by binding period.

            \            "
          format: decimal
          type: number
        numberOfVisits:
          description: "No of visits for fixed package "
          format: int32
          type: integer
        packageId:
          format: int32
          type: integer
        packageName:
          nullable: true
          type: string
        packageNumber:
          format: int32
          type: integer
        packageType:
          description: "Package type can be either fixed visit or unlimited.

            \            "
          nullable: true
          type: string
        registrationFee:
          description: "Registartion fee for the package at a gym.

            \            "
          format: decimal
          type: number
        serviceFee:
          description: "total Service charge of the package for entire period.

            \            "
          format: decimal
          type: number
        tags:
          description: "Comma separated string values in case of need of maintain some labels kind of stuff relevant to the package.

            \            "
          nullable: true
          type: string
        totalCount:
          description: "total number of recode for particular search "
          format: int32
          type: integer
        totalPrice:
          description: "total price for the package including Addon fees, service fee and registration fee.

            incoming values for this field will ignore.

            \            "
          format: decimal
          type: number
      type: object
    ProblemDetails:
      additionalProperties: false
      properties:
        detail:
          nullable: true
          type: string
        extensions:
          additionalProperties: {}
          nullable: true
          type: object
        instance:
          nullable: true
          type: string
        status:
          format: int32
          nullable: true
          type: integer
        title:
          nullable: true
          type: string
        type:
          nullable: true
          type: string
      type: object
    StatusDTO:
      additionalProperties: false
      description: "Imideate response for long running api call.

        \            "
      properties:
        messageId:
          description: "Reference id for status endpoint

            \            "
          nullable: true
          type: string
        statusText:
          description: "Status of API Call\n            "
          nullable: true
          type: string
        url:
          description: "Relative url for stauts check

            \            "
          nullable: true
          type: string
      type: object
    TestDTO:
      additionalProperties: false
      description: "The TestDTO Class.

        Contains relevant fields of Test DTO by masking actual Test entity's fields in application.

        \            "
      properties:
        id:
          description: "Id of the Test object\n            "
          format: int32
          type: integer
      type: object
    UserDTO:
      additionalProperties: false
      description: "The UserDTO Class.

        Contains relevant fields of User DTO by masking actual User entity's fields in application.

        \            "
      properties:
        accountNumber:
          description: "Account number of the user.It can be any stakeholder of the application.even can be a gym.

            \            "
          nullable: true
          type: string
        externalEntityNumber:
          description: "Entity number that make a relationship with BOX API DB.

            \            "
          nullable: true
          type: string
        guardian:
          description: "Gaurdian of the this user if he/she is under 18 years old.

            \            "
          format: int32
          type: integer
        gymNumber:
          description: "If this user is a gym, then the gym number.

            \            "
          nullable: true
          type: string
        introduceBy:
          description: "If Someone introduced this user to the system, then that user's UserId.

            \            "
          format: int32
          type: integer
        name:
          description: "Name of the user.\n            "
          nullable: true
          type: string
        number:
          description: "Unique number maintain by application to idenify user.

            \            "
          nullable: true
          type: string
        typeId:
          description: "Type of the user.\n            "
          format: int32
          type: integer
        userId:
          description: "Indentity number(primary key) for user object. Generated in DB table when inserting a record.

            \            "
          format: int32
          type: integer
      type: object
    ValidationError:
      additionalProperties: false
      properties:
        field:
          nullable: true
          type: string
        message:
          nullable: true
          type: string
      type: object
  securitySchemes:
    apikey:
      in: header
      name: Ocp-Apim-Subscription-Key
      type: apiKey
    bearer:
      description: auth0 authentication
      flows:
        authorizationCode:
          authorizationUrl: https://tldev.eu.auth0.com/authorize
          scopes:
            read:tl_articles: read:tl_articles
            read:tl_packages: read:tl_packages
          tokenUrl: https://tldev.eu.auth0.com/oauth/token
      type: oauth2
x-generator: NSwag v13.4.2.0 (NJsonSchema v10.1.11.0 (Newtonsoft.Json v12.0.0.0))
