openapi: 3.1.0
info:
  title: Yadulink Public API
  version: v1
  description: >-
    Public Yadulink API for API credits, n8n, webhooks, jobs, leads and lists.


    ## Versioning and deprecation policy

    The API is versioned in the URL path (`/api/v1/`). Breaking changes only
    ship in a new path version (for example `/api/v2/`). Deprecated fields and
    operations keep working during a documented migration window and are
    announced with `Deprecation` and `Sunset` response headers plus the
    changelog at https://yadulink.com/changelog before removal.


    ## Reliability contract

    Errors are always JSON with a machine-readable `error.code`. Write
    operations accept an `Idempotency-Key` header (safe retries; conflicting
    reuse returns 409). Long-running LinkedIn actions run as asynchronous jobs:
    `POST /actions/{operation}/jobs` returns `202 Accepted` and `GET
    /jobs/{job_id}` reports progress. Responses carry IETF `RateLimit` headers;
    on 429, honor `Retry-After`.


    Authentication guide: https://yadulink.com/auth.md
  contact:
    name: Yadulink support
    email: support@yadulink.com
    url: https://yadulink.com/contact
externalDocs:
  description: 'Yadulink API guides: authentication, credits, jobs, webhooks and n8n.'
  url: https://docs.yadulink.com/api/introduction/
servers:
  - url: https://app.yadulink.com/api/v1
security:
  - bearerApiKey: []
tags:
  - name: Account
    description: >-
      Authentication check, eligibility, limits and the machine-readable
      contract.
  - name: Credits
    description: Credit balance, ledger, price quotes and credit packs.
  - name: Lists
    description: 'Lead lists: the containers a sequence is run against.'
  - name: Leads
    description: Leads inside a list, with search and filters.
  - name: Actions
    description: >-
      LinkedIn-side actions. They never run inline: each one creates a job so
      credits can be reserved, safety budgets enforced, and the reservation
      refunded when the action fails.
  - name: Jobs
    description: Status and cancellation of the asynchronous jobs actions create.
  - name: Messages
    description: LinkedIn conversations synced to Yadulink, read-only.
  - name: Webhooks
    description: 'Outbound event delivery: endpoints, signatures, health and replays.'
  - name: Zapier
    description: Polling triggers and REST hook subscriptions used by the Zapier connector.
  - name: Discovery
    description: Machine-readable description of this API.
  - name: API keys
    description: >-
      Key management from a signed-in Yadulink session. These back the
      Integrations console; an API key cannot manage keys.
  - name: Prospect Radar
    description: >-
      Internal Yadulink growth tooling. Documented so its calls are traceable,
      not offered as part of the customer contract; these operations require an
      internal account.
paths:
  /me:
    get:
      operationId: get_me
      summary: Test authentication and retrieve the API key owner.
      description: Test authentication and retrieve the API key owner.
      tags:
        - Account
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes: []
      x-yadulink:
        method: GET
        path: /me
        scopes: []
        credits: 0
        description: Test authentication and retrieve the API key owner.
  /account/status:
    get:
      operationId: get_account_status
      summary: >-
        Check API eligibility, subscription access, and LinkedIn connection
        status.
      description: >-
        Check API eligibility, subscription access, and LinkedIn connection
        status.
      tags:
        - Account
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - account:read
      x-yadulink:
        method: GET
        path: /account/status
        scopes:
          - account:read
        credits: 0
        description: >-
          Check API eligibility, subscription access, and LinkedIn connection
          status.
  /account/limits:
    get:
      operationId: get_account_limits
      summary: Read rate limits, credit allowance, and action-job availability.
      description: Read rate limits, credit allowance, and action-job availability.
      tags:
        - Account
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - account:read
      x-yadulink:
        method: GET
        path: /account/limits
        scopes:
          - account:read
        credits: 0
        description: Read rate limits, credit allowance, and action-job availability.
  /developer/manifest:
    get:
      operationId: get_developer_manifest
      summary: Machine-readable public API contract for integrations such as n8n.
      description: Machine-readable public API contract for integrations such as n8n.
      tags:
        - Account
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - account:read
      x-yadulink:
        method: GET
        path: /developer/manifest
        scopes:
          - account:read
        credits: 0
        description: Machine-readable public API contract for integrations such as n8n.
  /openapi.json:
    get:
      operationId: get_openapi_json
      summary: Public OpenAPI schema for the Yadulink Public API.
      description: Public OpenAPI schema for the Yadulink Public API.
      tags:
        - Discovery
      security: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes: []
      x-yadulink:
        method: GET
        path: /openapi.json
        scopes: []
        credits: 0
        public: true
        description: Public OpenAPI schema for the Yadulink Public API.
  /credits/balance:
    get:
      operationId: get_credits_balance
      summary: Read the current API credit balance.
      description: Read the current API credit balance.
      tags:
        - Credits
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - credits:read
      x-yadulink:
        method: GET
        path: /credits/balance
        scopes:
          - credits:read
        credits: 0
        description: Read the current API credit balance.
  /credits/ledger:
    get:
      operationId: get_credits_ledger
      summary: Read credit ledger entries with pagination and filters.
      description: Read credit ledger entries with pagination and filters.
      tags:
        - Credits
      security:
        - bearerApiKey: []
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - name: type
          in: query
          required: false
          schema:
            type: string
        - name: operation
          in: query
          required: false
          schema:
            type: string
        - name: api_key_id
          in: query
          required: false
          schema:
            type: integer
        - name: date_from
          in: query
          required: false
          schema:
            type: string
            format: date
        - name: date_to
          in: query
          required: false
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - credits:read
      x-yadulink:
        method: GET
        path: /credits/ledger
        scopes:
          - credits:read
        credits: 0
        description: Read credit ledger entries with pagination and filters.
  /credits/overview:
    get:
      operationId: get_credits_overview
      summary: Read credit balance and consumption aggregates for a selected period.
      description: Read credit balance and consumption aggregates for a selected period.
      tags:
        - Credits
      security:
        - bearerApiKey: []
      parameters:
        - name: period
          in: query
          required: false
          schema:
            type: string
            enum:
              - 7d
              - 30d
              - cycle
            default: cycle
        - name: api_key_id
          in: query
          required: false
          schema:
            type: integer
        - name: operation
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - credits:read
      x-yadulink:
        method: GET
        path: /credits/overview
        scopes:
          - credits:read
        credits: 0
        description: Read credit balance and consumption aggregates for a selected period.
  /credits/packs:
    get:
      operationId: get_credits_packs
      summary: >-
        List purchasable credit packs. Checkout must be started in the app
        session.
      description: >-
        List purchasable credit packs. Checkout must be started in the app
        session.
      tags:
        - Credits
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - credits:read
      x-yadulink:
        method: GET
        path: /credits/packs
        scopes:
          - credits:read
        credits: 0
        description: >-
          List purchasable credit packs. Checkout must be started in the app
          session.
  /credits/packs/{pack_id}/checkout:
    post:
      operationId: post_credits_packs_pack_id_checkout
      summary: >-
        Create a Stripe Checkout session for a credit pack from an authenticated
        app session.
      description: >-
        Create a Stripe Checkout session for a credit pack from an authenticated
        app session.
      tags:
        - Credits
      security:
        - cookieAuth: []
      parameters:
        - name: pack_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes: []
      x-yadulink:
        method: POST
        path: /credits/packs/{pack_id}/checkout
        scopes:
          - app_session
        credits: 0
        description: >-
          Create a Stripe Checkout session for a credit pack from an
          authenticated app session.
  /credits/quote:
    post:
      operationId: post_credits_quote
      summary: Preview the credit cost of an operation before creating it.
      description: Preview the credit cost of an operation before creating it.
      tags:
        - Credits
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - credits:read
      x-yadulink:
        method: POST
        path: /credits/quote
        scopes:
          - credits:read
        credits: 0
        description: Preview the credit cost of an operation before creating it.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreditQuoteRequest'
  /lists:
    get:
      operationId: get_lists
      summary: List lead lists.
      description: List lead lists.
      tags:
        - Lists
      security:
        - bearerApiKey: []
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - lists:read
      x-yadulink:
        method: GET
        path: /lists
        scopes:
          - lists:read
        credits: 0
        description: List lead lists.
    post:
      operationId: post_lists
      summary: Create a lead list.
      description: Create a lead list.
      tags:
        - Lists
      security:
        - bearerApiKey: []
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - lists:write
      x-yadulink:
        method: POST
        path: /lists
        scopes:
          - lists:write
        credits_operation: list_create
        idempotent: true
        description: Create a lead list.
        credits: 1
        unit_cost: 1
        currency: credits
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListCreateRequest'
  /lists/{list_id}:
    get:
      operationId: get_lists_list_id
      summary: Retrieve a lead list.
      description: Retrieve a lead list.
      tags:
        - Lists
      security:
        - bearerApiKey: []
      parameters:
        - name: list_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - lists:read
      x-yadulink:
        method: GET
        path: /lists/{list_id}
        scopes:
          - lists:read
        credits: 0
        description: Retrieve a lead list.
    put:
      operationId: put_lists_list_id
      summary: Update a lead list.
      description: Update a lead list.
      tags:
        - Lists
      security:
        - bearerApiKey: []
      parameters:
        - name: list_id
          in: path
          required: true
          schema:
            type: integer
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - lists:write
      x-yadulink:
        method: PUT
        path: /lists/{list_id}
        scopes:
          - lists:write
        credits_operation: list_update
        idempotent: true
        description: Update a lead list.
        credits: 1
        unit_cost: 1
        currency: credits
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListUpdateRequest'
    delete:
      operationId: delete_lists_list_id
      summary: Delete a lead list.
      description: Delete a lead list.
      tags:
        - Lists
      security:
        - bearerApiKey: []
      parameters:
        - name: list_id
          in: path
          required: true
          schema:
            type: integer
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - lists:write
      x-yadulink:
        method: DELETE
        path: /lists/{list_id}
        scopes:
          - lists:write
        credits_operation: list_delete
        idempotent: true
        description: Delete a lead list.
        credits: 1
        unit_cost: 1
        currency: credits
  /lists/{list_id}/leads:
    get:
      operationId: get_lists_list_id_leads
      summary: List leads from a specific list.
      description: List leads from a specific list.
      tags:
        - Lists
      security:
        - bearerApiKey: []
      parameters:
        - name: list_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink:
        method: GET
        path: /lists/{list_id}/leads
        scopes:
          - leads:read
        credits: 0
        description: List leads from a specific list.
  /leads:
    get:
      operationId: get_leads
      summary: List leads with filters and pagination.
      description: List leads with filters and pagination.
      tags:
        - Leads
      security:
        - bearerApiKey: []
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink:
        method: GET
        path: /leads
        scopes:
          - leads:read
        credits: 0
        description: List leads with filters and pagination.
    post:
      operationId: post_leads
      summary: Create a lead.
      description: Create a lead.
      tags:
        - Leads
      security:
        - bearerApiKey: []
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink:
        method: POST
        path: /leads
        scopes:
          - leads:write
        credits_operation: lead_create
        idempotent: true
        description: Create a lead.
        credits: 1
        unit_cost: 1
        currency: credits
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeadCreateRequest'
  /leads/search:
    get:
      operationId: get_leads_search
      summary: Search leads by query.
      description: Search leads by query.
      tags:
        - Leads
      security:
        - bearerApiKey: []
      parameters:
        - name: q
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink:
        method: GET
        path: /leads/search
        scopes:
          - leads:read
        credits: 0
        description: Search leads by query.
  /leads/{lead_id}:
    get:
      operationId: get_leads_lead_id
      summary: Retrieve a lead.
      description: Retrieve a lead.
      tags:
        - Leads
      security:
        - bearerApiKey: []
      parameters:
        - name: lead_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink:
        method: GET
        path: /leads/{lead_id}
        scopes:
          - leads:read
        credits: 0
        description: Retrieve a lead.
    put:
      operationId: put_leads_lead_id
      summary: Update a lead.
      description: Update a lead.
      tags:
        - Leads
      security:
        - bearerApiKey: []
      parameters:
        - name: lead_id
          in: path
          required: true
          schema:
            type: integer
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink:
        method: PUT
        path: /leads/{lead_id}
        scopes:
          - leads:write
        credits_operation: lead_update
        idempotent: true
        description: Update a lead.
        credits: 1
        unit_cost: 1
        currency: credits
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeadUpdateRequest'
    delete:
      operationId: delete_leads_lead_id
      summary: Delete a lead.
      description: Delete a lead.
      tags:
        - Leads
      security:
        - bearerApiKey: []
      parameters:
        - name: lead_id
          in: path
          required: true
          schema:
            type: integer
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink:
        method: DELETE
        path: /leads/{lead_id}
        scopes:
          - leads:write
        credits_operation: lead_delete
        idempotent: true
        description: Delete a lead.
        credits: 1
        unit_cost: 1
        currency: credits
  /prospect-radar/schema:
    get:
      operationId: get_prospect_radar_schema
      summary: Read the Yadulink SaaS prospect radar scoring contract.
      description: Read the Yadulink SaaS prospect radar scoring contract.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink-audience: internal
      x-yadulink:
        method: GET
        path: /prospect-radar/schema
        scopes:
          - leads:read
        credits: 0
        description: Read the Yadulink SaaS prospect radar scoring contract.
        internal: true
  /prospect-radar/summary:
    get:
      operationId: get_prospect_radar_summary
      summary: Read SaaS radar pipeline totals and configured LinkedIn accounts.
      description: Read SaaS radar pipeline totals and configured LinkedIn accounts.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink-audience: internal
      x-yadulink:
        method: GET
        path: /prospect-radar/summary
        scopes:
          - leads:read
        credits: 0
        description: Read SaaS radar pipeline totals and configured LinkedIn accounts.
        internal: true
  /prospect-radar/accounts:
    get:
      operationId: get_prospect_radar_accounts
      summary: List internal LinkedIn accounts configured for radar assignment.
      description: List internal LinkedIn accounts configured for radar assignment.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink-audience: internal
      x-yadulink:
        method: GET
        path: /prospect-radar/accounts
        scopes:
          - leads:read
        credits: 0
        description: List internal LinkedIn accounts configured for radar assignment.
        internal: true
    post:
      operationId: post_prospect_radar_accounts
      summary: Create or update an internal LinkedIn account for radar assignment.
      description: Create or update an internal LinkedIn account for radar assignment.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/accounts
        scopes:
          - leads:write
        credits: 0
        idempotent: true
        description: Create or update an internal LinkedIn account for radar assignment.
        internal: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /prospect-radar/candidates/bulk:
    post:
      operationId: post_prospect_radar_candidates_bulk
      summary: Ingest sourced SaaS prospects and calculate server-side intent scores.
      description: Ingest sourced SaaS prospects and calculate server-side intent scores.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/candidates/bulk
        scopes:
          - leads:write
        credits: 0
        idempotent: true
        description: Ingest sourced SaaS prospects and calculate server-side intent scores.
        internal: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /prospect-radar/discovery/linkedin:
    post:
      operationId: post_prospect_radar_discovery_linkedin
      summary: Run a bounded read-only LinkedIn people search for radar discovery.
      description: Run a bounded read-only LinkedIn people search for radar discovery.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/discovery/linkedin
        scopes:
          - leads:read
        credits: 0
        description: Run a bounded read-only LinkedIn people search for radar discovery.
        internal: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /prospect-radar/discovery/enrich-linkedin:
    post:
      operationId: post_prospect_radar_discovery_enrich_linkedin
      summary: >-
        Resolve up to 20 exact public LinkedIn identifiers through a connected
        internal account.
      description: >-
        Resolve up to 20 exact public LinkedIn identifiers through a connected
        internal account.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/discovery/enrich-linkedin
        scopes:
          - leads:read
        credits: 0
        description: >-
          Resolve up to 20 exact public LinkedIn identifiers through a connected
          internal account.
        internal: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /prospect-radar/candidates:
    get:
      operationId: get_prospect_radar_candidates
      summary: List scored SaaS radar candidates.
      description: List scored SaaS radar candidates.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink-audience: internal
      x-yadulink:
        method: GET
        path: /prospect-radar/candidates
        scopes:
          - leads:read
        credits: 0
        description: List scored SaaS radar candidates.
        internal: true
  /prospect-radar/queue/claim:
    post:
      operationId: post_prospect_radar_queue_claim
      summary: >-
        Claim the daily deduplicated prospect queue across active LinkedIn
        accounts.
      description: >-
        Claim the daily deduplicated prospect queue across active LinkedIn
        accounts.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/queue/claim
        scopes:
          - leads:write
        credits: 0
        idempotent: true
        description: >-
          Claim the daily deduplicated prospect queue across active LinkedIn
          accounts.
        internal: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /prospect-radar/assignments:
    get:
      operationId: get_prospect_radar_assignments
      summary: List per-account radar lifecycle assignments.
      description: List per-account radar lifecycle assignments.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink-audience: internal
      x-yadulink:
        method: GET
        path: /prospect-radar/assignments
        scopes:
          - leads:read
        credits: 0
        description: List per-account radar lifecycle assignments.
        internal: true
  /prospect-radar/assignments/digest-delivered:
    post:
      operationId: post_prospect_radar_assignments_digest_delivered
      summary: >-
        Acknowledge radar assignments only after their daily digest was
        delivered.
      description: >-
        Acknowledge radar assignments only after their daily digest was
        delivered.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/assignments/digest-delivered
        scopes:
          - leads:write
        credits: 0
        idempotent: true
        description: >-
          Acknowledge radar assignments only after their daily digest was
          delivered.
        internal: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /prospect-radar/invitations/reconcile:
    post:
      operationId: post_prospect_radar_invitations_reconcile
      summary: >-
        Match Unipile sent invitations with profiles previously proposed by the
        radar.
      description: >-
        Match Unipile sent invitations with profiles previously proposed by the
        radar.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/invitations/reconcile
        scopes:
          - leads:write
        credits: 0
        idempotent: true
        description: >-
          Match Unipile sent invitations with profiles previously proposed by
          the radar.
        internal: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /prospect-radar/invitations/reconcile-live:
    post:
      operationId: post_prospect_radar_invitations_reconcile_live
      summary: >-
        Fetch pending invitations through Yadulink and match radar assignments
        without exposing Unipile credentials.
      description: >-
        Fetch pending invitations through Yadulink and match radar assignments
        without exposing Unipile credentials.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/invitations/reconcile-live
        scopes:
          - leads:write
        credits: 0
        idempotent: true
        description: >-
          Fetch pending invitations through Yadulink and match radar assignments
          without exposing Unipile credentials.
        internal: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /prospect-radar/assignments/{assignment_id}/state:
    post:
      operationId: post_prospect_radar_assignments_assignment_id_state
      summary: >-
        Record a reviewed radar lifecycle transition without sending a LinkedIn
        action.
      description: >-
        Record a reviewed radar lifecycle transition without sending a LinkedIn
        action.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters:
        - name: assignment_id
          in: path
          required: true
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: Prevents duplicate side effects when retrying a request.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/assignments/{assignment_id}/state
        scopes:
          - leads:write
        credits: 0
        idempotent: true
        description: >-
          Record a reviewed radar lifecycle transition without sending a
          LinkedIn action.
        internal: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /messages:
    get:
      operationId: get_messages
      summary: List LinkedIn conversations synced to Yadulink.
      description: List LinkedIn conversations synced to Yadulink.
      tags:
        - Messages
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - messages:read
      x-yadulink:
        method: GET
        path: /messages
        scopes:
          - messages:read
        credits: 0
        description: List LinkedIn conversations synced to Yadulink.
  /messages/{message_id}:
    get:
      operationId: get_messages_message_id
      summary: Retrieve one synced LinkedIn message.
      description: Retrieve one synced LinkedIn message.
      tags:
        - Messages
      security:
        - bearerApiKey: []
      parameters:
        - name: message_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - messages:read
      x-yadulink:
        method: GET
        path: /messages/{message_id}
        scopes:
          - messages:read
        credits: 0
        description: Retrieve one synced LinkedIn message.
  /zapier/poll/leads:
    get:
      operationId: get_zapier_poll_leads
      summary: Poll recently created leads, shaped for Zapier triggers.
      description: Poll recently created leads, shaped for Zapier triggers.
      tags:
        - Zapier
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:read
      x-yadulink:
        method: GET
        path: /zapier/poll/leads
        scopes:
          - leads:read
        credits: 0
        description: Poll recently created leads, shaped for Zapier triggers.
  /zapier/poll/messages:
    get:
      operationId: get_zapier_poll_messages
      summary: Poll recently received messages, shaped for Zapier triggers.
      description: Poll recently received messages, shaped for Zapier triggers.
      tags:
        - Zapier
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - messages:read
      x-yadulink:
        method: GET
        path: /zapier/poll/messages
        scopes:
          - messages:read
        credits: 0
        description: Poll recently received messages, shaped for Zapier triggers.
  /zapier/subscribe:
    post:
      operationId: post_zapier_subscribe
      summary: Register a Zapier REST hook subscription.
      description: Register a Zapier REST hook subscription.
      tags:
        - Zapier
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: POST
        path: /zapier/subscribe
        scopes:
          - webhooks:manage
        credits: 0
        description: Register a Zapier REST hook subscription.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /zapier/unsubscribe/{webhook_id}:
    delete:
      operationId: delete_zapier_unsubscribe_webhook_id
      summary: Remove a Zapier REST hook subscription.
      description: Remove a Zapier REST hook subscription.
      tags:
        - Zapier
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: DELETE
        path: /zapier/unsubscribe/{webhook_id}
        scopes:
          - webhooks:manage
        credits: 0
        description: Remove a Zapier REST hook subscription.
  /api-keys:
    get:
      operationId: get_api_keys
      summary: >-
        List the API keys of the signed-in account. Used by the Integrations
        console.
      description: >-
        List the API keys of the signed-in account. Used by the Integrations
        console.
      tags:
        - API keys
      security:
        - cookieAuth: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes: []
      x-yadulink-audience: internal
      x-yadulink:
        method: GET
        path: /api-keys
        scopes:
          - app_session
        credits: 0
        internal: true
        description: >-
          List the API keys of the signed-in account. Used by the Integrations
          console.
    post:
      operationId: post_api_keys
      summary: >-
        Create an API key from the signed-in account. The secret is returned
        once.
      description: >-
        Create an API key from the signed-in account. The secret is returned
        once.
      tags:
        - API keys
      security:
        - cookieAuth: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes: []
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /api-keys
        scopes:
          - app_session
        credits: 0
        internal: true
        description: >-
          Create an API key from the signed-in account. The secret is returned
          once.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /api-keys/{key_id}:
    put:
      operationId: put_api_keys_key_id
      summary: Rename an API key, change its scopes, or suspend and reactivate it.
      description: Rename an API key, change its scopes, or suspend and reactivate it.
      tags:
        - API keys
      security:
        - cookieAuth: []
      parameters:
        - name: key_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes: []
      x-yadulink-audience: internal
      x-yadulink:
        method: PUT
        path: /api-keys/{key_id}
        scopes:
          - app_session
        credits: 0
        internal: true
        description: Rename an API key, change its scopes, or suspend and reactivate it.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
    delete:
      operationId: delete_api_keys_key_id
      summary: Revoke an API key permanently while keeping its usage history.
      description: Revoke an API key permanently while keeping its usage history.
      tags:
        - API keys
      security:
        - cookieAuth: []
      parameters:
        - name: key_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes: []
      x-yadulink-audience: internal
      x-yadulink:
        method: DELETE
        path: /api-keys/{key_id}
        scopes:
          - app_session
        credits: 0
        internal: true
        description: Revoke an API key permanently while keeping its usage history.
  /api-keys/{key_id}/rotate:
    post:
      operationId: post_api_keys_key_id_rotate
      summary: Generate a new secret for an API key and invalidate the previous one.
      description: Generate a new secret for an API key and invalidate the previous one.
      tags:
        - API keys
      security:
        - cookieAuth: []
      parameters:
        - name: key_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes: []
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /api-keys/{key_id}/rotate
        scopes:
          - app_session
        credits: 0
        internal: true
        description: Generate a new secret for an API key and invalidate the previous one.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /api-keys/{key_id}/usage:
    get:
      operationId: get_api_keys_key_id_usage
      summary: Read request logs, aggregates and security events for one API key.
      description: Read request logs, aggregates and security events for one API key.
      tags:
        - API keys
      security:
        - cookieAuth: []
      parameters:
        - name: key_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes: []
      x-yadulink-audience: internal
      x-yadulink:
        method: GET
        path: /api-keys/{key_id}/usage
        scopes:
          - app_session
        credits: 0
        internal: true
        description: Read request logs, aggregates and security events for one API key.
  /prospect-radar/outreach/enroll:
    post:
      operationId: post_prospect_radar_outreach_enroll
      summary: Enroll reviewed radar prospects into an outreach sequence.
      description: Enroll reviewed radar prospects into an outreach sequence.
      tags:
        - Prospect Radar
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - leads:write
      x-yadulink-audience: internal
      x-yadulink:
        method: POST
        path: /prospect-radar/outreach/enroll
        scopes:
          - leads:write
        credits: 0
        internal: true
        description: Enroll reviewed radar prospects into an outreach sequence.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectRequest'
  /actions:
    get:
      operationId: get_actions
      summary: List LinkedIn-side async actions available through the public API.
      description: List LinkedIn-side async actions available through the public API.
      tags:
        - Actions
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - account:read
      x-yadulink:
        method: GET
        path: /actions
        scopes:
          - account:read
        credits: 0
        description: List LinkedIn-side async actions available through the public API.
  /actions/{operation}/jobs:
    post:
      operationId: post_actions_operation_jobs
      summary: Create an async job for a LinkedIn action.
      description: Create an async job for a LinkedIn action.
      tags:
        - Actions
      security:
        - bearerApiKey: []
      parameters:
        - name: operation
          in: path
          required: true
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
          description: >-
            Required for LinkedIn action mutations. Reuse the same value only
            when retrying the exact same request; a different payload returns
            idempotency_key_reused.
      responses:
        '202':
          description: >-
            Accepted for asynchronous execution. The response body carries the
            job (`data.job.id`, `data.job.status`) and the `Location` header
            points at `/api/v1/jobs/{job_id}`; poll it until the job reaches a
            terminal status.
          headers:
            Location:
              description: Status URL of the created job.
              schema:
                type: string
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncJobAcceptedResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - jobs:write
        - <action required_scope>
      x-yadulink:
        method: POST
        path: /actions/{operation}/jobs
        scopes:
          - jobs:write
          - <action required_scope>
        credit_reservation: true
        idempotent: true
        idempotency_required: true
        description: Create an async job for a LinkedIn action.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionJobCreateRequest'
  /jobs/{job_id}:
    get:
      operationId: get_jobs_job_id
      summary: Retrieve job status and result.
      description: Retrieve job status and result.
      tags:
        - Jobs
      security:
        - bearerApiKey: []
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - jobs:read
      x-yadulink:
        method: GET
        path: /jobs/{job_id}
        scopes:
          - jobs:read
        credits: 0
        description: Retrieve job status and result.
  /jobs/{job_id}/cancel:
    post:
      operationId: post_jobs_job_id_cancel
      summary: >-
        Cancel a queued/running public API job and refund reserved credits when
        possible.
      description: >-
        Cancel a queued/running public API job and refund reserved credits when
        possible.
      tags:
        - Jobs
      security:
        - bearerApiKey: []
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
          description: >-
            Required for LinkedIn action mutations. Reuse the same value only
            when retrying the exact same request; a different payload returns
            idempotency_key_reused.
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Idempotency conflict: the Idempotency-Key was already used with a
            different method, path, or body (error.code idempotency_key_reused),
            or the original request is still running
            (idempotency_request_in_progress).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - jobs:write
      x-yadulink:
        method: POST
        path: /jobs/{job_id}/cancel
        scopes:
          - jobs:write
        credits: 0
        idempotent: true
        idempotency_required: true
        description: >-
          Cancel a queued/running public API job and refund reserved credits
          when possible.
  /webhooks:
    get:
      operationId: get_webhooks
      summary: List webhook endpoints.
      description: List webhook endpoints.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: GET
        path: /webhooks
        scopes:
          - webhooks:manage
        credits: 0
        description: List webhook endpoints.
    post:
      operationId: post_webhooks
      summary: Create a webhook endpoint.
      description: Create a webhook endpoint.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: POST
        path: /webhooks
        scopes:
          - webhooks:manage
        credits: 0
        description: Create a webhook endpoint.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCreateRequest'
  /webhooks/health:
    get:
      operationId: get_webhooks_health
      summary: List unhealthy webhook endpoints and health counters.
      description: List unhealthy webhook endpoints and health counters.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters: []
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: GET
        path: /webhooks/health
        scopes:
          - webhooks:manage
        credits: 0
        description: List unhealthy webhook endpoints and health counters.
  /webhooks/{webhook_id}:
    get:
      operationId: get_webhooks_webhook_id
      summary: Retrieve one webhook endpoint with health state.
      description: Retrieve one webhook endpoint with health state.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: GET
        path: /webhooks/{webhook_id}
        scopes:
          - webhooks:manage
        credits: 0
        description: Retrieve one webhook endpoint with health state.
    put:
      operationId: put_webhooks_webhook_id
      summary: Update a webhook endpoint.
      description: Update a webhook endpoint.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: PUT
        path: /webhooks/{webhook_id}
        scopes:
          - webhooks:manage
        credits: 0
        description: Update a webhook endpoint.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookUpdateRequest'
    delete:
      operationId: delete_webhooks_webhook_id
      summary: Delete a webhook endpoint.
      description: Delete a webhook endpoint.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: DELETE
        path: /webhooks/{webhook_id}
        scopes:
          - webhooks:manage
        credits: 0
        description: Delete a webhook endpoint.
  /webhooks/{webhook_id}/activate:
    post:
      operationId: post_webhooks_webhook_id_activate
      summary: Activate a webhook endpoint and clear failure state.
      description: Activate a webhook endpoint and clear failure state.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: POST
        path: /webhooks/{webhook_id}/activate
        scopes:
          - webhooks:manage
        credits: 0
        description: Activate a webhook endpoint and clear failure state.
  /webhooks/{webhook_id}/deactivate:
    post:
      operationId: post_webhooks_webhook_id_deactivate
      summary: Deactivate a webhook endpoint without deleting it.
      description: Deactivate a webhook endpoint without deleting it.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: POST
        path: /webhooks/{webhook_id}/deactivate
        scopes:
          - webhooks:manage
        credits: 0
        description: Deactivate a webhook endpoint without deleting it.
  /webhooks/{webhook_id}/test:
    post:
      operationId: post_webhooks_webhook_id_test
      summary: Queue a test webhook delivery.
      description: Queue a test webhook delivery.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: POST
        path: /webhooks/{webhook_id}/test
        scopes:
          - webhooks:manage
        credits: 0
        description: Queue a test webhook delivery.
  /webhooks/{webhook_id}/rotate-secret:
    post:
      operationId: post_webhooks_webhook_id_rotate_secret
      summary: Rotate a webhook signing secret.
      description: Rotate a webhook signing secret.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: POST
        path: /webhooks/{webhook_id}/rotate-secret
        scopes:
          - webhooks:manage
        credits: 0
        description: Rotate a webhook signing secret.
  /webhooks/{webhook_id}/deliveries:
    get:
      operationId: get_webhooks_webhook_id_deliveries
      summary: Read recent webhook delivery attempts.
      description: Read recent webhook delivery attempts.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: GET
        path: /webhooks/{webhook_id}/deliveries
        scopes:
          - webhooks:manage
        credits: 0
        description: Read recent webhook delivery attempts.
  /webhooks/{webhook_id}/deliveries/{delivery_id}:
    get:
      operationId: get_webhooks_webhook_id_deliveries_delivery_id
      summary: Read one webhook delivery attempt with payload and response details.
      description: Read one webhook delivery attempt with payload and response details.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
        - name: delivery_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: GET
        path: /webhooks/{webhook_id}/deliveries/{delivery_id}
        scopes:
          - webhooks:manage
        credits: 0
        description: Read one webhook delivery attempt with payload and response details.
  /webhooks/{webhook_id}/deliveries/{delivery_id}/replay:
    post:
      operationId: post_webhooks_webhook_id_deliveries_delivery_id_replay
      summary: Queue a replay of a previous webhook delivery with the same event id.
      description: Queue a replay of a previous webhook delivery with the same event id.
      tags:
        - Webhooks
      security:
        - bearerApiKey: []
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: integer
        - name: delivery_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              description: >-
                Correlation id for this call, echoed on every response and
                stored with the API key usage log. Send your own value to keep
                it end to end; quote it to support.
              schema:
                type: string
            Deprecation:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. (RFC 9745)
              schema:
                type: string
            Sunset:
              description: >-
                Present only when this operation is scheduled for removal, per
                the published deprecation policy. Removal date as an HTTP-date
                (RFC 8594).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Invalid request; error.code names the exact cause.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Missing or invalid API key.
          headers:
            WWW-Authenticate:
              description: >-
                Bearer challenge, e.g. Bearer realm="yadulink-api",
                error="invalid_token".
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Insufficient scope (error.code insufficient_scope) or account-level
            restriction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found (error.code not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Rate limit exceeded. Respect Retry-After and the RateLimit headers
            to self-throttle.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            RateLimit:
              description: >-
                IETF ratelimit structured field (remaining requests and reset
                delay).
              schema:
                type: string
            RateLimit-Policy:
              description: IETF ratelimit policy (quota and window).
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Unexpected server error (error.code internal_error); safe to retry
            writes with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-yadulink-required-scopes:
        - webhooks:manage
      x-yadulink:
        method: POST
        path: /webhooks/{webhook_id}/deliveries/{delivery_id}/replay
        scopes:
          - webhooks:manage
        credits: 0
        description: Queue a replay of a previous webhook delivery with the same event id.
components:
  securitySchemes:
    bearerApiKey:
      type: http
      scheme: bearer
      description: >-
        Yadulink API key generated from the Integrations page. Keys carry named
        scopes (least privilege); each operation lists its required scopes in
        `x-yadulink-required-scopes`.
    oauth2:
      type: oauth2
      description: >-
        OAuth 2.0 authorization code with PKCE (S256) against the Yadulink
        authorization server. Supports RFC 7591 dynamic client registration at
        /oauth/register; used by MCP clients. Metadata:
        https://app.yadulink.com/.well-known/oauth-authorization-server
      flows:
        authorizationCode:
          authorizationUrl: https://app.yadulink.com/oauth/authorize
          tokenUrl: https://app.yadulink.com/oauth/token
          refreshUrl: https://app.yadulink.com/oauth/token
          scopes:
            account:read: Read account status, limits, and subscription state.
            connections:write: Send LinkedIn connection requests through action jobs.
            credits:read: Read API credit balance, ledger, and price table.
            jobs:read: Read asynchronous action job status.
            jobs:write: Create and cancel asynchronous action jobs.
            leads:read: Read leads and lead search results.
            leads:write: Create, update, and delete leads.
            lists:read: Read lead lists and their contents.
            lists:write: Create, update, and delete lead lists.
            mcp:self:content:read: >-
              MCP: read feeds, signals, publications, audiences, and content
              statistics.
            mcp:self:content:write: >-
              MCP: manage publications and run confirmed LinkedIn content
              actions.
            mcp:self:credits:read: 'MCP: read the monthly API-credit balance and operation prices.'
            mcp:self:messages:read: 'MCP: read and summarize the connected LinkedIn inbox.'
            mcp:self:messages:write: >-
              MCP: send explicitly confirmed messages in owned LinkedIn
              conversations.
            mcp:self:outreach:read: 'MCP: audit lists, sequences, and contact priorities.'
            mcp:self:outreach:write: 'MCP: run controlled outreach actions.'
            mcp:self:profile:read: 'MCP: read the connected account profile and progress.'
            messages:read: Read LinkedIn conversation history synced to Yadulink.
            messages:write: Send LinkedIn messages through action jobs.
            posts:write: Publish or interact with LinkedIn posts through action jobs.
            profiles:write: Visit LinkedIn profiles through action jobs.
            webhooks:manage: Create, update, and delete webhook endpoints.
    cookieAuth:
      type: apiKey
      in: cookie
      name: sessionid
      description: Authenticated Yadulink app session. Used for credit pack checkout.
  schemas:
    SuccessResponse:
      type: object
      examples:
        - success: true
          data: {}
          meta: {}
      required:
        - success
      properties:
        success:
          type: boolean
          const: true
        data:
          type:
            - object
            - array
            - 'null'
          additionalProperties: true
        meta:
          type: object
          additionalProperties: true
          properties:
            pagination:
              $ref: '#/components/schemas/PaginationMeta'
    PaginationMeta:
      type: object
      description: >-
        Present on list responses. Page-based pagination via ?page and
        ?per_page.
      properties:
        page:
          type: integer
          minimum: 1
        per_page:
          type: integer
          minimum: 1
          maximum: 100
        total:
          type: integer
          minimum: 0
        total_pages:
          type: integer
          minimum: 0
    AsyncJobAcceptedResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          const: true
        data:
          type: object
          required:
            - job
          properties:
            job:
              type: object
              required:
                - id
                - status
              properties:
                id:
                  type: string
                  format: uuid
                status:
                  type: string
                  enum:
                    - queued
                    - processing
                    - completed
                    - failed
                    - canceled
              additionalProperties: true
            action:
              type: object
              additionalProperties: true
            execution:
              type: object
              additionalProperties: true
          additionalProperties: true
        meta:
          type: object
          additionalProperties: true
    ErrorResponse:
      type: object
      examples:
        - success: false
          error:
            code: insufficient_api_credits
            message: Not enough API credits for this operation.
            details:
              required: 10
              available: 4
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          const: false
        error:
          $ref: '#/components/schemas/ErrorObject'
    ErrorObject:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
        message:
          type: string
        details:
          type: object
          additionalProperties: true
    ObjectRequest:
      type: object
      additionalProperties: true
    CreditQuoteRequest:
      type: object
      examples:
        - operation: send_connection_request
          quantity: 25
      required:
        - operation
      properties:
        operation:
          type: string
        quantity:
          type: integer
          minimum: 1
          default: 1
        payload:
          type: object
          additionalProperties: true
    ListCreateRequest:
      type: object
      examples:
        - name: Prospects septembre 2026
      required:
        - name
      properties:
        name:
          type: string
    ListUpdateRequest:
      type: object
      properties:
        name:
          type: string
    LeadCreateRequest:
      type: object
      examples:
        - list_id: 123
          full_name: Ada Lovelace
          company_name: Analytical Engines
          position: Founder
          link: https://www.linkedin.com/in/example
          email: ada@example.com
      required:
        - list_id
        - full_name
      properties:
        list_id:
          type: integer
        full_name:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        company_name:
          type: string
        position:
          type: string
        link:
          type: string
          format: uri
        email:
          type: string
          format: email
        phone:
          type: string
        source:
          type: string
    LeadUpdateRequest:
      type: object
      properties:
        full_name:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        company_name:
          type: string
        position:
          type: string
        link:
          type: string
          format: uri
        email:
          type: string
          format: email
        phone:
          type: string
        status:
          type: string
    ActionJobCreateRequest:
      type: object
      description: >-
        Identify the target with one of lead_id, profile_id, provider_id,
        public_identifier or profile_url; lead_id is the most stable. `message`,
        `note` and `comment` apply to the operation that needs them.
      examples:
        - lead_id: 123
        - lead_id: 123
          message: Bonjour Ada, votre travail sur les moteurs analytiques…
        - post_id: urn:li:activity:123
          comment: Très intéressant, merci pour le partage.
      properties:
        lead_id:
          type: integer
        profile_id:
          type: string
        provider_id:
          type: string
        public_identifier:
          type: string
        profile_url:
          type: string
          format: uri
        post_id:
          type: string
        message:
          type: string
        note:
          type: string
        comment:
          type: string
    WebhookCreateRequest:
      type: object
      examples:
        - url: https://example.com/yadulink/webhook
          events:
            - job.completed
            - job.failed
          description: Production n8n
      required:
        - url
        - events
      properties:
        url:
          type: string
          format: uri
        events:
          type: array
          items:
            type: string
            enum:
              - lead.created
              - lead.status_changed
              - connection.accepted
              - radar.connection_accepted
              - radar.message_received
              - job.completed
              - job.failed
              - job.canceled
        description:
          type: string
    WebhookUpdateRequest:
      type: object
      properties:
        url:
          type: string
          format: uri
        events:
          type: array
          items:
            type: string
            enum:
              - lead.created
              - lead.status_changed
              - connection.accepted
              - radar.connection_accepted
              - radar.message_received
              - job.completed
              - job.failed
              - job.canceled
        description:
          type: string
        active:
          type: boolean
x-yadulink:
  api_version: v1
  credits_currency: credits
  webhook_events:
    - lead.created
    - lead.status_changed
    - connection.accepted
    - radar.connection_accepted
    - radar.message_received
    - job.completed
    - job.failed
    - job.canceled
  price_table:
    lead_create: 1
    lead_update: 1
    lead_delete: 1
    list_create: 1
    list_update: 1
    list_delete: 1
    profile_visit: 2
    profile_post_read: 2
    feed_refresh: 2
    linkedin_signal_refresh: 2
    post_engagement_page_read: 2
    profile_filter_read: 2
    post_stats_refresh: 2
    post_like: 2
    post_comment: 8
    send_connection_request: 10
    send_message: 10
    linkedin_post_publish: 10
    sequence_create: 5
  api_key_presets:
    api_full:
      label: Full API access
      description: All public API scopes for a trusted application.
      key_type: api
      scopes:
        - account:read
        - credits:read
        - leads:read
        - leads:write
        - lists:read
        - lists:write
        - messages:read
        - messages:write
        - profiles:write
        - posts:write
        - connections:write
        - webhooks:manage
        - jobs:read
        - jobs:write
    n8n_full:
      label: n8n full access
      description: Recommended scopes for the Yadulink n8n community node.
      key_type: n8n
      scopes:
        - account:read
        - credits:read
        - leads:read
        - leads:write
        - lists:read
        - lists:write
        - messages:read
        - messages:write
        - profiles:write
        - posts:write
        - connections:write
        - webhooks:manage
        - jobs:read
        - jobs:write
    read_only:
      label: Read-only REST API
      description: Read account, credits, lists, leads, and messages without write access.
      key_type: api
      scopes:
        - account:read
        - credits:read
        - leads:read
        - lists:read
        - messages:read
        - jobs:read
  action_budget_policies:
    post_comment:
      daily_limit: 80
      weekly_limit: null
      min_interval_seconds: 90
      counted_statuses:
        - queued
        - running
        - delivery_unknown
        - completed
    post_like:
      daily_limit: 80
      weekly_limit: null
      min_interval_seconds: 60
      counted_statuses:
        - queued
        - running
        - delivery_unknown
        - completed
    profile_visit:
      daily_limit: 80
      weekly_limit: null
      min_interval_seconds: 120
      counted_statuses:
        - queued
        - running
        - delivery_unknown
        - completed
    send_connection_request:
      daily_limit: 60
      weekly_limit: 200
      min_interval_seconds: 90
      counted_statuses:
        - queued
        - running
        - delivery_unknown
        - completed
    send_message:
      daily_limit: 80
      weekly_limit: null
      min_interval_seconds: 60
      counted_statuses:
        - queued
        - running
        - delivery_unknown
        - completed
x-versioning:
  strategy: url-path
  current: v1
  deprecation_signals:
    - Deprecation header
    - Sunset header
    - changelog
  policy: >-
    Breaking changes only in a new path version; deprecated surfaces keep a
    migration window.
