Cloudsmith webhooks API

The webhooks API from Cloudsmith — 2 operation(s) for webhooks.

OpenAPI Specification

cloudsmith-webhooks-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: Cloudsmith API (v1) audit-log webhooks API
  description: The API to the Cloudsmith Service
  termsOfService: https://help.cloudsmith.io
  contact:
    name: Cloudsmith Support
    url: https://help.cloudsmith.io
    email: support@cloudsmith.io
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  version: v1
host: api.cloudsmith.io
basePath: /
schemes:
- https
consumes:
- application/json
produces:
- application/json
security:
- apikey: []
- basic: []
tags:
- name: webhooks
paths:
  /webhooks/{owner}/{repo}/:
    parameters:
    - name: owner
      in: path
      required: true
      type: string
    - name: repo
      in: path
      required: true
      type: string
    get:
      operationId: webhooks_list
      summary: Get a list of all webhooks in a repository.
      description: Get a list of all webhooks in a repository.
      parameters:
      - name: page
        in: query
        description: A page number within the paginated result set.
        required: false
        type: integer
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      responses:
        '200':
          description: Retrieved the list of webhooks
          schema:
            type: array
            items:
              $ref: '#/definitions/RepositoryWebhook'
        '404':
          description: Owner namespace or repository not found
          schema:
            $ref: '#/definitions/ErrorDetail'
        '400':
          description: Request could not be processed (see detail).
          schema:
            $ref: '#/definitions/ErrorDetail'
        '422':
          description: Missing or invalid parameters (see detail).
          schema:
            $ref: '#/definitions/ErrorDetail'
      tags:
      - webhooks
    post:
      operationId: webhooks_create
      summary: Create a specific webhook in a repository.
      description: Create a specific webhook in a repository.
      parameters:
      - name: data
        in: body
        required: false
        schema:
          $ref: '#/definitions/RepositoryWebhookRequest'
      responses:
        '201':
          description: Created the specified webhook
          schema:
            $ref: '#/definitions/RepositoryWebhook'
        '404':
          description: Owner namespace or repository not found
          schema:
            $ref: '#/definitions/ErrorDetail'
        '400':
          description: Request could not be processed (see detail).
          schema:
            $ref: '#/definitions/ErrorDetail'
        '422':
          description: Missing or invalid parameters (see detail).
          schema:
            $ref: '#/definitions/ErrorDetail'
      tags:
      - webhooks
  /webhooks/{owner}/{repo}/{identifier}/:
    parameters:
    - name: owner
      in: path
      required: true
      type: string
    - name: repo
      in: path
      required: true
      type: string
    - name: identifier
      in: path
      required: true
      type: string
    get:
      operationId: webhooks_read
      summary: Views for working with repository webhooks.
      description: Views for working with repository webhooks.
      parameters: []
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/RepositoryWebhook'
        '400':
          description: Request could not be processed (see detail).
          schema:
            $ref: '#/definitions/ErrorDetail'
        '422':
          description: Missing or invalid parameters (see detail).
          schema:
            $ref: '#/definitions/ErrorDetail'
      tags:
      - webhooks
    patch:
      operationId: webhooks_partial_update
      summary: Update a specific webhook in a repository.
      description: Update a specific webhook in a repository.
      parameters:
      - name: data
        in: body
        required: false
        schema:
          $ref: '#/definitions/RepositoryWebhookRequestPatch'
      responses:
        '200':
          description: Updated the specified webhook
          schema:
            $ref: '#/definitions/RepositoryWebhook'
        '404':
          description: Owner namespace or repository not found
          schema:
            $ref: '#/definitions/ErrorDetail'
        '400':
          description: Request could not be processed (see detail).
          schema:
            $ref: '#/definitions/ErrorDetail'
        '422':
          description: Missing or invalid parameters (see detail).
          schema:
            $ref: '#/definitions/ErrorDetail'
      tags:
      - webhooks
    delete:
      operationId: webhooks_delete
      summary: Delete a specific webhook in a repository.
      description: Delete a specific webhook in a repository.
      parameters: []
      responses:
        '204':
          description: Deleted the specified webhook successfully.
        '400':
          description: The webhook cannot be deleted.
          schema:
            $ref: '#/definitions/ErrorDetail'
        '422':
          description: Missing or invalid parameters (see detail).
          schema:
            $ref: '#/definitions/ErrorDetail'
      tags:
      - webhooks
definitions:
  RepositoryWebhookRequestPatch:
    type: object
    properties:
      events:
        type: array
        items:
          type: string
          enum:
          - '*'
          - package.created
          - package.deleted
          - package.downloaded
          - package.failed
          - package.quarantined
          - package.released
          - package.restored
          - package.security_scanned
          - package.synced
          - package.syncing
          - package.tags_updated
        x-nullable: true
      is_active:
        title: Webhook Active
        description: If enabled, the webhook will trigger on subscribed events and send payloads to the configured target URL.
        type: boolean
      package_query:
        title: Package query
        description: The package-based search query for webhooks to fire. This uses the same syntax as the standard search used for repositories, and also supports boolean logic operators such as OR/AND/NOT and parentheses for grouping. If a package does not match, the webhook will not fire.
        type: string
        maxLength: 1024
        x-nullable: true
      request_body_format:
        title: Payload Format
        description: 'The format of the payloads for webhook requests. Valid options are: (0) JSON, (1) JSON array, (2) form encoded JSON and (3) Handlebars template.'
        type: integer
        enum:
        - 0
        - 1
        - 2
        - 3
      request_body_template_format:
        title: Payload Template Format
        description: 'The format of the payloads for webhook requests. Valid options are: (0) Generic/user defined, (1) JSON and (2) XML.'
        type: integer
        enum:
        - 0
        - 1
        - 2
      request_content_type:
        title: Content Type Header Value
        description: 'The value that will be sent for the ''Content Type'' header. '
        type: string
        maxLength: 128
        x-nullable: true
      secret_header:
        title: Secret Header
        description: The header to send the predefined secret in. This must be unique from existing headers or it won't be sent. You can use this as a form of authentication on the endpoint side.
        type: string
        pattern: ^[-\w]+$
        maxLength: 64
        x-nullable: true
      secret_value:
        title: Secret Value
        description: 'The value for the predefined secret (note: this is treated as a passphrase and is encrypted when we store it). You can use this as a form of authentication on the endpoint side.'
        type: string
        pattern: ^[^\n\r]+$
        maxLength: 512
        x-nullable: true
      signature_key:
        title: HMAC Signature Key
        description: 'The value for the signature key - This is used to generate an HMAC-based hex digest of the request body, which we send as the X-Cloudsmith-Signature header so that you can ensure that the request wasn''t modified by a malicious party (note: this is treated as a passphrase and is encrypted when we store it).'
        type: string
        maxLength: 512
        minLength: 1
      target_url:
        title: Payload URL
        description: The destination URL that webhook payloads will be POST'ed to.
        type: string
        format: uri
        maxLength: 2000
        minLength: 1
      templates:
        type: array
        items:
          $ref: '#/definitions/WebhookTemplate'
        x-nullable: true
      verify_ssl:
        title: Verify SSL Certificates
        description: If enabled, SSL certificates is verified when webhooks are sent. It's recommended to leave this enabled as not verifying the integrity of SSL certificates leaves you susceptible to Man-in-the-Middle (MITM) attacks.
        type: boolean
  ErrorDetail:
    required:
    - detail
    type: object
    properties:
      detail:
        title: Detail
        description: An extended message for the response.
        type: string
        minLength: 1
      fields:
        title: Fields
        description: 'A Dictionary of related errors where key: Field and value: Array of Errors related to that field'
        type: object
        additionalProperties:
          type: array
          items:
            type: string
            minLength: 1
  WebhookTemplate:
    required:
    - event
    type: object
    properties:
      event:
        title: Event
        type: string
        maxLength: 128
        minLength: 1
      template:
        title: Template
        type: string
        maxLength: 4096
        x-nullable: true
    x-nullable: true
  RepositoryWebhookRequest:
    required:
    - events
    - target_url
    - templates
    type: object
    properties:
      events:
        type: array
        items:
          type: string
          enum:
          - '*'
          - package.created
          - package.deleted
          - package.downloaded
          - package.failed
          - package.quarantined
          - package.released
          - package.restored
          - package.security_scanned
          - package.synced
          - package.syncing
          - package.tags_updated
        x-nullable: true
      is_active:
        title: Webhook Active
        description: If enabled, the webhook will trigger on subscribed events and send payloads to the configured target URL.
        type: boolean
      package_query:
        title: Package query
        description: The package-based search query for webhooks to fire. This uses the same syntax as the standard search used for repositories, and also supports boolean logic operators such as OR/AND/NOT and parentheses for grouping. If a package does not match, the webhook will not fire.
        type: string
        maxLength: 1024
        x-nullable: true
      request_body_format:
        title: Payload Format
        description: 'The format of the payloads for webhook requests. Valid options are: (0) JSON, (1) JSON array, (2) form encoded JSON and (3) Handlebars template.'
        type: integer
        enum:
        - 0
        - 1
        - 2
        - 3
      request_body_template_format:
        title: Payload Template Format
        description: 'The format of the payloads for webhook requests. Valid options are: (0) Generic/user defined, (1) JSON and (2) XML.'
        type: integer
        enum:
        - 0
        - 1
        - 2
      request_content_type:
        title: Content Type Header Value
        description: 'The value that will be sent for the ''Content Type'' header. '
        type: string
        maxLength: 128
        x-nullable: true
      secret_header:
        title: Secret Header
        description: The header to send the predefined secret in. This must be unique from existing headers or it won't be sent. You can use this as a form of authentication on the endpoint side.
        type: string
        pattern: ^[-\w]+$
        maxLength: 64
        x-nullable: true
      secret_value:
        title: Secret Value
        description: 'The value for the predefined secret (note: this is treated as a passphrase and is encrypted when we store it). You can use this as a form of authentication on the endpoint side.'
        type: string
        pattern: ^[^\n\r]+$
        maxLength: 512
        x-nullable: true
      signature_key:
        title: HMAC Signature Key
        description: 'The value for the signature key - This is used to generate an HMAC-based hex digest of the request body, which we send as the X-Cloudsmith-Signature header so that you can ensure that the request wasn''t modified by a malicious party (note: this is treated as a passphrase and is encrypted when we store it).'
        type: string
        maxLength: 512
        minLength: 1
      target_url:
        title: Payload URL
        description: The destination URL that webhook payloads will be POST'ed to.
        type: string
        format: uri
        maxLength: 2000
        minLength: 1
      templates:
        type: array
        items:
          $ref: '#/definitions/WebhookTemplate'
        x-nullable: true
      verify_ssl:
        title: Verify SSL Certificates
        description: If enabled, SSL certificates is verified when webhooks are sent. It's recommended to leave this enabled as not verifying the integrity of SSL certificates leaves you susceptible to Man-in-the-Middle (MITM) attacks.
        type: boolean
  RepositoryWebhook:
    required:
    - events
    - target_url
    - templates
    type: object
    properties:
      created_at:
        title: Created at
        type: string
        format: date-time
        readOnly: true
      created_by:
        title: Created by
        type: string
        readOnly: true
        minLength: 1
      created_by_url:
        title: Created by url
        type: string
        format: uri
        readOnly: true
      disable_reason:
        title: Disable reason
        type: integer
        enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        readOnly: true
      disable_reason_str:
        title: Disable reason str
        type: string
        readOnly: true
        minLength: 1
      events:
        type: array
        items:
          type: string
          enum:
          - '*'
          - package.created
          - package.deleted
          - package.downloaded
          - package.failed
          - package.quarantined
          - package.released
          - package.restored
          - package.security_scanned
          - package.synced
          - package.syncing
          - package.tags_updated
        x-nullable: true
      identifier:
        title: Identifier
        description: 'Deprecated (23-05-15): Please use ''slug_perm'' instead. Previously: A monotonically increasing number that identified a webhook request within a repository.'
        type: integer
        readOnly: true
        x-nullable: true
      is_active:
        title: Webhook Active
        description: If enabled, the webhook will trigger on subscribed events and send payloads to the configured target URL.
        type: boolean
      is_last_response_bad:
        title: Is last response bad
        type: boolean
        readOnly: true
      last_response_status:
        title: Last response status
        type: integer
        readOnly: true
      last_response_status_str:
        title: Last response status str
        type: string
        readOnly: true
        minLength: 1
      num_sent:
        title: Num sent
        type: integer
        readOnly: true
      package_query:
        title: Package query
        description: The package-based search query for webhooks to fire. This uses the same syntax as the standard search used for repositories, and also supports boolean logic operators such as OR/AND/NOT and parentheses for grouping. If a package does not match, the webhook will not fire.
        type: string
        maxLength: 1024
        x-nullable: true
      request_body_format:
        title: Payload Format
        description: 'The format of the payloads for webhook requests. Valid options are: (0) JSON, (1) JSON array, (2) form encoded JSON and (3) Handlebars template.'
        type: integer
        enum:
        - 0
        - 1
        - 2
        - 3
      request_body_format_str:
        title: Request body format str
        type: string
        readOnly: true
        minLength: 1
      request_body_template_format:
        title: Payload Template Format
        description: 'The format of the payloads for webhook requests. Valid options are: (0) Generic/user defined, (1) JSON and (2) XML.'
        type: integer
        enum:
        - 0
        - 1
        - 2
      request_body_template_format_str:
        title: Request body template format str
        type: string
        readOnly: true
        minLength: 1
      request_content_type:
        title: Content Type Header Value
        description: 'The value that will be sent for the ''Content Type'' header. '
        type: string
        maxLength: 128
        x-nullable: true
      secret_header:
        title: Secret Header
        description: The header to send the predefined secret in. This must be unique from existing headers or it won't be sent. You can use this as a form of authentication on the endpoint side.
        type: string
        pattern: ^[-\w]+$
        maxLength: 64
        x-nullable: true
      self_url:
        title: Self url
        type: string
        format: uri
        readOnly: true
      slug_perm:
        title: Slug perm
        type: string
        format: slug
        pattern: ^[-a-zA-Z0-9_]+$
        readOnly: true
        minLength: 1
      target_url:
        title: Payload URL
        description: The destination URL that webhook payloads will be POST'ed to.
        type: string
        format: uri
        maxLength: 2000
        minLength: 1
      templates:
        type: array
        items:
          $ref: '#/definitions/WebhookTemplate'
        x-nullable: true
      updated_at:
        title: Updated at
        type: string
        format: date-time
        readOnly: true
      updated_by:
        title: Updated by
        type: string
        readOnly: true
        minLength: 1
      updated_by_url:
        title: Updated by url
        type: string
        format: uri
        readOnly: true
      verify_ssl:
        title: Verify SSL Certificates
        description: If enabled, SSL certificates is verified when webhooks are sent. It's recommended to leave this enabled as not verifying the integrity of SSL certificates leaves you susceptible to Man-in-the-Middle (MITM) attacks.
        type: boolean
securityDefinitions:
  apikey:
    type: apiKey
    name: X-Api-Key
    in: header
  basic:
    type: basic