Pynt · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the Pynt API
8 actions
8 updates
servers
extends
../openapi/pynt-openapi.json
Generated by API Evangelist
Written by API Evangelist tooling for Pynt's API. It is a proposal applied on top of the contract, not a document Pynt publishes.
What the actions change
x-api-evangelist-notedescriptionx-reversibilitycontacttermsOfServicex-privacy-policyx-trust-centerx-documentation
Targets 7
$.info
$
$.components.securitySchemes['Bearer Token']
$.paths['/v1/scan/run-remote-scan'].post
$.paths['/v1/application/{application_id}'].delete
$.paths['/v1/notification-rules'].post
$.paths['/v1/postman/webhook'].post
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Pynt API
version: 1.0.0
extends: ../openapi/pynt-openapi.json
x-provenance:
generated: '2026-08-27'
method: generated
source: >-
Authored by the API Evangelist enrichment pipeline from artifacts in this
repo. Every value below is either an observed fact (base URL, live 401
behavior, deprecated flags already in the spec) or a pointer to a repo
artifact. Nothing here invents provider behavior.
note: >-
The upstream document at https://api.pynt.io/openapi.json is a FastAPI
auto-generated spec with no servers[], no description, no contact, no
licence, no tag descriptions, and only 422 declared on its error responses.
This overlay records what would have to be added to make it usable by an
agent, WITHOUT mutating openapi/_original/pynt-openapi.json.
actions:
- target: $.info
description: Give the contract a real description, contact and terms.
update:
description: >-
The Pynt API drives the Pynt API security testing platform: register
applications (API estates), attach discovery sources, run and schedule
security scans, and read findings, risk scores, LLM false-positive and
business-impact analyses, and generated pentest reports.
contact:
name: Pynt Support
email: support@pynt.io
url: https://www.pynt.io/contact-us
termsOfService: https://www.pynt.io/terms
x-privacy-policy: https://www.pynt.io/privacy-policy
x-trust-center: https://www.pynt.io/trust-center
x-documentation: https://docs.pynt.io/documentation
x-api-evangelist-note: >-
info.version "0.1.0" is the FastAPI application version, not a published
API version. The API version is v1, carried in every path.
- target: $
description: >-
Declare the production server. The upstream document ships no servers[]
block at all, which leaves a consumer with a spec they cannot call.
update:
servers:
- url: https://api.pynt.io
description: >-
Pynt production API. Confirmed live 2026-08-27: GET
/v1/auth/check, /v1/application and /v1/scan/summary all return HTTP
401 {"detail":"Unauthorized"} anonymously, and the spec itself is
served from this host at /openapi.json with Swagger UI at /docs.
- target: $
description: Apply a default security requirement — the upstream spec has none at the root.
update:
x-api-evangelist-security-note: >-
Every operation probed rejects anonymous requests with 401, so the API
is effectively secured by default even though the root `security` key is
absent. Operations declare their accepted schemes individually.
- target: $.components.securitySchemes['Bearer Token']
description: >-
Flag a modelling defect. The Bearer Token scheme is declared as
`apiKey in: header name: Authorization` rather than `http scheme: bearer`,
so generated clients and scanners will not treat it as a bearer token.
update:
description: >-
Modelled as an apiKey on the Authorization header. Semantically this is
an HTTP bearer token; declaring it as `type: http, scheme: bearer` would
let tooling handle it correctly.
- target: $.paths['/v1/scan/run-remote-scan'].post
description: Record reversibility, since scans are active tests against a live target.
update:
x-reversibility:
reversal: abort_scan_v1_scan__scan_id__abort_post
reversal_path: POST /v1/scan/{scan_id}/abort
kind: cancel
window: null
grade: documented
note: >-
An in-flight scan can be aborted. No window and no statement about
what a partially completed active security test leaves behind on the
target is published. See conventions/pynt-conventions.yml.
- target: $.paths['/v1/application/{application_id}'].delete
description: Record that this write has no reversal.
update:
x-reversibility:
reversal: null
kind: irreversible
note: >-
No restore or undelete operation exists anywhere in the contract.
Deleting an application is permanent as far as the published API is
concerned.
- target: $.paths['/v1/notification-rules'].post
description: Record the delivery-target gap in the notification surface.
update:
x-api-evangelist-note: >-
NotificationRuleCreate declares WHEN to notify (scan_status_triggers
FAILED/SUCCESS, severity_levels) but carries no target URL, channel or
transport field, and NotificationRuleOut returns only a rule_id. The
delivery destination is owned by the Pynt web portal, outside this API,
so an agent cannot subscribe an endpoint of its own. See
asyncapi/pynt-webhooks.yml.
- target: $.paths['/v1/postman/webhook'].post
description: Clarify webhook direction.
update:
x-webhook-direction: inbound
x-api-evangelist-note: >-
This is a RECEIVER — Postman calls Pynt here with a RUN_SCAN event to
trigger a collection scan. It is not a webhook an integrator subscribes
to.
x-artifact-index:
authentication: ../authentication/pynt-authentication.yml
conventions: ../conventions/pynt-conventions.yml
errors: ../errors/pynt-problem-types.yml
lifecycle: ../lifecycle/pynt-lifecycle.yml
data_model: ../data-model/pynt-data-model.yml
conformance: ../conformance/pynt-conformance.yml
webhooks: ../asyncapi/pynt-webhooks.yml
rate_limits: ../rate-limits/pynt-rate-limits.yml
plans: ../plans/pynt-plans-pricing.yml
packages: ../packages/pynt-packages.yml
cli: ../cli/pynt-cli.yml
mcp: ../mcp/pynt-mcp.yml
skills: ../skills/_index.yml