Synctera Webhooks API

Requests to create and manage webhooks

OpenAPI Specification

synctera-webhooks-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  description: '<h2>Let''s build something great.</h2><p>Welcome to the official reference documentation for Synctera APIs. Our APIs are the best way to automate your company''s banking needs and are designed to be easy to understand and implement.</p><p>We''re continuously growing this library and what you see here is just the start, but if you need something specific or have a question, <a class=''text-blue-600'' href=''https://synctera.com/contact'' target=''_blank'' rel=''noreferrer''>contact us</a>.</p>

    '
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  title: Synctera Accounts Webhooks API
  version: 0.20.0
servers:
- description: Production
  url: https://api.synctera.com/v0
- description: Sandbox (no real world financial impact)
  url: https://api-sandbox.synctera.com/v0
security:
- bearerAuth: []
tags:
- description: Requests to create and manage webhooks
  name: Webhooks
paths:
  /webhooks:
    get:
      description: List all webhooks
      operationId: listWebhooks1
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page_token'
      - in: query
        name: is_enabled_only
        schema:
          type: boolean
        x-external: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook_list'
          description: List of webhooks
        '401':
          $ref: '#/components/responses/unauthorized'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: List webhooks
      tags:
      - Webhooks
      x-external: true
    post:
      description: Create a webhook
      operationId: createWebhook1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/webhook'
        description: Webhook to create
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook'
          description: Created webhook
        '401':
          $ref: '#/components/responses/unauthorized'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Create a webhook
      tags:
      - Webhooks
      x-external: true
  /webhooks/{webhook_id}:
    delete:
      description: Delete a webhook
      operationId: deleteWebhook
      parameters:
      - $ref: '#/components/parameters/webhook_id1'
      responses:
        '200':
          $ref: '#/components/responses/delete_response'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Delete a webhook
      tags:
      - Webhooks
      x-external: true
    get:
      description: Get a webhook
      operationId: getWebhook1
      parameters:
      - $ref: '#/components/parameters/webhook_id1'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook'
          description: Webhook
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Get a webhook
      tags:
      - Webhooks
      x-external: true
    put:
      description: Update a webhook
      operationId: updateWebhook
      parameters:
      - $ref: '#/components/parameters/webhook_id1'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/webhook'
        description: Webhook to update
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook'
          description: Created webhook
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Update a webhook
      tags:
      - Webhooks
      x-external: true
  /webhooks/{webhook_id}/events:
    get:
      description: List webhook events. This response will not associate with the event response history.
      operationId: listEvents
      parameters:
      - $ref: '#/components/parameters/webhook_id1'
      - deprecated: true
        description: Start date of date range filtering for events. Date is inclusive and should be in UTC timezone 00:00:00.. start_date is alias of start_time and is deprecated. Please use start_time instead.
        in: query
        name: start_date
        schema:
          format: date
          type: string
        x-external: true
      - deprecated: true
        description: End date of date range filtering for events. Date is inclusive and should be in UTC timezone 00:00:00.. end_date is alias of end_time and is deprecated. Please use end_time instead.
        in: query
        name: end_date
        schema:
          format: date
          type: string
        x-external: true
      - description: Start time of date-time range filtering for events. Date is inclusive and should be in UTC timezone 00:00:00.
        in: query
        name: start_time
        schema:
          format: date-time
          type: string
        x-external: true
      - description: End time of date-time range filtering for events. Date is inclusive and should be in UTC timezone 00:00:00.
        in: query
        name: end_time
        schema:
          format: date-time
          type: string
        x-external: true
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page_token'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/event_list'
          description: List of webhook events
        '401':
          $ref: '#/components/responses/unauthorized'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: List webhook events
      tags:
      - Webhooks
      x-external: true
  /webhooks/{webhook_id}/events/{event_id}:
    get:
      description: Get webhook event by ID
      operationId: getEvent
      parameters:
      - $ref: '#/components/parameters/webhook_id1'
      - description: Webhook event ID
        in: path
        name: event_id
        required: true
        schema:
          example: 30b341b8-8445-459a-8349-b3548b2aff53
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/event'
          description: Webhook event
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Get webhook event
      tags:
      - Webhooks
      x-external: true
  /webhooks/{webhook_id}/events/{event_id}/resend:
    post:
      description: Resend a webhook event
      operationId: resendEvent
      parameters:
      - $ref: '#/components/parameters/webhook_id1'
      - description: Webhook event ID
        in: path
        name: event_id
        required: true
        schema:
          example: 9e57eb8e-1795-4496-b3c5-06fcfdc7329f
          format: uuid
          type: string
      - description: Delay the event triggering in seconds
        in: query
        name: delay
        schema:
          maximum: 3600
          minimum: 0
          type: integer
        x-external: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/event'
          description: Resent webhook event
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Resend an event
      tags:
      - Webhooks
      x-external: true
  /webhooks/trigger:
    post:
      description: Trigger an specific event for webhook testing purpose
      operationId: triggerEvent
      requestBody:
        content:
          application/json:
            schema:
              properties:
                event:
                  $ref: '#/components/schemas/event_type1'
              type: object
        description: Provide an event type to trigger
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/event_trigger'
          description: Triggered webhook event
        '401':
          $ref: '#/components/responses/unauthorized'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Trigger an event
      tags:
      - Webhooks
      x-external: true
components:
  schemas:
    event_trigger:
      description: Webhook event object that will be returned after triggering the given event. Only id, type and event_time will have value.
      properties:
        event_resource:
          deprecated: true
          description: 'Json string of object associated with the event. For example, if your event is ACCOUNT.CREATED, You can refer to Acccount to parse the account event to obtain the ID, status etc.

            '
          type: string
        event_resource_changed_fields:
          deprecated: true
          description: 'Json string of object associated with the event related to a resource change. This only contains those fields that have value changed on the event, and the field values are prior to the resource change event.

            '
          type: string
        event_time:
          description: Timestamp of the current event raised
          format: date-time
          type: string
        id:
          description: Unique event ID of the webhook request. Use event endpoints to get more event summary data
          format: uuid
          readOnly: true
          type: string
        metadata:
          deprecated: true
          description: Metadata that stored in the webhook subscription
          maxLength: 1024
          type: string
        response_history:
          deprecated: true
          description: Response history of the webhook request
          items:
            $ref: '#/components/schemas/response_history_item'
          type: array
        status:
          deprecated: true
          description: Current event status. Failing event will keep retry until it is purged.
          enum:
          - RUNNING
          - SUCCESS
          - RETRYING
          type: string
        type:
          $ref: '#/components/schemas/event_type_explicit'
        url:
          deprecated: true
          description: URL that the current event will be sent to
          maxLength: 1024
          type: string
        webhook_id:
          deprecated: true
          description: Webhook the current event belongs to
          format: uuid
          type: string
      title: Webhook event trigger
      type: object
    event_list:
      allOf:
      - properties:
          event_list:
            description: Array of events
            items:
              $ref: '#/components/schemas/event'
            type: array
        required:
        - event_list
        type: object
      - $ref: '#/components/schemas/paginated_response'
    event:
      description: Webhook event object
      properties:
        event_resource:
          description: 'Json string of object associated with the event. For example, if your event is ACCOUNT.CREATED, You can refer to Acccount to parse the account event to obtain the ID, status etc.

            '
          type: string
        event_resource_changed_fields:
          description: 'Json string of object associated with the event related to a resource change. This only contains those fields that have value changed on the event, and the field values are prior to the resource change event.

            '
          type: string
        event_time:
          description: Timestamp of the current event raised
          format: date-time
          type: string
        id:
          description: Unique event ID of the webhook request. Use event endpoints to get more event summary data
          format: uuid
          readOnly: true
          type: string
        metadata:
          description: Metadata that stored in the webhook subscription
          maxLength: 1024
          type: string
        response_history:
          description: Response history of the webhook request
          items:
            $ref: '#/components/schemas/response_history_item'
          type: array
        status:
          description: Current event status. Failing event will keep retry until it is purged.
          enum:
          - RUNNING
          - SUCCESS
          - RETRYING
          type: string
        type:
          $ref: '#/components/schemas/event_type_explicit'
        url:
          description: URL that the current event will be sent to
          maxLength: 1024
          type: string
        webhook_id:
          description: Webhook the current event belongs to
          format: uuid
          type: string
      title: Webhook event
      type: object
    webhook:
      description: Webhook object
      properties:
        description:
          description: A description of what the webhook is used for
          type: string
        enabled_events:
          description: A list of the events that will trigger the webhook
          items:
            $ref: '#/components/schemas/event_type1'
          type: array
        id:
          description: The unique ID of the webhook
          format: uuid
          readOnly: true
          type: string
        is_enabled:
          description: Set the webhook to be enabled or disabled
          type: boolean
        last_updated:
          description: Timestamp that this webhook was created or the last time any field was changed
          format: date-time
          readOnly: true
          type: string
        metadata:
          description: Additional information stored to the webhook
          maxLength: 1024
          type: string
        url:
          description: URL that the webhook will send request to
          format: uri
          maxLength: 1000
          type: string
      required:
      - url
      - enabled_events
      - is_enabled
      title: Webhook
      type: object
    webhook_list:
      allOf:
      - properties:
          webhooks:
            description: Array of webhooks
            items:
              $ref: '#/components/schemas/webhook'
            type: array
        required:
        - webhooks
        type: object
      - $ref: '#/components/schemas/paginated_response'
    event_type1:
      oneOf:
      - $ref: '#/components/schemas/event_type_explicit'
      - $ref: '#/components/schemas/event_type_wildcard'
    event_type_explicit:
      description: All the webhook event types
      enum:
      - ACCOUNT.CREATED
      - ACCOUNT.UPDATED
      - CARD.UPDATED
      - CARD.IMAGE.UPDATED
      - CUSTOMER.UPDATED
      - CUSTOMER.KYC_OUTCOME.UPDATED
      - BUSINESS.VERIFICATION_OUTCOME.UPDATED
      - PERSON.VERIFICATION_OUTCOME.UPDATED
      - INTEREST.MONTHLY_PAYOUT
      - INTERNAL_TRANSFER.SUCCEEDED
      - TRANSACTION.POSTED.CREATED
      - TRANSACTION.POSTED.UPDATED
      - TRANSACTION.PENDING.CREATED
      - TRANSACTION.PENDING.UPDATED
      - CARD.DIGITALWALLETTOKEN.CREATED
      - CARD.DIGITALWALLETTOKEN.UPDATED
      - PAYMENT_SCHEDULE.CREATED
      - PAYMENT_SCHEDULE.UPDATED
      - PAYMENT_SCHEDULE.PAYMENT.CREATED
      - STATEMENT.CREATED
      - EXTERNAL_CARD.CREATED
      type: string
    response_history_item:
      description: Response history object of the webhook request
      properties:
        code:
          description: Response code from the request
          type: integer
        response_body:
          description: Response body from the request(Length more than 1024 will be trimmed)
          type: string
        response_time:
          description: Timestamp that the response is received
          format: date-time
          type: string
        sent_time:
          description: Timestamp that the request is sent
          format: date-time
          type: string
      title: Response history
      type: object
    delete_response:
      description: Deleted object information
      properties:
        id:
          description: Object ID
          format: uuid
          type: string
        resource:
          description: The resource name
          type: string
      title: Deleted Object
      type: object
    error:
      properties:
        detail:
          description: a human-readable string explaining this particular error
          example: 'missing required fields: first_name, dob'
          type: string
        status:
          description: the HTTP status code for this response
          example: 400
          type: integer
        title:
          description: a human-readable string for this general category of error
          example: Bad Request Body
          type: string
        type:
          description: a URI that identifies this general category of error
          example: https://dev.synctera.com/errors/bad-request-body
          type: string
      title: Standard error response (RFC 7807 problem report)
      type: object
    paginated_response:
      properties:
        next_page_token:
          description: If returned, use the next_page_token to query for the next page of results. Not returned if there are no more rows.
          example: d61grelm5f
          type: string
      title: Paginated List response
      type: object
    event_type_wildcard:
      enum:
      - ACCOUNT.*
      - CARD.*
      - CUSTOMER.*
      - BUSINESS.*
      - PERSON.*
      - INTEREST.*
      - INTERNAL_TRANSFER.*
      - TRANSACTION.*
      - PAYMENT_SCHEDULE.*
      - STATEMENT.*
      - EXTERNAL_CARD.*
      type: string
  parameters:
    page_token:
      in: query
      name: page_token
      required: false
      schema:
        description: Optional pagination token to be provided to retrieve subsequent pages, returned from previous get
        example: h50ffqz9q5
        type: string
      x-external: true
    webhook_id1:
      description: Webhook ID
      in: path
      name: webhook_id
      required: true
      schema:
        example: 97e074c8-188e-4cfb-8e34-16099909c595
        format: uuid
        type: string
    limit:
      in: query
      name: limit
      required: false
      schema:
        default: 100
        description: 'Maximum number of objects to return per page. If the limit is greater than 100, then it will be set to 100.

          '
        example: 100
        minimum: 1
        type: integer
      x-external: true
  responses:
    not_found:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/error'
      description: Resource not found
    delete_response:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/delete_response'
      description: Resource has been deleted
    internal_server_error:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/error'
      description: Internal server error
    unauthorized:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/error'
      description: Unauthorized
  securitySchemes:
    bearerAuth:
      bearerFormat: api_key
      scheme: bearer
      type: http
x-readme:
  explorer-enabled: true
  proxy-enabled: true
  samples-enabled: true