Ripple Labs Webhooks API

Used to manage webhooks

OpenAPI Specification

ripple-labs-webhooks-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Palisade Addresses Webhooks API
  description: The Palisade API enables programmatic interaction with the various features of the Palisade platform
  version: '2.0'
servers:
- url: https://api.sandbox.palisade.co
  description: Sandbox server (uses TESTNET data, private keys and accounts)
- url: https://api.palisade.co
  description: Palisade server (uses MAINNET data, private keys and accounts)
security:
- TokenAuth: []
tags:
- name: Webhooks
  description: Used to manage webhooks
paths:
  /v2/webhooks:
    get:
      summary: List webhooks
      description: List webhooks
      operationId: WebhookService_ListWebhooks
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ListWebhooksResponse'
        '400':
          description: Returned when the request is malformed or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: 'validation error: - name: value length must be at least 1 characters [string.min_len].'
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '401':
          description: Returned when the request was unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The access token provided does not meet the authorization requirements.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '403':
          description: Returned when the request was forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The access token provided does not meet the authentication requirements.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The resource does not exist.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: pageSize
        description: The number of results to return per page (default 50, max 100)
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: pageToken
        description: The token to retrieve the next page of results
        in: query
        required: false
        schema:
          type: string
      - name: pagination.pageSize
        description: Number of results per page (default 50, max 1000)
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: pagination.pageToken
        description: Token for pagination from previous response
        in: query
        required: false
        schema:
          type: string
      - name: pagination.orderBy
        description: Field to order results by
        in: query
        required: false
        schema:
          type: string
      - name: pagination.order
        description: Sort order (ASC or DESC)
        in: query
        required: false
        schema:
          type: string
          enum:
          - SORT_ORDER_ASC
          - SORT_ORDER_DESC
      - name: filter.id.eq
        description: Exact match
        in: query
        required: false
        schema:
          type: string
      - name: filter.id.notEq
        description: Not equal to
        in: query
        required: false
        schema:
          type: string
      - name: filter.id.contains
        description: Contains substring (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.id.startsWith
        description: Starts with prefix (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.id.endsWith
        description: Ends with suffix (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.id.in
        description: Value is in the list
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter.id.notIn
        description: Value is not in the list
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter.id.isNull
        description: Check if field is null
        in: query
        required: false
        schema:
          type: boolean
      - name: filter.name.eq
        description: Exact match
        in: query
        required: false
        schema:
          type: string
      - name: filter.name.notEq
        description: Not equal to
        in: query
        required: false
        schema:
          type: string
      - name: filter.name.contains
        description: Contains substring (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.name.startsWith
        description: Starts with prefix (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.name.endsWith
        description: Ends with suffix (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.name.in
        description: Value is in the list
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter.name.notIn
        description: Value is not in the list
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter.name.isNull
        description: Check if field is null
        in: query
        required: false
        schema:
          type: boolean
      - name: filter.description.eq
        description: Exact match
        in: query
        required: false
        schema:
          type: string
      - name: filter.description.notEq
        description: Not equal to
        in: query
        required: false
        schema:
          type: string
      - name: filter.description.contains
        description: Contains substring (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.description.startsWith
        description: Starts with prefix (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.description.endsWith
        description: Ends with suffix (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.description.in
        description: Value is in the list
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter.description.notIn
        description: Value is not in the list
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter.description.isNull
        description: Check if field is null
        in: query
        required: false
        schema:
          type: boolean
      - name: filter.endpoint.eq
        description: Exact match
        in: query
        required: false
        schema:
          type: string
      - name: filter.endpoint.notEq
        description: Not equal to
        in: query
        required: false
        schema:
          type: string
      - name: filter.endpoint.contains
        description: Contains substring (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.endpoint.startsWith
        description: Starts with prefix (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.endpoint.endsWith
        description: Ends with suffix (case-insensitive)
        in: query
        required: false
        schema:
          type: string
      - name: filter.endpoint.in
        description: Value is in the list
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter.endpoint.notIn
        description: Value is not in the list
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: filter.endpoint.isNull
        description: Check if field is null
        in: query
        required: false
        schema:
          type: boolean
      - name: filter.createdAt.eq
        description: Exact timestamp match
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.createdAt.notEq
        description: Not equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.createdAt.before
        description: Before this timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.createdAt.after
        description: After this timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.createdAt.gte
        description: Greater than or equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.createdAt.lte
        description: Less than or equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.createdAt.between.start
        description: Start of time range (inclusive)
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.createdAt.between.end
        description: End of time range (inclusive)
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.createdAt.isNull
        description: Check if field is null
        in: query
        required: false
        schema:
          type: boolean
      - name: filter.createdAt.relativeDays
        description: Relative days from now (negative for past, positive for future)
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: filter.updatedAt.eq
        description: Exact timestamp match
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.updatedAt.notEq
        description: Not equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.updatedAt.before
        description: Before this timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.updatedAt.after
        description: After this timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.updatedAt.gte
        description: Greater than or equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.updatedAt.lte
        description: Less than or equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.updatedAt.between.start
        description: Start of time range (inclusive)
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.updatedAt.between.end
        description: End of time range (inclusive)
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.updatedAt.isNull
        description: Check if field is null
        in: query
        required: false
        schema:
          type: boolean
      - name: filter.updatedAt.relativeDays
        description: Relative days from now (negative for past, positive for future)
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: filter.lastSuccess.eq
        description: Exact timestamp match
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastSuccess.notEq
        description: Not equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastSuccess.before
        description: Before this timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastSuccess.after
        description: After this timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastSuccess.gte
        description: Greater than or equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastSuccess.lte
        description: Less than or equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastSuccess.between.start
        description: Start of time range (inclusive)
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastSuccess.between.end
        description: End of time range (inclusive)
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastSuccess.isNull
        description: Check if field is null
        in: query
        required: false
        schema:
          type: boolean
      - name: filter.lastSuccess.relativeDays
        description: Relative days from now (negative for past, positive for future)
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: filter.lastFailure.eq
        description: Exact timestamp match
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastFailure.notEq
        description: Not equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastFailure.before
        description: Before this timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastFailure.after
        description: After this timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastFailure.gte
        description: Greater than or equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastFailure.lte
        description: Less than or equal to timestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastFailure.between.start
        description: Start of time range (inclusive)
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastFailure.between.end
        description: End of time range (inclusive)
        in: query
        required: false
        schema:
          type: string
          format: date-time
      - name: filter.lastFailure.isNull
        description: Check if field is null
        in: query
        required: false
        schema:
          type: boolean
      - name: filter.lastFailure.relativeDays
        description: Relative days from now (negative for past, positive for future)
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: search
        description: Case-insensitive search over webhook ID, name, description, and endpoint.
        in: query
        required: false
        schema:
          type: string
      tags:
      - Webhooks
    post:
      summary: Create webhooks
      description: Create a new webhook
      operationId: WebhookService_CreateWebhook
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2Webhook'
        '400':
          description: Returned when the request is malformed or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: 'validation error: - name: value length must be at least 1 characters [string.min_len].'
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '401':
          description: Returned when the request was unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The access token provided does not meet the authorization requirements.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '403':
          description: Returned when the request was forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The access token provided does not meet the authentication requirements.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The resource does not exist.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v2CreateWebhookRequest'
        required: true
      tags:
      - Webhooks
  /v2/webhooks/{id}:
    get:
      summary: Get webhooks
      description: Get a single webhook based on its ID
      operationId: WebhookService_GetWebhook
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2Webhook'
        '400':
          description: Returned when the request is malformed or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: 'validation error: - name: value length must be at least 1 characters [string.min_len].'
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '401':
          description: Returned when the request was unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The access token provided does not meet the authorization requirements.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '403':
          description: Returned when the request was forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The access token provided does not meet the authentication requirements.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The resource does not exist.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: id
        description: The webhook ID
        in: path
        required: true
        schema:
          type: string
      tags:
      - Webhooks
    delete:
      summary: Delete webhooks
      description: Delete a single webhook based on its ID
      operationId: WebhookService_DeleteWebhook
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2DeleteWebhookResponse'
        '400':
          description: Returned when the request is malformed or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: 'validation error: - name: value length must be at least 1 characters [string.min_len].'
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '401':
          description: Returned when the request was unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The access token provided does not meet the authorization requirements.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '403':
          description: Returned when the request was forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The access token provided does not meet the authentication requirements.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        '404':
          description: Returned when the resource does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: The resource does not exist.
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servingData: ''
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
      parameters:
      - name: id
        description: The webhook ID
        in: path
        required: true
        schema:
          type: string
      tags:
      - Webhooks
  /v2/webhooks/{webhookId}/subscriptions:
    get:
      summary: List subscriptions
      description: List subscriptions
      operationId: WebhookService_ListSubscriptions
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v2ListSubscriptionsResponse'
        '400':
          description: Returned when the request is malformed or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
              examples:
                response:
                  value:
                    code: 123
                    message: 'validation error: - name: value length must be at least 1 characters [string.min_len].'
                    details:
                    - '@type': type.googleapis.com/google.rpc.ErrorInfo
                      reason: PAL000.000
                      domain: app.development.palisade.co/api
                      metadata: {}
                    - '@type': type.googleapis.com/google.rpc.RequestInfo
                      requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
                      servi

# --- truncated at 32 KB (78 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ripple-labs/refs/heads/main/openapi/ripple-labs-webhooks-api-openapi.yml