Paperless Parts · AsyncAPI Specification

Paperless Parts Events

Version

View Spec View on GitHub CompanyManufacturingQuotingCNC MachiningSheet MetalERPCRMJob ShopsAerospace and DefensePricingEstimatingIndustrialAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-26'
method: derived
source: >-
  openapi/paperless-parts-v1-openapi.yml , https://www.paperlessparts.com/api/ ,
  https://github.com/part-os/core-python
asyncapi_spec: null
webhooks: false
event_surface: poll
summary: >-
  Paperless Parts has a real, first-class event surface — the "Streaming API" — but it is NOT
  webhooks and NOT AsyncAPI. It is a poll-based event feed exposed as two ordinary REST operations
  in the v1 OpenAPI, and the platform never calls out to a subscriber URL. There is no callback
  registration endpoint, no webhook secret, no signature header, no delivery-retry semantics and no
  `webhooks:` block in either published spec. Any integration reacting to Paperless Parts events
  must run a poller (or the first-party Python SDK's listener loop, which is a poller with a nicer
  interface). No AsyncAPI document is published, and none is authored here.
note: >-
  Because the surface is neither an AsyncAPI document nor a webhook catalog, no `AsyncAPI` and no
  `Webhooks` pointer is wired into apis.yml. Emitting `Webhooks` would assert a push surface
  Paperless Parts does not operate.
transport:
  style: HTTP long-poll / repeated GET
  authentication: same account API token as the rest of the REST API
  ordering: not documented
  at_least_once: >-
    Implied — an event stays in the poll response until a dispatch record is created for it, which
    is what `create_dispatch_records=true` does. Re-delivery on failure is the consumer's problem.
  poll_interval: NOT DOCUMENTED — no recommended or maximum poll rate is published anywhere
operations:
  - operationId: ListEvents
    method: GET
    path: /events/public
    version: v1
    summary: Returns a list of events
    description: Returns a list of events. Use the ID provided from the event to create integration actions.
    parameters:
      - name: event_type_in
        in: query
        description: Filter to return events of a specified event type
      - name: was_dispatched
        in: query
        description: Filter to return only events that have associated dispatch records
    response: array of Event
  - operationId: PollEvents
    method: GET
    path: /managed_integrations/public/{managed_integration_uuid}/poll
    version: v1
    summary: Returns a list of new events
    description: Returns a list of events that have not yet been dispatched for the managed integration.
    parameters:
      - name: managed_integration_uuid
        in: path
        description: The unique identifier for the managed integration whose events you want to poll
      - name: create_dispatch_records
        in: query
        description: >-
          Whether you would like to create associated dispatch records for all events returned for
          this page. If set to true (or left unspecified), the events returned will not show up in
          the next response from this endpoint.
      - name: event_type_in
        in: query
      - name: was_dispatched
        in: query
    response: array of Event
event_schema:
  name: Event
  source: openapi/paperless-parts-v1-openapi.yml#/components/schemas/Event
  fields:
    - name: uuid
      type: string
      format: uuid
    - name: type
      type: string
      description: The event type
      example: integration_action.requested
    - name: data
      type: object
      description: Data relevant to the event
    - name: related_object
      type: string
      format: uuid
      nullable: true
    - name: related_object_type
      type: string
    - name: created
      type: string
      read_only: true
      example: '2020-08-25T18:00:53+00:00'
event_types:
  documented_in_spec:
    - id: integration_action.requested
      source: the `type` field's example value in the Event schema
  note: >-
    The full event-type vocabulary is NOT published. The OpenAPI carries exactly one example value
    and the `event_type_in` filter takes an unconstrained string, so a consumer cannot enumerate
    what events exist without either reading the Salesforce-hosted help article or observing live
    traffic. The first-party SDK ships OrderListener and QuoteListener, which implies order- and
    quote-creation events exist, but their type strings are not published in any machine-readable
    artifact.
supporting_surface:
  managed_integrations:
    note: >-
      Events are scoped to a "managed integration", registered and heartbeated through the v1
      Integration Actions endpoints.
    operations:
      - ListManagedIntegrations
      - CreateManagedIntegration
      - GetManagedIntegration
      - UpdateManagedIntegration
      - PostManagedIntegrationHeartbeat
      - ListIntegrationActions
      - CreateIntegrationAction
  sdk:
    repository: https://github.com/part-os/core-python
    classes:
      - paperless.listeners.BaseListener
      - paperless.listeners.OrderListener
      - paperless.listeners.QuoteListener
docs:
  - https://www.paperlessparts.com/api/
  - https://help.paperlessparts.com/s/article/paperless-parts-streaming-api
  - https://help.paperlessparts.com/s/article/integration-development-guide
docs_note: >-
  The two help.paperlessparts.com articles returned HTTP 200 but are Salesforce Experience Cloud
  pages that render client-side; an unauthenticated crawler receives a shell with a "CSS Error"
  loader and no article body, so their content could not be read in this pass. Everything above is
  taken from the OpenAPI and the SDK repository instead.
gaps:
  - no AsyncAPI document
  - no webhook / push delivery, only polling
  - no published event-type vocabulary
  - no published poll interval or rate ceiling
  - the event surface exists only in v1; v2 does not carry it

Work with this as data

Every AsyncAPI spec 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 asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec 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.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/paperless-parts-events"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.