LVT · OpenAPI Overlay 1.0.0
API Evangelist enrichment overlay for the LVT Partner API
9 actions
9 updates
update
extends
https://raw.githubusercontent.com/LiveViewTech/lvt-public-api/master/api-specs/api.yaml
Generated by API Evangelist
Written by API Evangelist tooling for LVT's API. It is a proposal applied on top of the contract, not a document LVT publishes.
What the actions change
sourcecontactx-support-emailx-access-modelx-status-pagex-manualx-version-discrepancyx-stability
Targets 8
$.info
$.servers[0]
$.paths['/cameras/{cameraId}/streams'].post
$.paths['/webhooks'].post
$.paths['/webhooks:test'].post
$.paths['/alerts/media/{mediaId}/url'].get
$.components.schemas.error
$
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enrichment overlay for the LVT Partner API
version: 1.0.0
x-provenance:
generated: '2026-08-25'
method: generated
source: openapi/lvt-partner-api-openapi.yml
extends: openapi/lvt-partner-api-openapi.yml
note: >-
This overlay records API Evangelist's enrichment of LVT's published contract. It is NEVER applied to
the original — openapi/lvt-partner-api-openapi.yml stays byte-identical to what LVT publishes at
https://github.com/LiveViewTech/lvt-public-api/blob/master/api-specs/api.yaml. Every action below is
grounded in a fact LVT publishes elsewhere (its Partner API manual, its GitHub README, or its own
pricing page); no operation, parameter or response is invented.
extends: https://raw.githubusercontent.com/LiveViewTech/lvt-public-api/master/api-specs/api.yaml
actions:
- target: $.info
description: Attach contact, licence posture and access model that LVT documents outside the spec.
update:
contact:
name: LVT Integrations
email: integrations@lvt.com
url: https://docs.lvt.com/r/lvt-partner-api-manual
x-support-email: support@lvt.com
x-access-model: >-
Partnership-gated. Prerequisites are an account with LVT and a partnership agreement; client ID
and secret are issued by LVT on request to integrations@lvt.com.
x-status-page: https://status.lvt.com/
x-manual: https://docs.lvt.com/r/lvt-partner-api-manual
- target: $.info
description: >-
Record that the manual header still declares VERSION 1.0.0 while this document declares 1.0.1.
update:
x-version-discrepancy: >-
https://docs.lvt.com/r/lvt-partner-api-manual is headed "VERSION 1.0.0"; info.version here is
1.0.1. Observed 2026-08-25.
- target: $.servers[0]
description: Make explicit that LVT itself labels the only server "Production beta version".
update:
x-stability: production-beta
- target: $.paths['/cameras/{cameraId}/streams'].post
description: >-
Surface the stream keep-alive contract that the manual documents but the spec does not state.
update:
x-lifecycle:
keep_alive: 'POST /streams/{streamId}:checkIn on the returned refreshInterval (example 10000 ms)'
terminate: 'DELETE /streams/{streamId}'
auto_expiry: >-
The stream times out on its own if check-in stops. The concrete timeout is longer than
refreshInterval but is not published. After expiry or checkout, checkIn and DELETE on that
streamId return 404.
protocols: 'Query GET /cameras/{cameraId}/protocols first; rtsp and webrtc are documented.'
source: https://docs.lvt.com/r/lvt-partner-api-manual
- target: $.paths['/webhooks'].post
description: Surface the delivery, signing and auto-disable rules documented in the manual.
update:
x-delivery:
signature_headers: [X-LVT-HMAC-SHA256, X-LVT-PUBKEY-URL]
algorithm: SHA256
retry: 'exponential backoff of attempt ^ 2 seconds, up to 10 attempts'
auto_disable: 'disabled after 10 failed attempts, with no notification sent'
recovery: 'PATCH /webhooks/{webhookId} to re-enable'
url_requirement: 'HTTPS only; HTTP explicitly disallowed'
validated_on_write: true
source: https://docs.lvt.com/r/lvt-partner-api-manual
- target: $.paths['/webhooks:test'].post
description: Record the undocumented-in-spec test helpers, and that this is the API's only dry-run.
update:
x-dry-run: true
x-test-helpers:
action: 'query param — makes the test message match a specific action''s documented example'
data: 'body field — an unvalidated object that overrides the test message''s data payload'
mimeType: 'query param — image/jpeg or video/mp4, only for the mediaAvailable action (defaults to video)'
x-semantics: '204 means a subsequent POST /webhooks will succeed; 400 means it will not.'
source: https://docs.lvt.com/r/lvt-partner-api-manual
- target: $.paths['/alerts/media/{mediaId}/url'].get
description: Record the signed-URL expiry LVT states in its GitHub README.
update:
x-signed-url-ttl: 1800
x-signed-url-ttl-note: 'The signed media URL expires after 30 minutes.'
source: https://github.com/LiveViewTech/lvt-public-api
- target: $.components.schemas.error
description: >-
Flag the required/property mismatch in LVT's own error schema so downstream generators do not
silently produce an unsatisfiable model.
update:
x-defect: >-
`required` lists `errorCause` (singular) but the defined property is `errorCauses` (plural).
Observed in info.version 1.0.1 on 2026-08-25.
- target: $
description: >-
Record the enrichment gaps API Evangelist found in the published contract, as a single machine-
readable block. These are findings ABOUT the contract, not changes to it.
update:
x-api-evangelist-findings:
operations_without_operationId: 13
operations_without_operationId_areas: [Events, Media, Webhooks, PublicKeys]
duplicate_semantics_operationId: >-
PUT and PATCH on /cameras/{cameraId}/position carry operationIds UpdateCameraPosition and
UpdateCameraPosition2 — the "2" suffix leaks a generator artifact into the public contract.
no_429_declared: true
no_idempotency_mechanism: true
no_request_id_header: true
no_examples_on_operations: 'Examples appear on schema properties, not as operation-level request/response examples.'
onvif_not_in_contract: >-
LVT units present to third-party VMS platforms as ONVIF cameras, and the manual documents the
per-unit ONVIF port assignment and the RuleEngine/LVT/<eventType> message namespace, but the
OpenAPI never mentions ONVIF and no WSDL or device profile is published.
no_asyncapi: >-
A fully specified 7-action webhook surface exists in prose with no AsyncAPI document to describe it.
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/lvt-partner-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.