Malwarebytes · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the ThreatDown OneView API
10 actions
10 updates
update
extends
openapi/malwarebytes-threatdown-oneview-openapi.json
Generated by API Evangelist
Written by API Evangelist tooling for Malwarebytes's API. It is a proposal applied on top of the contract, not a document Malwarebytes publishes.
What the actions change
contactx-spec-urlx-harvestedx-harvested-byx-license-statusx-sibling-apix-rate-limitx-error-envelope
Targets 2
$.info
$.components.securitySchemes.client_credentials
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the ThreatDown OneView API
version: 1.0.0
x-generated: '2026-08-04'
x-method: generated
x-source: openapi/malwarebytes-threatdown-oneview-openapi.json
x-note: >-
Additive OpenAPI Overlay 1.0.0 capturing API Evangelist's enrichment of the harvested
ThreatDown OneView definition. It never mutates the original file. OneView is the
multi-tenant MSP projection of the same platform as Nebula, so it inherits the same
error, pagination and rate-limit gaps, and adds a deprecated subscription surface.
extends: openapi/malwarebytes-threatdown-oneview-openapi.json
actions:
- target: $.info
description: Record provenance and the canonical spec location.
update:
contact:
name: ThreatDown Support
url: https://support.threatdown.com/hc/en-us/p/oneview
x-spec-url: https://cloud.malwarebytes.com/api/v2/oneview/docs
x-harvested: '2026-08-04'
x-harvested-by: API Evangelist
x-license-status: >-
No licence or terms-of-service is declared in the definition. API use is governed by
https://www.threatdown.com/legal/terms-of-service/.
x-sibling-api: openapi/malwarebytes-threatdown-nebula-openapi.json
- target: $.info
description: Surface the rate limit stated in prose but absent from the machine-readable definition.
update:
x-rate-limit:
default: 360
unit: requests
interval: minute
scope: per OAuth2 application
algorithm: leaky bucket
exceeded_status: 429
headers_documented: false
artifact: rate-limits/malwarebytes-rate-limits.yml
- target: $.info
description: >-
Record the error envelope observed live. The definition declares no 4xx or 5xx
response on any of its 401 operations.
update:
x-error-envelope:
media_type: application/json
rfc9457: false
shape:
statusCode: integer
error: string
message: string
artifact: errors/malwarebytes-problem-types.yml
- target: $.info
description: Record the multi-tenant addressing model that distinguishes OneView from Nebula.
update:
x-tenancy:
model: multi-tenant MSP
tenant_param: account_id
tenant_param_in: path
used_on_operations: 141
hierarchy_field: parent_account_id
delegation_header: on-behalf-of
delegation_used_on_operations: 7
site_entity: >-
A Site is the MSP-managed customer. It gains an account_id once a Subscription is
attached, and that account_id is then used for all endpoint-security operations.
artifact: data-model/malwarebytes-data-model.yml
- target: $.info
description: >-
Flag the deprecated subscription surface. The operations carry `deprecated: true` but
no Sunset header, removal date, or replacement pointer.
update:
x-deprecations:
count: 6
sunset_header: false
removal_date: null
replacement_documented: false
operations:
- api.v2.oneview.create.subscription.id
- api.v2.oneview.delete.subscription.id
- api.v2.oneview.get.subscription.id
- api.v2.oneview.update.subscription.id
- api.v2.oneview.get.subscription.all
- api.v2.oneview.get.master.subscription.id
artifact: lifecycle/malwarebytes-lifecycle.yml
- target: $.info
description: Record the cursor pagination contract and its inconsistencies.
update:
x-pagination:
style: cursor
request: [next_cursor, page_size]
response: [next_cursor, total_count]
inconsistency: >-
A small number of operations still take `per_page` instead of `page_size`, and
sorting uses sort_field/sort_direction here where Nebula uses sort_by/sort_order.
artifact: conventions/malwarebytes-conventions.yml
- target: $.info
description: Record that no request-idempotency mechanism exists.
update:
x-idempotency:
supported: false
header: null
note: >-
Site creation, user provisioning and job issuance are all non-idempotent. In a
multi-tenant MSP context a retried Site creation can produce a duplicate customer.
- target: $.info
description: Attach the webhook event catalog.
update:
x-event-catalog:
artifact: asyncapi/malwarebytes-threatdown-webhooks.yml
event_count: 18
signature_header: X-MWB-Signature
subscription_path: /oneview/v1/accounts/{account_id}/webhooks/subscriptions
asyncapi_published: false
- target: $.components.securitySchemes.client_credentials
description: Make the token endpoint absolute and record the two-gate authorization model.
update:
x-token-url-absolute: https://api.threatdown.com/oneview/oauth2/token
x-declared-token-url: /oneview/oauth2/token
x-actual-operation: api.oneview.oauth2.token
x-authorization-model:
gates:
- name: oauth2 scope
values: [read, write, execute]
- name: user permission
distinct_values: 84
failure_status: 403
x-scope-description-defect: >-
The `read` scope description reads "Read data of your Nebula account" in the OneView
definition — copied from Nebula and never adapted to Sites. Report upstream.
- target: $.info
description: Record the structural review findings for this definition.
update:
x-api-evangelist-review:
strengths:
- 401 operations, each with a unique operationId, summary and description
- Per-operation scope plus granular permission declared
- Deprecated operations honestly flagged in the definition
defects:
- No 4xx or 5xx response declared on any operation.
- components.schemas is empty; all schemas inlined, producing a 19.6 MB document.
- >-
The `authorization` header is declared as a plain required parameter on 400 of 401
operations in addition to the securityScheme.
- Scope descriptions still reference Nebula rather than OneView.
- >-
Six deprecated operations carry no Sunset header, no removal date and no
replacement pointer.
- No response examples anywhere in the definition.