openapi: 3.0.3
info:
title: Juro Contracts Webhooks API
description: 'The Juro API (v3) programmatically drives contract automation and contract lifecycle management (CLM) on the Juro platform. External systems can initiate contracts from Juro templates, upload existing PDFs as contracts, read and update contract smart fields, send contracts for e-signature, download signed PDFs, and subscribe to contract lifecycle events via webhooks. All requests are authenticated with an `x-api-key` header. API access is plan-gated - it is included with a Juro subscription and enabled through your Customer Success Manager. A sandbox environment is available at https://api-sandbox.juro.io/v3.
Endpoints under Contracts, Templates, and Signatures are confirmed from Juro''s public API reference (api-docs.juro.com). The Webhooks management endpoints are modeled from Juro''s help-center guidance; webhook subscriptions are primarily configured in the Juro app (Settings > Integrations > Webhooks). Operations marked `x-endpoint-modeled: true` were not confirmed in the public reference at the time of review.'
version: '3.0'
contact:
name: Juro
url: https://juro.com
termsOfService: https://juro.com/terms/api-terms
servers:
- url: https://api.juro.com/v3
description: Production
- url: https://api-sandbox.juro.io/v3
description: Sandbox
security:
- apiKeyAuth: []
tags:
- name: Webhooks
description: Subscribe to contract lifecycle events (modeled).
paths:
/webhooks:
get:
operationId: listWebhooks
tags:
- Webhooks
summary: List webhooks (modeled)
description: Lists the webhook subscriptions for a team. Modeled from Juro help-center guidance; webhooks are primarily managed in the Juro app.
x-endpoint-modeled: true
responses:
'200':
description: A list of webhook subscriptions.
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createWebhook
tags:
- Webhooks
summary: Create a webhook (modeled)
description: Registers a webhook subscription for contract lifecycle events. Modeled from Juro help-center guidance (body includes teamId, title, url, isEnabled, auth, and events). Not confirmed in the public API reference.
x-endpoint-modeled: true
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
teamId:
type: string
title:
type: string
url:
type: string
format: uri
isEnabled:
type: boolean
auth:
type: object
description: Basic auth credentials or HMAC-SHA256 signing configuration.
events:
type: array
items:
type: string
enum:
- contract.created
- contract.deleted
- contract.edit
- contract.commented
- contract.comment.deleted
- contract.viewed
- contract.pdf_generated
- contract.sent_link_to_counterparty
- contract.signed
- contract.approval_requested
- contract.approval_in_progress
- contract.approval_process_finished
- contract.approval_denied
- contract.approval_request_cancelled
required:
- url
- events
responses:
'201':
description: The created webhook subscription.
'401':
$ref: '#/components/responses/Unauthorized'
/webhooks/{webhook_id}:
delete:
operationId: deleteWebhook
tags:
- Webhooks
summary: Delete a webhook (modeled)
description: Deletes a webhook subscription. Modeled from Juro help-center guidance; not confirmed in the public API reference.
x-endpoint-modeled: true
parameters:
- name: webhook_id
in: path
required: true
schema:
type: string
responses:
'204':
description: The webhook was deleted.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
responses:
NotFound:
description: The requested resource was not found.
Unauthorized:
description: The API key is missing or invalid.
securitySchemes:
apiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: API key generated in the Juro app under Settings > Integrations > API. Sent as the `x-api-key` request header.