Base Operations Threats API

The Threats API from Base Operations — 6 operation(s) for threats.

OpenAPI Specification

base-operations-threats-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Customer API - Base Operations Analytics Threats API
  description: 'Welcome to the Base Operations Customer API! This API allows you to interact with our data and perform detailed analysis. In this documentation, we''ll explain how to use the API, including the available endpoints and the expected request bodies or query parameters.


    ### Authentication


    To use this API, you''ll need to authenticate using an API key. Please reach out to Base Operations to have an API key provisioned for your user. Once you have your API key, you can use it to authorize the Swagger docs.


    To authenticate on the Swagger docs, follow these steps:


    1.  Click on the "Authorize" button on the top right corner of the Swagger docs.

    2.  In the "Value" field, enter your API key.

    3.  Click "Authorize" to authenticate.


    ### Helpful Hints


    When using the API, you may see the following query parameters:


    - `savedLocationId`: This is an internal identifier for a saved location. You can acquire this identifier by using the `GET /v1/public/saved-locations` endpoint.


    - `categoryId`: This is an internal identifier for a threat category. You can acquire this identifier by using the `GET /v1/public/threat-categories` endpoint.<br><br>


    That''s it! You''re now authenticated and can start using the API. If you have any questions or issues, please contact Base Operations support.

    '
  version: '1.0'
  contact: {}
servers:
- url: https://api.baseoperationsenterprise.com/
tags:
- name: Threats
paths:
  /v1/public/threats:
    get:
      description: This endpoint gets all threats by location and optionally neighborhood. If `type` is provided (crime, unrest), only threats of that type will be returned. Additionally query parameters will further filter the results
      operationId: PublicThreatsController_getThreats_v1
      parameters:
      - name: locationId
        required: true
        in: query
        schema:
          type: number
      - name: types
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - crime
            - unrest
            - customer
            - uas_sighting
      - name: fromDate
        required: false
        in: query
        schema:
          type: string
      - name: toDate
        required: false
        in: query
        schema:
          type: string
      - name: sources
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: categories
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: months
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: sortBy
        required: false
        in: query
        schema:
          example:
          - date.asc
          - categoryId.desc
          type: array
          items:
            type: string
      - name: isGTM
        required: false
        in: query
        schema:
          default: true
          type: boolean
      - name: hasAuxInfoOnly
        required: false
        in: query
        schema:
          type: boolean
      - name: organizationId
        required: false
        in: query
        schema:
          nullable: true
          default: null
          type: string
      - name: daytimes
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - morning
            - midmorning
            - afternoon
            - evening
            - night
      - name: page
        required: false
        in: query
        schema:
          minimum: 1
          default: 1
          type: number
      - name: take
        required: false
        in: query
        schema:
          minimum: 1
          maximum: 50
          default: 10
          type: number
      responses:
        '200':
          description: Successfully received model list
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageDto'
                - properties:
                    data:
                      type: array
                      items:
                        $ref: '#/components/schemas/ThreatEntity'
      security:
      - ApiKey: []
      summary: Get Threats
      tags:
      - Threats
  /v1/public/threats/summary:
    get:
      description: This endpoint gets the number of threats per category by location and optionally neighborhood. If `type` is provided (crime, unrest), only threats of that type will be returned. Additionally query parameters will further filter the results
      operationId: PublicThreatsController_getThreatSummary_v1
      parameters:
      - name: locationId
        required: true
        in: query
        schema:
          type: number
      - name: types
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - crime
            - unrest
            - customer
            - uas_sighting
      - name: fromDate
        required: false
        in: query
        schema:
          type: string
      - name: toDate
        required: false
        in: query
        schema:
          type: string
      - name: sources
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: categories
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: months
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: sortBy
        required: false
        in: query
        schema:
          example:
          - date.asc
          - categoryId.desc
          type: array
          items:
            type: string
      - name: isGTM
        required: false
        in: query
        schema:
          default: true
          type: boolean
      - name: hasAuxInfoOnly
        required: false
        in: query
        schema:
          type: boolean
      - name: organizationId
        required: false
        in: query
        schema:
          nullable: true
          default: null
          type: string
      - name: daytimes
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - morning
            - midmorning
            - afternoon
            - evening
            - night
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ChartDto'
                - properties:
                    chartData:
                      type: array
                      items:
                        $ref: '#/components/schemas/ThreatSummaryData'
            text/csv:
              schema:
                type: string
                example: 'category,count

                  Theft,20'
          description: ''
        '401':
          description: Unauthorized. Your API Key may be invalid or expired.
        '404':
          description: Location not found | Boundary not found | Saved Location not found
        '432':
          description: Not enough data available
        '500':
          description: Internal Server Error
      security:
      - ApiKey: []
      summary: Get Threat Summary
      tags:
      - Threats
  /v1/public/threats/radius:
    get:
      description: This endpoint gets all threats within a radius of a latitude / longitude. If `type` is provided (crime, unrest), only threats of that type will be returned. Additionally query parameters will further filter the results
      operationId: PublicThreatsController_getRadiusThreats_v1
      parameters:
      - name: fromDate
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: toDate
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: types
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - crime
            - unrest
            - customer
            - uas_sighting
      - name: sourceIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: categoryIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: months
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: daytimes
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - morning
            - midmorning
            - afternoon
            - evening
            - night
      - name: latitude
        required: true
        in: query
        schema:
          type: number
      - name: longitude
        required: true
        in: query
        schema:
          type: number
      - name: radius
        required: true
        in: query
        schema:
          type: number
      - name: units
        required: true
        in: query
        description: 'NB: miles, kilometers and meters will be deprecated soon.'
        schema:
          type: string
          enum:
          - mi
          - km
          - m
          - miles
          - kilometers
          - meters
      - name: page
        required: false
        in: query
        schema:
          minimum: 1
          default: 1
          type: number
      - name: take
        required: false
        in: query
        schema:
          minimum: 1
          maximum: 50
          default: 10
          type: number
      - name: isGTM
        required: false
        in: query
        schema:
          default: true
          type: boolean
      responses:
        '200':
          description: Successfully received model list
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PageDto'
                - properties:
                    data:
                      type: array
                      items:
                        $ref: '#/components/schemas/ThreatEntity'
      security:
      - ApiKey: []
      summary: Get Threats in Radius
      tags:
      - Threats
  /v1/public/threats/radius/summary:
    get:
      description: This endpoint calculates the number of threats per category within the `latitude`, `longitude`, and `radius` provided.<br><br><br>      - The `fromDate` & `toDate` are optional [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) query parameters that will restrict or alter the results of this analysis.<br><br>      - The query parameters `type`, `categoryIds`, `months` and `daytimes` are optional but will help you further refine your analysis.
      operationId: PublicThreatsController_getRadiusThreatSummary_v1
      parameters:
      - name: fromDate
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: toDate
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: types
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - crime
            - unrest
            - customer
            - uas_sighting
      - name: sourceIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: categoryIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: months
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: daytimes
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - morning
            - midmorning
            - afternoon
            - evening
            - night
      - name: latitude
        required: true
        in: query
        schema:
          type: number
      - name: longitude
        required: true
        in: query
        schema:
          type: number
      - name: radius
        required: true
        in: query
        schema:
          type: number
      - name: units
        required: true
        in: query
        description: 'NB: miles, kilometers and meters will be deprecated soon.'
        schema:
          type: string
          enum:
          - mi
          - km
          - m
          - miles
          - kilometers
          - meters
      - name: isGTM
        required: false
        in: query
        schema:
          default: true
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ChartDto'
                - properties:
                    chartData:
                      type: array
                      items:
                        $ref: '#/components/schemas/ThreatSummaryData'
            text/csv:
              schema:
                type: string
                example: 'categoryId,count

                  1,20'
          description: ''
        '401':
          description: Unauthorized. Your API Key may be invalid or expired.
        '404':
          description: Location not found | Boundary not found | Saved Location not found
        '432':
          description: Not enough data available
        '500':
          description: Internal Server Error
      security:
      - ApiKey: []
      summary: Threat Summary within Radius
      tags:
      - Threats
  /v1/public/threats/{savedLocationId}/summary:
    get:
      description: This endpoint calculates the number of threats per category within the granularity provided.<br><br><br>      - The `fromDate` & `toDate` are required [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) query parameters that will restrict or alter the results of this analysis.<br><br>      - The query parameters `type`, `categoryIds`, `months` and `daytimes` are optional but will help you further refine your analysis.
      operationId: PublicThreatsController_getSavedLocationThreatSummary_v1
      parameters:
      - name: savedLocationId
        required: true
        in: path
        schema:
          type: number
      - name: granularity
        required: true
        in: query
        schema:
          default: city
          type: string
          enum:
          - city
      - name: fromDate
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: toDate
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: types
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - crime
            - unrest
            - customer
            - uas_sighting
      - name: sourceIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: categoryIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: months
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: daytimes
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - morning
            - midmorning
            - afternoon
            - evening
            - night
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ChartDto'
                - properties:
                    chartData:
                      type: array
                      items:
                        $ref: '#/components/schemas/ThreatSummaryData'
            text/csv:
              schema:
                type: string
                example: 'categoryId,count

                  1,20'
          description: ''
        '401':
          description: Unauthorized. Your API Key may be invalid or expired.
        '404':
          description: 'Saved location not found


            Location not found | Boundary not found | Saved Location not found'
        '422':
          description: Location based information is not available for this saved location | District level data is not available for this location
        '432':
          description: Not enough data available
        '500':
          description: Internal Server Error
      security:
      - ApiKey: []
      summary: Saved Location Threat Summary at City or District Level
      tags:
      - Threats
  /v1/public/threats/{savedLocationId}/radius/summary:
    get:
      description: This endpoint calculates the number of threats per category within a radius.<br><br><br>      - The `fromDate` & `toDate` are required [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) query parameters that will restrict or alter the results of this analysis.<br><br>      - The query parameters `type`, `categoryIds`, `months` and `daytimes` are optional but will help you further refine your analysis.
      operationId: PublicThreatsController_getSaveLocationRadiusThreatSummary_v1
      parameters:
      - name: savedLocationId
        required: true
        in: path
        schema:
          type: number
      - name: fromDate
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: toDate
        required: false
        in: query
        schema:
          format: date-time
          type: string
      - name: types
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - crime
            - unrest
            - customer
            - uas_sighting
      - name: sourceIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: categoryIds
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: months
        required: false
        in: query
        schema:
          type: array
          items:
            type: number
      - name: daytimes
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - morning
            - midmorning
            - afternoon
            - evening
            - night
      - name: radius
        required: true
        in: query
        schema:
          type: number
      - name: units
        required: true
        in: query
        description: 'NB: miles, kilometers and meters will be deprecated soon.'
        schema:
          default: mi
          type: string
          enum:
          - mi
          - km
          - m
          - miles
          - kilometers
          - meters
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ChartDto'
                - properties:
                    chartData:
                      type: array
                      items:
                        $ref: '#/components/schemas/ThreatSummaryData'
            text/csv:
              schema:
                type: string
                example: 'categoryId,count

                  1,20'
          description: ''
        '401':
          description: Unauthorized. Your API Key may be invalid or expired.
        '404':
          description: Location not found | Boundary not found | Saved Location not found
        '432':
          description: Not enough data available
        '500':
          description: Internal Server Error
      security:
      - ApiKey: []
      summary: Saved Location Threat Summary within Radius
      tags:
      - Threats
components:
  schemas:
    PageMetaDto:
      type: object
      properties:
        page:
          type: number
        take:
          type: number
        itemCount:
          type: number
        pageCount:
          type: number
        hasPreviousPage:
          type: boolean
        hasNextPage:
          type: boolean
      required:
      - page
      - take
      - itemCount
      - pageCount
      - hasPreviousPage
      - hasNextPage
    PageDto:
      type: object
      properties:
        data:
          type: array
          items:
            type: array
        meta:
          $ref: '#/components/schemas/PageMetaDto'
      required:
      - data
      - meta
    ThreatEntity:
      type: object
      properties:
        id:
          type: string
        hoodId:
          type: number
        categoryId:
          type: number
        sourceCategoryId:
          type: number
        date:
          format: date-time
          type: string
        count:
          type: number
        locationId:
          type: number
        h3IdLvl8:
          type: string
        h3IdLvl7:
          type: string
        isGTMV2:
          type: boolean
        organizationId:
          type: string
          nullable: true
        savedLocationId:
          type: number
          nullable: true
        threatType:
          type: string
        point:
          type: string
        sourceHostname:
          type: string
        granularity:
          enum:
          - country
          - city
          - street
          type: string
        score:
          type: number
        auxInfo:
          $ref: '#/components/schemas/ThreatsAuxInfoMerged'
      required:
      - id
      - categoryId
      - sourceCategoryId
      - date
      - count
    ThreatSummaryData:
      type: object
      properties:
        categoryId:
          type: number
        category:
          type: string
        count:
          type: number
      required:
      - categoryId
      - count
    ChartDto:
      type: object
      properties:
        chartData:
          type: object
        metadata:
          type: object
      required:
      - chartData
    ThreatsAuxInfoMerged:
      type: object
      properties: {}
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-API-KEY