swagger: "2.0"
info:
  version: 0.3.0
  title: "research"
  description: "Customer Information Microservice"
  termsOfService: "https://salesforcedevops.net/terms/"
  contact:
    email: "vern@vernonkeenan.com"
  license:
    name: "Proprietary - Copyright (c) 2018-2023 by Vernon Keenan"
securityDefinitions:
  ApiKeyAuth:
    type: "apiKey"
    in: "header"
    name: "X-API-Key"
schemes:
  - "https"
basePath: "/vk/research/v1"
host: "gw.tnxs.net"
consumes:
  - "application/json"
produces:
  - "application/json"
parameters:
  accountIdQuery:
    description: Record Id of an Account
    in: query
    name: accountId
    required: false
    type: string
  activeQuery:
    description: Only retrieve active records?
    in: query
    name: active
    required: false
    type: boolean
  companyProductIdQuery:
    description: CompanyProduct record ID
    in: query
    name: companyProductId
    required: false
    type: string
  companyServiceIdQuery:
    description: CompanyService record ID
    in: query
    name: companyServiceId
    required: false
    type: string
  companyProductRequest:
    description: An array of new CompanyProduct records
    in: body
    name: companyProductRequest
    required: true
    schema:
      $ref: "#/definitions/CompanyProductRequest"
  companyServiceRequest:
    description: An array of new CompanyService records
    in: body
    name: companyServiceRequest
    required: true
    schema:
      $ref: "#/definitions/CompanyServiceRequest"
  contactIdQuery:
    description: Contact record ID
    in: query
    name: contactId
    required: false
    type: string
  emailQuery:
    description: Email address used for identity lookup
    in: query
    name: email
    required: false
    type: string
  factorIdQuery:
    description: Factor record ID
    in: query
    name: factorId
    required: false
    type: string
  financialStatementIdQuery:
    description: Financial Statement record ID
    in: query
    name: financialStatementId
    required: false
    type: string
  factorRequest:
    description: An array of new Factor records
    in: body
    name: factorRequest
    required: true
    schema:
      $ref: "#/definitions/FactorRequest"
  financialStatementRequest:
    description: An array of new FinancialStatement records
    in: body
    name: financialStatementRequest
    required: true
    schema:
      $ref: "#/definitions/FinancialStatementRequest"
  industryCompanyIdQuery:
    description: IndustryCompany record ID
    in: query
    name: industryCompanyId
    required: false
    type: string
  industryCompanyRequest:
    description: An array of new IndustryCompany records
    in: body
    name: industryCompanyRequest
    required: true
    schema:
      $ref: "#/definitions/IndustryCompanyRequest"
  industryIdQuery:
    description: Industry record ID
    in: query
    name: industryId
    required: false
    type: string
  productCategoryQuery:
    description: Is this industry a product category?
    in: query
    name: productCategory
    required: false
    type: boolean
  serviceCategoryQuery:
    description: Is this industry a service category?
    in: query
    name: serviceCategory
    required: false
    type: boolean
  industryProductIdQuery:
    description: IndustryProduct record ID
    in: query
    name: industryProductId
    required: false
    type: string
  industryProductRequest:
    description: An array of new IndustryProduct records
    in: body
    name: industryProductRequest
    required: true
    schema:
      $ref: "#/definitions/IndustryProductRequest"
  industryServiceIdQuery:
    description: IndustryService record ID
    in: query
    name: industryServiceId
    required: false
    type: string
  industryServiceRequest:
    description: An array of new IndustryService records
    in: body
    name: industryServiceRequest
    required: true
    schema:
      $ref: "#/definitions/IndustryServiceRequest"
  industryRequest:
    description: An array of new Industry records
    in: body
    name: industryRequest
    required: true
    schema:
      $ref: "#/definitions/IndustryRequest"
  leadIdQuery:
    description: Lead record ID
    in: query
    name: leadId
    required: false
    type: string
  limitQuery:
    description: How many objects to return at one time
    format: int64
    in: query
    name: limit
    required: false
    type: integer
  nameQuery:
    description: The Name of this Object
    in: query
    name: name
    required: false
    type: string
  slugQuery:
    description: The Slug of this Object
    in: query
    name: slug
    required: false
    type: string
  observationIdQuery:
    description: Observation record ID
    in: query
    name: observationId
    required: false
    type: string
  observationRequest:
    description: An array of new Observation records
    in: body
    name: observationRequest
    required: true
    schema:
      $ref: "#/definitions/ObservationRequest"
  offsetQuery:
    description: How many objects to skip?
    format: int64
    in: query
    name: offset
    required: false
    type: integer
  topicIdQuery:
    description: Topic record ID
    in: query
    name: topicId
    required: false
    type: string
  topicRequest:
    description: An array of new Topic records
    in: body
    name: topicRequest
    required: true
    schema:
      $ref: "#/definitions/TopicRequest"
  typeQuery:
    description: The Type of this Object
    in: query
    name: type
    required: false
    type: string

responses:
  AccessForbidden:
    description: Access forbidden, account lacks access
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/Error"
  CompanyProductResponse:
    description: Response with CompanyProduct objects
    schema:
      $ref: "#/definitions/CompanyProductResponse"
  CompanyServiceResponse:
    description: Response with CompanyService objects
    schema:
      $ref: "#/definitions/CompanyServiceResponse"
  Conflict:
    description: Conflict
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/Error"
  DeleteResponse:
    description: Response with Message Objects with Delete Status
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/DeleteResponse"
  FactorResponse:
    description: Response with Factor objects
    schema:
      $ref: "#/definitions/FactorResponse"
  FinancialStatementResponse:
    description: Response with FinancialStatement objects
    schema:
      $ref: "#/definitions/FinancialStatementResponse"
  IndustryCompanyResponse:
    description: Response with IndustryCompany objects
    schema:
      $ref: "#/definitions/IndustryCompanyResponse"
  IndustryProductResponse:
    description: Response with IndustryProduct objects
    schema:
      $ref: "#/definitions/IndustryProductResponse"
  IndustryServiceResponse:
    description: Response with IndustryService objects
    schema:
      $ref: "#/definitions/IndustryServiceResponse"
  IndustryResponse:
    description: Response with Industry objects
    schema:
      $ref: "#/definitions/IndustryResponse"
  InvalidDataError:
    description: Invalid data was sent
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/InvalidError"
  NotFound:
    description: Resource was not found
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/Error"
  ObservationResponse:
    description: Response with Observation objects
    schema:
      $ref: "#/definitions/ObservationResponse"
  ServerError:
    description: Server Internal Error
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/Error"
  TopicResponse:
    description: Response with Topic objects
    schema:
      $ref: "#/definitions/TopicResponse"
  Unauthorized:
    description: Access unauthorized, invalid API-KEY was used
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/Error"
  UnprocessableEntity:
    description: Unprocessable Entity, likely a bad parameter
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/Error"
  CompanyCategoryResponse:
    description: The SalesforceDevops.net CompanyCategory Object
    schema:
      $ref: "#/definitions/CompanyCategoryResponse"

paths:
  /companycategories:
    get:
      description: Return all or a single company category fully hydrated object
      operationId: getCompanyCategories
      responses:
        "200":
          $ref: "#/responses/CompanyCategoryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get a list of company categories
      tags:
        - CompanyCategories
  /companyservices:
    delete:
      description: Delete CompanyService record
      operationId: deleteCompanyService
      parameters:
        - $ref: "#/parameters/companyServiceIdQuery"
      responses:
        "200":
          $ref: "#/responses/DeleteResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Delete a CompanyService
      tags:
        - CompanyServices
    get:
      description: Return a list of all available CompanyServices
      operationId: getCompanyServices
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/slugQuery"
        - $ref: "#/parameters/companyServiceIdQuery"
      responses:
        "200":
          $ref: "#/responses/CompanyServiceResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get a list of company services
      tags:
        - CompanyServices
    post:
      description: Create a new CompanyService record
      operationId: postCompanyServices
      parameters:
        - $ref: "#/parameters/companyServiceRequest"
      responses:
        "200":
          $ref: "#/responses/CompanyServiceResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "409":
          $ref: "#/responses/Conflict"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Create a new CompanyService
      tags:
        - CompanyServices
  /companyproducts:
    delete:
      description: Delete CompanyProduct record
      operationId: deleteCompanyProduct
      parameters:
        - $ref: "#/parameters/companyProductIdQuery"
      responses:
        "200":
          $ref: "#/responses/DeleteResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Delete a CompanyProduct
      tags:
        - CompanyProducts
    get:
      description: Return a list of all available CompanyProducts
      operationId: getCompanyProducts
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/slugQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/activeQuery"
        - $ref: "#/parameters/accountIdQuery"
        - $ref: "#/parameters/companyProductIdQuery"
      responses:
        "200":
          $ref: "#/responses/CompanyProductResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get a list of companyproducts
      tags:
        - CompanyProducts
    post:
      description: CompanyProduct record to be added
      operationId: postCompanyProducts
      parameters:
        - $ref: "#/parameters/companyProductRequest"
      responses:
        "200":
          $ref: "#/responses/CompanyProductResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Add a new companyproduct to SalesforceDevops.net
      tags:
        - CompanyProducts
    put:
      description: Update companyproduct records
      operationId: putCompanyProduct
      parameters:
        - $ref: "#/parameters/companyProductRequest"
      responses:
        "200":
          $ref: "#/responses/CompanyProductResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Update a single companyproduct
      tags:
        - CompanyProducts
  /factors:
    delete:
      description: Delete Factor record
      operationId: deleteFactor
      parameters:
        - $ref: "#/parameters/factorIdQuery"
      responses:
        "200":
          $ref: "#/responses/DeleteResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Delete An Factor
      tags:
        - Factors
    get:
      description: Return a list of all available Factors
      operationId: getFactors
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/nameQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/activeQuery"
        - $ref: "#/parameters/factorIdQuery"
      responses:
        "200":
          $ref: "#/responses/FactorResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get a list of factors
      tags:
        - Factors
    post:
      description: Factor records to be added
      operationId: postFactors
      parameters:
        - $ref: "#/parameters/factorRequest"
      responses:
        "200":
          $ref: "#/responses/FactorResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Add a new factor to SalesforceDevops.net
      tags:
        - Factors
    put:
      description: Update factor records
      operationId: putFactor
      parameters:
        - $ref: "#/parameters/factorRequest"
      responses:
        "200":
          $ref: "#/responses/FactorResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Update factor records
      tags:
        - Factors
  /financialstatements:
    delete:
      description: Delete FinancialStatement record
      operationId: deleteFinancialStatement
      parameters:
        - $ref: "#/parameters/financialStatementIdQuery"
      responses:
        "200":
          $ref: "#/responses/DeleteResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Delete An FinancialStatement
      tags:
        - FinancialStatements
    get:
      description: Return a list of all available FinancialStatements
      operationId: getFinancialStatements
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/activeQuery"
        - $ref: "#/parameters/accountIdQuery"
        - $ref: "#/parameters/financialStatementIdQuery"
      responses:
        "200":
          $ref: "#/responses/FinancialStatementResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get a list of financialStatements
      tags:
        - FinancialStatements
    post:
      description: FinancialStatement records to be added
      operationId: postFinancialStatements
      parameters:
        - $ref: "#/parameters/financialStatementRequest"
      responses:
        "200":
          $ref: "#/responses/FinancialStatementResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Add a new financialStatement to SalesforceDevops.net
      tags:
        - FinancialStatements
    put:
      description: Update financialStatement records
      operationId: putFinancialStatement
      parameters:
        - $ref: "#/parameters/financialStatementRequest"
      responses:
        "200":
          $ref: "#/responses/FinancialStatementResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Update financialStatement records
      tags:
        - FinancialStatements
  /industries:
    get:
      description: Retrieve Industry records from the microservice
      operationId: getIndustries
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/slugQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/industryIdQuery"
        - $ref: "#/parameters/productCategoryQuery"
        - $ref: "#/parameters/serviceCategoryQuery"
      responses:
        "200":
          $ref: "#/responses/IndustryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get Industry records
      tags:
        - Industry
    post:
      description: Add new industries
      operationId: postIndustries
      parameters:
        - $ref: "#/parameters/industryRequest"
      responses:
        "200":
          $ref: "#/responses/IndustryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Add new companies
      tags:
        - Industry
  /industrycompanies:
    delete:
      description: Delete IndustryCompany record
      operationId: deleteIndustryCompany
      parameters:
        - $ref: "#/parameters/industryCompanyIdQuery"
      responses:
        "200":
          $ref: "#/responses/DeleteResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Delete An IndustryCompany
      tags:
        - IndustryCompanies
    get:
      description: Return a list of all available IndustryCompanies
      operationId: getIndustryCompanies
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/nameQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/activeQuery"
        - $ref: "#/parameters/industryCompanyIdQuery"
        - $ref: "#/parameters/emailQuery"
      responses:
        "200":
          $ref: "#/responses/IndustryCompanyResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get a list of industrycompanies
      tags:
        - IndustryCompanies
    post:
      description: IndustryCompany record to be added
      operationId: postIndustryCompanies
      parameters:
        - $ref: "#/parameters/industryCompanyRequest"
      responses:
        "200":
          $ref: "#/responses/IndustryCompanyResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Add a new industryCompany to SalesforceDevops.net
      tags:
        - IndustryCompanies
  /industryservices:
    delete:
      description: Delete IndustryService record
      operationId: deleteIndustryService
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/industryServiceIdQuery"
      responses:
        "200":
          $ref: "#/responses/DeleteResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Delete An IndustryService
      tags:
        - IndustryServices
    get:
      description: Return a list of all available IndustryServices
      operationId: getIndustryServices
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/industryServiceIdQuery"
      responses:
        "200":
          $ref: "#/responses/IndustryServiceResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get a list of industryservices
      tags:
        - IndustryServices
    post:
      description: IndustryService record to be added
      operationId: postIndustryServices
      parameters:
        - $ref: "#/parameters/industryServiceRequest"
      responses:
        "200":
          $ref: "#/responses/IndustryServiceResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Add a new industryService to SalesforceDevops.net
      tags:
        - IndustryServices
  /industryproducts:
    delete:
      description: Delete IndustryProduct record
      operationId: deleteIndustryProduct
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/industryProductIdQuery"
      responses:
        "200":
          $ref: "#/responses/DeleteResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Delete An IndustryProduct
      tags:
        - IndustryProducts
    get:
      description: Return a list of all available IndustryProducts
      operationId: getIndustryProducts
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/nameQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/activeQuery"
        - $ref: "#/parameters/industryProductIdQuery"
      responses:
        "200":
          $ref: "#/responses/IndustryProductResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get a list of industryProducts
      tags:
        - IndustryProducts
    post:
      description: IndustryProduct record to be added
      operationId: postIndustryProducts
      parameters:
        - $ref: "#/parameters/industryProductRequest"
      responses:
        "200":
          $ref: "#/responses/IndustryProductResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Add a new industryProduct to SalesforceDevops.net
      tags:
        - IndustryProducts
  /observations:
    delete:
      description: Delete Observation record
      operationId: deleteObservation
      parameters:
        - $ref: "#/parameters/observationIdQuery"
      responses:
        "200":
          $ref: "#/responses/DeleteResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Delete An Observation
      tags:
        - Observations
    get:
      description: Return a list of all available Observations
      operationId: getObservations
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/activeQuery"
        - $ref: "#/parameters/observationIdQuery"
      responses:
        "200":
          $ref: "#/responses/ObservationResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get a list of observations
      tags:
        - Observations
    post:
      description: Observation record to be added
      operationId: postObservations
      parameters:
        - $ref: "#/parameters/observationRequest"
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
      responses:
        "200":
          $ref: "#/responses/ObservationResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Add a new observation to SalesforceDevops.net
      tags:
        - Observations
    put:
      description: Update a single observation specified by observationId
      operationId: putObservation
      parameters:
        - $ref: "#/parameters/observationRequest"
      responses:
        "200":
          $ref: "#/responses/ObservationResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Update a single observation
      tags:
        - Observations
  /topics:
    get:
      description: Retrieve Topic records from the microservice
      operationId: getTopics
      parameters:
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
        - $ref: "#/parameters/topicIdQuery"
      responses:
        "200":
          $ref: "#/responses/TopicResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Get Topic records
      tags:
        - Topics
    post:
      description: Add new topics
      operationId: postTopics
      parameters:
        - $ref: "#/parameters/topicRequest"
      responses:
        "200":
          $ref: "#/responses/TopicResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Add new topics
      tags:
        - Topics

definitions:
  Address:
    properties:
      City:
        description: City
        type: string
        x-nullable: true
      Country:
        description: Country full name
        type: string
        x-nullable: true
      CountryCode:
        description: Country Code
        type: string
        x-nullable: true
      PostalCode:
        description: Postal Code
        type: string
        x-nullable: true
      State:
        description: State full name
        type: string
        x-nullable: true
      StateCode:
        description: State Code
        type: string
        x-nullable: true
      Street:
        description: Street number and name
        type: string
        x-nullable: true
    type: object
  CompanyCategory:
    properties:
      CloudType:
        description: The Type of Cloud Company
        type: string
      Count:
        description: The number of companies
        type: number
    type: object
  CompanyCategoryResponse:
    description: An array of CompanyCategory objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "#/definitions/CompanyCategory"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  CompanyProductRequest:
    description: An array of CompanyProduct objects submitted for processing
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/company-product.yaml#/CompanyProduct"
        type: array
    type: object
  CompanyProductResponse:
    description: An array of CompanyProduct objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/company-product.yaml#/CompanyProduct"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  CompanyServiceRequest:
    description: An array of CompanyService objects submitted for processing
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/company-service.yaml#/CompanyService"
        type: array
    type: object
  CompanyServiceResponse:
    description: An array of CompanyService objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/company-service.yaml#/CompanyService"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  DeleteResponse:
    properties:
      Data:
        items:
          $ref: "#/definitions/Message"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Error:
    $ref: ../../lib/swagger/defs/error.yaml#/Error
  FactorRequest:
    description: An array of Factor objects submitted for processing
    properties:
      Data:
        items:
          $ref: ../../lib/swagger/defs/factor.yaml#/Factor
        type: array
    type: object
  FactorResponse:
    description: An array of Factor objects produced in response to a request
    properties:
      Data:
        items:
          $ref: ../../lib/swagger/defs/factor.yaml#/Factor
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  FinancialStatementRequest:
    description: An array of FinancialStatement objects submitted for processing
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/financial-statement.yaml#/FinancialStatement"
        type: array
    type: object
  FinancialStatementResponse:
    description: An array of FinancialStatement objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/financial-statement.yaml#/FinancialStatement"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  IndustryCompanyRequest:
    description: An array of IndustryCompany objects submitted for processing
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/industry-company.yaml#/IndustryCompany"
        type: array
    type: object
  IndustryCompanyResponse:
    description: An array of IndustryCompany objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/industry-company.yaml#/IndustryCompany"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  IndustryProductRequest:
    description: An array of IndustryProduct objects submitted for processing
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/industry-product.yaml#/IndustryProduct"
        type: array
    type: object
  IndustryProductResponse:
    description: An array of IndustryProduct objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/industry-product.yaml#/IndustryProduct"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  IndustryServiceRequest:
    description: An array of IndustryService objects submitted for processing
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/industry-service.yaml#/IndustryService"
        type: array
    type: object
  IndustryServiceResponse:
    description: An array of IndustryService objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/industry-service.yaml#/IndustryService"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  IndustryRequest:
    description: An array of Industry objects submitted for processing
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/industry.yaml#/Industry"
        type: array
    type: object
  IndustryResponse:
    description: An array of Industry objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/industry.yaml#/Industry"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  InvalidError:
    allOf:
      - $ref: "#/definitions/Error"
      - properties:
          details:
            items:
              type: string
            type: array
        type: object
  Message:
    properties:
      message:
        type: string
      ref:
        type: string
      status:
        format: int64
        type: number
    type: object
  ObservationRequest:
    description: An array of Observation objects submitted for processing
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/observation.yaml#/Observation"
        type: array
    type: object
  ObservationResponse:
    description: An array of Observation objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "../../lib/swagger/defs/observation.yaml#/Observation"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Pagination:
    properties:
      limit:
        format: int64
        type: number
      pagesize:
        format: int64
        type: number
      poffset:
        format: int64
        type: integer
      setsize:
        format: int64
        type: number
    type: object
  RequestMeta:
    properties:
      ExternalAccount:
        description: Account Number of the Reseller or OEM
        type: string
    required:
      - ExternalAccount
    type: object
  ResponseMeta:
    properties:
      Contact:
        description: Microservice Contact Info
        type: string
      Copyright:
        description: Copyright Info
        type: string
      License:
        description: License Information and Restrictions
        type: string
      OperationID:
        description: Operation ID
        type: string
      Pagination:
        $ref: "#/definitions/Pagination"
      RequestIP:
        description: Request IP Address
        type: string
      RequestType:
        description: Request Type
        type: string
      RequestURL:
        description: Request URL
        type: string
      ServerInfo:
        description: Data Server Info
        type: string
      ServerResponseTime:
        description: Data Server Response Time (ms)
        type: string
      ServerTimestamp:
        description: Backend Server Timestamp
        type: string
      ExternalAccount:
        description: Account Number used for recording transactions
        type: string
    type: object
  Topic:
    description: A research topic that collects data
    properties:
      CreatedByID:
        description: Created By User ID
        type: string
        x-nullable: true
      CreatedDate:
        description: Created Date
        type: string
        x-nullable: true
      Description:
        description: Topic Description
        type: string
        x-nullable: true
      Factors:
        description: The list of Factors used to analyze this industry
        items:
          $ref: "../../lib/swagger/defs/factor.yaml#/Factor"
        type: array
        x-nullable: true
      ID:
        description: Record Id
        type: string
      LastModifiedByID:
        description: Last Modified By User ID
        type: string
        x-nullable: true
      LastModifiedDate:
        description: Last Modified Date
        type: string
        x-nullable: true
      Name:
        description: Topic Name
        type: string
        x-nullable: true
      ParentTopicID:
        description: The ID of the Parent Topic
        type: string
        x-nullable: true
      Slug:
        description: The CMS Slug for this Topic
        type: string
        x-nullable: true
    type: object
  TopicRequest:
    description: An array of Topic objects submitted for processing
    properties:
      Data:
        items:
          $ref: "#/definitions/Topic"
        type: array
    type: object
  TopicResponse:
    description: An array of Topic objects produced in response to a request
    properties:
      Data:
        items:
          $ref: "#/definitions/Topic"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
