openapi: 3.0.0
servers:
  - url: https://keyserv.solutions
info:
  contact:
    x-twitter: theTechComp
  description: KeyServ API
  title: KeyServ
  version: 1.4.5
  x-apisguru-categories:
    - iot
  x-logo:
    url: https://twitter.com/theTechComp/profile_image?size=original
  x-origin:
    - format: openapi
      url: https://keyserv.solutions/v1/spec.json
      version: "3.0"
  x-providerName: keyserv.solutions
paths:
  "/v1/KeysApi/Current/{serial}":
    get:
      operationId: KeysApi_Current
      parameters:
        - in: path
          name: serial
          required: true
          schema:
            format: guid
            type: string
          x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                nullable: true
                oneOf:
                  - $ref: "#/components/schemas/CurrentKey"
          description: ""
      tags:
        - KeysApi
  "/v1/KeysApi/Custom/{serial}":
    get:
      operationId: KeysApi_Custom
      parameters:
        - in: path
          name: serial
          required: true
          schema:
            format: guid
            type: string
          x-position: 1
      responses:
        "200":
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: ""
      tags:
        - KeysApi
  "/v1/KeysApi/Expiry/{serial}":
    get:
      operationId: KeysApi_Expiry
      parameters:
        - in: path
          name: serial
          required: true
          schema:
            format: guid
            type: string
          x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                nullable: true
                oneOf:
                  - $ref: "#/components/schemas/Expiry"
          description: ""
      tags:
        - KeysApi
  "/v1/KeysApi/Find/{serial}":
    get:
      operationId: KeysApi_Find
      parameters:
        - in: path
          name: serial
          required: true
          schema:
            format: guid
            type: string
          x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                nullable: true
                oneOf:
                  - $ref: "#/components/schemas/KeyView"
          description: ""
      tags:
        - KeysApi
  /v1/ProductsApi:
    patch:
      operationId: ProductsApi_PatchProduct
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/ProductCreateModify"
        required: true
        x-name: productJson
        x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - ProductsApi
    post:
      operationId: ProductsApi_PatchProduct2
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/ProductCreateModify"
        required: true
        x-name: productJson
        x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - ProductsApi
  /v1/ProductsApi/Count:
    post:
      operationId: ProductsApi_Count
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/ApiKey"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                nullable: true
                oneOf:
                  - $ref: "#/components/schemas/CountOf"
          description: ""
      tags:
        - ProductsApi
  /v1/ProductsApi/Find:
    post:
      operationId: ProductsApi_Find
      parameters:
        - in: query
          name: page
          required: false
          schema:
            format: int32
            nullable: true
            type: integer
          x-position: 2
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/FindCredentials"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                nullable: true
                oneOf:
                  - $ref: "#/components/schemas/ProductView"
          description: ""
      tags:
        - ProductsApi
  /v1/ProductsApi/List:
    post:
      operationId: ProductsApi_List
      parameters:
        - in: query
          name: page
          required: false
          schema:
            format: int32
            nullable: true
            type: integer
          x-position: 2
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/ApiKey"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ProductView"
                nullable: true
                type: array
          description: ""
      tags:
        - ProductsApi
  /v1/ProductsApi/Save:
    post:
      operationId: ProductsApi_Save
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/ProductCreateModify"
        required: true
        x-name: productJson
        x-position: 1
      responses:
        "201":
          content:
            application/json:
              schema:
                nullable: true
                oneOf:
                  - $ref: "#/components/schemas/ProductView"
          description: ""
      tags:
        - ProductsApi
  "/v1/ProductsApi/{serial}":
    delete:
      operationId: ProductsApi_DeleteProduct
      parameters:
        - in: header
          name: X-Api-Key
          required: true
          schema:
            format: guid
            type: string
        - in: path
          name: serial
          required: true
          schema:
            format: guid
            type: string
          x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - ProductsApi
    post:
      operationId: ProductsApi_DeleteProduct2
      parameters:
        - in: header
          name: X-Api-Key
          required: true
          schema:
            format: guid
            type: string
        - in: path
          name: serial
          required: true
          schema:
            format: guid
            type: string
          x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - ProductsApi
  /v1/SubscriptionsApi:
    post:
      operationId: SubscriptionsApi_PutSubscription2
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/SubscriptionCreateModify"
        required: true
        x-name: subscriptionJson
        x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - SubscriptionsApi
    put:
      operationId: SubscriptionsApi_PutSubscription
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/SubscriptionCreateModify"
        required: true
        x-name: subscriptionJson
        x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - SubscriptionsApi
  /v1/SubscriptionsApi/Count:
    post:
      operationId: SubscriptionsApi_Count
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/ApiCredentials"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                nullable: true
                oneOf:
                  - $ref: "#/components/schemas/CountOf"
          description: ""
      tags:
        - SubscriptionsApi
  /v1/SubscriptionsApi/Disable:
    patch:
      operationId: SubscriptionsApi_Disable
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/FindCredentials"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - SubscriptionsApi
    post:
      operationId: SubscriptionsApi_Disable2
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/FindCredentials"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - SubscriptionsApi
  /v1/SubscriptionsApi/Enable:
    patch:
      operationId: SubscriptionsApi_Enable
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/FindCredentials"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - SubscriptionsApi
    post:
      operationId: SubscriptionsApi_Enable2
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/FindCredentials"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "204":
          description: ""
      tags:
        - SubscriptionsApi
  /v1/SubscriptionsApi/Find:
    post:
      operationId: SubscriptionsApi_Find
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/FindCredentials"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                nullable: true
                oneOf:
                  - $ref: "#/components/schemas/SubscriptionView"
          description: ""
      tags:
        - SubscriptionsApi
  /v1/SubscriptionsApi/List:
    post:
      operationId: SubscriptionsApi_List
      parameters:
        - in: query
          name: page
          required: false
          schema:
            format: int32
            nullable: true
            type: integer
          x-position: 2
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/FindCredentials"
        required: true
        x-name: apiCreds
        x-position: 1
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/SubscriptionView"
                nullable: true
                type: array
          description: ""
      tags:
        - SubscriptionsApi
  /v1/SubscriptionsApi/Save:
    post:
      operationId: SubscriptionsApi_Save
      requestBody:
        content:
          application/json:
            schema:
              nullable: true
              oneOf:
                - $ref: "#/components/schemas/SubscriptionCreateModify"
        required: true
        x-name: subscriptionJson
        x-position: 1
      responses:
        "201":
          content:
            application/json:
              schema:
                nullable: true
                oneOf:
                  - $ref: "#/components/schemas/KeyView"
          description: ""
      tags:
        - SubscriptionsApi
  "/v1/SubscriptionsApi/{serial}":
    delete:
      operationId: SubscriptionsApi_DeleteSubscription
      parameters:
        - in: header
          name: X-Api-Key
          required: true
          schema:
            format: guid
            type: string
        - in: path
          name: serial
          required: true
          schema:
            format: guid
            type: string
          x-position: 1
        - in: query
          name: keep
          required: true
          schema:
            nullable: true
            type: boolean
          x-position: 2
      responses:
        "204":
          description: ""
      tags:
        - SubscriptionsApi
    post:
      operationId: SubscriptionsApi_DeleteSubscription2
      parameters:
        - in: header
          name: X-Api-Key
          required: true
          schema:
            format: guid
            type: string
        - in: path
          name: serial
          required: true
          schema:
            format: guid
            type: string
          x-position: 1
        - in: query
          name: keep
          required: true
          schema:
            nullable: true
            type: boolean
          x-position: 2
      responses:
        "204":
          description: ""
      tags:
        - SubscriptionsApi
components:
  schemas:
    ApiCredentials:
      additionalProperties: false
      properties:
        key:
          format: guid
          type: string
        serial:
          format: guid
          nullable: true
          type: string
      type: object
    ApiKey:
      additionalProperties: false
      properties:
        key:
          format: guid
          type: string
      type: object
    CountOf:
      additionalProperties: false
      properties:
        count:
          format: int32
          type: integer
      type: object
    CurrentKey:
      additionalProperties: false
      properties:
        current:
          type: boolean
      type: object
    Expiry:
      additionalProperties: false
      properties:
        expires:
          format: date-time
          type: string
        time:
          format: time-span
          type: string
      type: object
    FindCredentials:
      additionalProperties: false
      properties:
        key:
          format: guid
          type: string
        serial:
          format: guid
          type: string
      type: object
    KeyView:
      additionalProperties: false
      properties:
        action:
          minLength: 1
          type: string
        callbackOnModify:
          title: Callback On Modified
          type: boolean
        callbackUrl:
          format: uri
          maxLength: 800
          minLength: 0
          nullable: true
          title: Callback Url
          type: string
        commenced:
          format: date-time
          minLength: 1
          title: Start From
          type: string
        created:
          format: date-time
          type: string
        current:
          type: boolean
        custom:
          nullable: true
        frequency:
          minLength: 1
          type: string
        name:
          maxLength: 80
          minLength: 0
          nullable: true
          type: string
        serial:
          format: guid
          type: string
        updated:
          format: date-time
          nullable: true
          type: string
      required:
        - commenced
        - callbackOnModify
        - frequency
        - action
      type: object
    ProductCreateModify:
      additionalProperties: false
      properties:
        custom:
          nullable: true
        key:
          format: guid
          type: string
        name:
          nullable: true
          type: string
        serial:
          format: guid
          nullable: true
          type: string
      type: object
    ProductView:
      additionalProperties: false
      properties:
        created:
          format: date-time
          type: string
        custom:
          nullable: true
        name:
          maxLength: 80
          minLength: 0
          nullable: true
          type: string
        serial:
          format: guid
          type: string
        subscriptions:
          items:
            $ref: "#/components/schemas/SubscriptionView"
          nullable: true
          type: array
        updated:
          format: date-time
          nullable: true
          type: string
      type: object
    SubscriptionCreateModify:
      additionalProperties: false
      properties:
        action:
          minLength: 1
          type: string
        callbackOnModify:
          nullable: true
          type: boolean
        callbackUrl:
          format: uri
          maxLength: 800
          minLength: 0
          nullable: true
          title: Callback Url
          type: string
        custom:
          nullable: true
        frequency:
          minLength: 1
          type: string
        key:
          format: guid
          type: string
        name:
          maxLength: 80
          minLength: 0
          nullable: true
          type: string
        serial:
          format: guid
          type: string
        startFrom:
          nullable: true
          type: string
      required:
        - frequency
        - action
      type: object
    SubscriptionView:
      additionalProperties: false
      properties:
        action:
          minLength: 1
          type: string
        callbackOnModify:
          title: Callback On Modified
          type: boolean
        callbackUrl:
          format: uri
          maxLength: 800
          minLength: 0
          nullable: true
          title: Callback Url
          type: string
        commenced:
          format: date-time
          minLength: 1
          title: Start From
          type: string
        created:
          format: date-time
          type: string
        custom:
          nullable: true
        frequency:
          minLength: 1
          type: string
        keys:
          items:
            $ref: "#/components/schemas/KeyView"
          nullable: true
          type: array
        name:
          maxLength: 80
          minLength: 0
          nullable: true
          type: string
        updated:
          format: date-time
          nullable: true
          type: string
      required:
        - commenced
        - callbackOnModify
        - frequency
        - action
      type: object
x-generator: NSwag v13.0.6.0 (NJsonSchema v10.0.23.0 (Newtonsoft.Json v11.0.0.0))
