From 6563d61cd9f7435f5f606d46e2b63e7f0e2cda34 Mon Sep 17 00:00:00 2001
From: antoniobg <2571283+antoniobg@users.noreply.github.com>
Date: Fri, 12 Dec 2025 09:21:05 +0000
Subject: [PATCH] [create-pull-request] automated change
---
openapi-spec/api-v2-beta.yaml | 532 ++++++++++++++++++++++++++++++++++
openapi-spec/api-v2.yaml | 532 ++++++++++++++++++++++++++++++++++
2 files changed, 1064 insertions(+)
diff --git a/openapi-spec/api-v2-beta.yaml b/openapi-spec/api-v2-beta.yaml
index 3d979541c..5baf96bc0 100644
--- a/openapi-spec/api-v2-beta.yaml
+++ b/openapi-spec/api-v2-beta.yaml
@@ -25,6 +25,8 @@ tags:
description: Operations about invoices.
- name: Paywall
description: Operations about paywalls.
+- name: Integration
+ description: Operations about integrations.
- name: Project
description: Operations about projects.
- name: Subscription Data Model
@@ -1925,6 +1927,309 @@ paths:
'503':
$ref: '#/components/responses/InternalError'
description: 'This endpoint requires the following permission(s): customer_information:customers:read_write.'
+ /projects/{project_id}/integrations/webhooks:
+ get:
+ summary: List webhook integrations
+ operationId: list-webhook-integrations
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ - name: starting_after
+ in: query
+ required: false
+ schema:
+ type: string
+ example: ent12354
+ - name: limit
+ in: query
+ required: false
+ schema:
+ type: integer
+ example: 10
+ default: 20
+ responses:
+ '200':
+ description: Success
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListWebhookIntegrations'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read.'
+ post:
+ summary: Create a webhook integration
+ operationId: create-webhook-integration
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read_write
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CreateWebhookIntegrationInput'
+ additionalProperties: false
+ responses:
+ '201':
+ description: Webhook integration created
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WebhookIntegration'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '409':
+ $ref: '#/components/responses/Conflict'
+ '422':
+ $ref: '#/components/responses/UnprocessableEntity'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read_write.'
+ /projects/{project_id}/integrations/webhooks/{webhook_integration_id}:
+ get:
+ summary: Get a webhook integration
+ operationId: get-webhook-integration
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ - name: webhook_integration_id
+ in: path
+ description: The ID of the webhook integration
+ required: true
+ schema:
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: wh_1234567890abcdef
+ responses:
+ '200':
+ description: Success
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WebhookIntegration'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read.'
+ post:
+ summary: Update a webhook integration
+ operationId: update-webhook-integration
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read_write
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ - name: webhook_integration_id
+ in: path
+ description: The ID of the webhook integration
+ required: true
+ schema:
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: wh_1234567890abcdef
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UpdateWebhookIntegrationInput'
+ additionalProperties: false
+ responses:
+ '200':
+ description: Webhook integration updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WebhookIntegration'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '409':
+ $ref: '#/components/responses/Conflict'
+ '422':
+ $ref: '#/components/responses/UnprocessableEntity'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read_write.'
+ delete:
+ summary: Delete a webhook integration
+ operationId: delete-webhook-integration
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read_write
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ - name: webhook_integration_id
+ in: path
+ description: The ID of the webhook integration
+ required: true
+ schema:
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: wh_1234567890abcdef
+ responses:
+ '200':
+ description: Webhook integration deleted
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DeletedObject'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '409':
+ $ref: '#/components/responses/Conflict'
+ '422':
+ $ref: '#/components/responses/UnprocessableEntity'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read_write.'
/projects/{project_id}/products/{product_id}:
get:
summary: Get a product
@@ -6298,6 +6603,52 @@ components:
maxLength: 255
description: The ID of the subscription group (optional)
additionalProperties: false
+ CreateWebhookIntegrationInput:
+ type: object
+ required:
+ - name
+ - url
+ properties:
+ name:
+ description: The display name of the webhook integration
+ type: string
+ minLength: 1
+ maxLength: 1500
+ example: Customer updates webhook
+ url:
+ description: The URL RevenueCat will send webhook notifications to
+ type: string
+ format: uri
+ maxLength: 5000
+ example: https://hooks.example.com/revenuecat
+ authorization_header:
+ description: Optional authorization header that will be sent with webhook
+ notifications
+ type: string
+ nullable: true
+ maxLength: 5000
+ example: Bearer 123456
+ environment:
+ description: The environment the webhook integration is configured for
+ type: string
+ nullable: true
+ enum:
+ - production
+ - sandbox
+ - null
+ event_types:
+ description: Event types that will trigger the webhook
+ type: array
+ nullable: true
+ items:
+ $ref: '#/components/schemas/WebhookEventType'
+ app_id:
+ description: The ID of the app the webhook integration is scoped to
+ type: string
+ nullable: true
+ minLength: 1
+ maxLength: 255
+ example: app_1234567890abcdef
Currency:
type: string
description: ISO 4217 currency code
@@ -6719,6 +7070,7 @@ components:
- offering
- package
- product
+ - webhook_integration
type: string
id:
description: The ID of the deleted object
@@ -7569,6 +7921,39 @@ components:
type: string
example: /v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/virtual_currencies
additionalProperties: false
+ ListWebhookIntegrations:
+ required:
+ - items
+ - object
+ - url
+ title: WebhookIntegrationList
+ type: object
+ properties:
+ object:
+ description: 'String representing the object''s type. Objects of the same
+ type share the
+
+ same value.'
+ enum:
+ - list
+ type: string
+ items:
+ description: Webhook integrations configured for the project.
+ type: array
+ items:
+ $ref: '#/components/schemas/WebhookIntegration'
+ next_page:
+ description: URL to access the next page of webhook integrations. If not
+ present / null, there is no next page
+ type: string
+ nullable: true
+ example: /v2/projects/proj1ab2c3d4/integrations/webhooks?starting_after=whintgr1a2b3c4d
+ url:
+ description: The URL where this list can be accessed.
+ maxLength: 5000
+ type: string
+ example: /v2/projects/proj1ab2c3d4/integrations/webhooks
+ additionalProperties: false
MacAppStoreApp:
type: object
properties:
@@ -9074,6 +9459,49 @@ components:
target_customer:
description: The target customer after the transfer
$ref: '#/components/schemas/Customer'
+ UpdateWebhookIntegrationInput:
+ type: object
+ properties:
+ name:
+ description: The display name of the webhook integration
+ type: string
+ minLength: 1
+ maxLength: 1500
+ example: Customer updates webhook
+ url:
+ description: The URL RevenueCat will send webhook notifications to
+ type: string
+ format: uri
+ maxLength: 5000
+ example: https://hooks.example.com/revenuecat
+ authorization_header:
+ description: Optional authorization header that will be sent with webhook
+ notifications
+ type: string
+ nullable: true
+ maxLength: 5000
+ example: Bearer 123456
+ environment:
+ description: The environment the webhook integration is configured for
+ type: string
+ nullable: true
+ enum:
+ - production
+ - sandbox
+ - null
+ event_types:
+ description: Event types that will trigger the webhook
+ type: array
+ nullable: true
+ items:
+ $ref: '#/components/schemas/WebhookEventType'
+ app_id:
+ description: The ID of the app the webhook integration is scoped to
+ type: string
+ nullable: true
+ minLength: 1
+ maxLength: 255
+ example: app_1234567890abcdef
VirtualCurrencyBalance:
type: object
title: VirtualCurrencyBalance
@@ -9101,6 +9529,109 @@ components:
description: The name of the virtual currency.
type: string
additionalProperties: false
+ WebhookEventType:
+ type: string
+ description: The type of event that triggers the webhook
+ example: initial_purchase
+ enum:
+ - initial_purchase
+ - renewal
+ - product_change
+ - cancellation
+ - billing_issue
+ - non_renewing_purchase
+ - uncancellation
+ - transfer
+ - subscription_paused
+ - expiration
+ - subscription_extended
+ - invoice_issuance
+ - temporary_entitlement_grant
+ - refund_reversed
+ - virtual_currency_transaction
+ additionalProperties: false
+ WebhookIntegration:
+ type: object
+ required:
+ - id
+ - name
+ - url
+ - project_id
+ - object
+ - created_at
+ - app_id
+ - environment
+ properties:
+ object:
+ description: 'String representing the object''s type. Objects of the same
+ type share the
+
+ same value.'
+ enum:
+ - webhook_integration
+ type: string
+ id:
+ description: The ID of the webhook integration
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: wh_1234567890abcdef
+ project_id:
+ description: The ID of the project the webhook integration belongs to
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: proj_1234567890abcdef
+ name:
+ description: The display name of the webhook integration
+ type: string
+ minLength: 1
+ maxLength: 1500
+ example: Customer updates webhook
+ url:
+ description: The URL RevenueCat will send webhook notifications to
+ type: string
+ format: uri
+ maxLength: 5000
+ example: https://hooks.example.com/revenuecat
+ environment:
+ description: The environment the webhook integration is configured for.
+ Only events for the selected environment will be sent.
+ type: string
+ nullable: true
+ enum:
+ - production
+ - sandbox
+ - null
+ event_types:
+ description: Event types that will trigger the webhook. Only events for
+ the selected event types will be sent.
+ type: array
+ nullable: true
+ items:
+ type: string
+ description: 'The event type. Known values include: initial_purchase,
+ renewal, product_change, cancellation, billing_issue, non_renewing_purchase,
+ uncancellation, transfer, subscription_paused, expiration, subscription_extended,
+ invoice_issuance, temporary_entitlement_grant, refund_reversed, virtual_currency_transaction.
+ New event types may be added in the future.'
+ example: initial_purchase
+ app_id:
+ description: The ID of the app the webhook integration is scoped to. If
+ not provided, the webhook integration will be scoped to all apps in the
+ project.
+ type: string
+ nullable: true
+ minLength: 1
+ maxLength: 255
+ example: app_1234567890abcdef
+ created_at:
+ description: The timestamp in ms since epoch when the webhook integration
+ was created
+ type: integer
+ format: int64
+ example: 1658399423658
+ additionalProperties: false
headers:
RateLimitCurrentLimit:
required: true
@@ -9375,5 +9906,6 @@ x-tagGroups:
- Subscription
- Invoice
- Paywall
+ - Integration
- Project
openapi: 3.0.3
diff --git a/openapi-spec/api-v2.yaml b/openapi-spec/api-v2.yaml
index 5531283ba..5b2ddc88e 100644
--- a/openapi-spec/api-v2.yaml
+++ b/openapi-spec/api-v2.yaml
@@ -25,6 +25,8 @@ tags:
description: Operations about invoices.
- name: Paywall
description: Operations about paywalls.
+- name: Integration
+ description: Operations about integrations.
- name: Project
description: Operations about projects.
- name: Subscription Data Model
@@ -1764,6 +1766,309 @@ paths:
$ref: '#/components/responses/InternalError'
description: 'This endpoint requires the following permission(s): project_configuration:offerings:read,
customer_information:customers:read_write.'
+ /projects/{project_id}/integrations/webhooks:
+ get:
+ summary: List webhook integrations
+ operationId: list-webhook-integrations
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ - name: starting_after
+ in: query
+ required: false
+ schema:
+ type: string
+ example: ent12354
+ - name: limit
+ in: query
+ required: false
+ schema:
+ type: integer
+ example: 10
+ default: 20
+ responses:
+ '200':
+ description: Success
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListWebhookIntegrations'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read.'
+ post:
+ summary: Create a webhook integration
+ operationId: create-webhook-integration
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read_write
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CreateWebhookIntegrationInput'
+ additionalProperties: false
+ responses:
+ '201':
+ description: Webhook integration created
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WebhookIntegration'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '409':
+ $ref: '#/components/responses/Conflict'
+ '422':
+ $ref: '#/components/responses/UnprocessableEntity'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read_write.'
+ /projects/{project_id}/integrations/webhooks/{webhook_integration_id}:
+ get:
+ summary: Get a webhook integration
+ operationId: get-webhook-integration
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ - name: webhook_integration_id
+ in: path
+ description: The ID of the webhook integration
+ required: true
+ schema:
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: wh_1234567890abcdef
+ responses:
+ '200':
+ description: Success
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WebhookIntegration'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read.'
+ post:
+ summary: Update a webhook integration
+ operationId: update-webhook-integration
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read_write
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ - name: webhook_integration_id
+ in: path
+ description: The ID of the webhook integration
+ required: true
+ schema:
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: wh_1234567890abcdef
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UpdateWebhookIntegrationInput'
+ additionalProperties: false
+ responses:
+ '200':
+ description: Webhook integration updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WebhookIntegration'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '409':
+ $ref: '#/components/responses/Conflict'
+ '422':
+ $ref: '#/components/responses/UnprocessableEntity'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read_write.'
+ delete:
+ summary: Delete a webhook integration
+ operationId: delete-webhook-integration
+ x-revenuecat-rate-limiting-domain: project_configuration
+ x-scopes:
+ - project_configuration:integrations:read_write
+ x-release-status: public
+ tags:
+ - Integration
+ parameters:
+ - name: project_id
+ description: ID of the project
+ required: true
+ in: path
+ schema:
+ type: string
+ maxLength: 255
+ example: proj1ab2c3d4
+ - name: webhook_integration_id
+ in: path
+ description: The ID of the webhook integration
+ required: true
+ schema:
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: wh_1234567890abcdef
+ responses:
+ '200':
+ description: Webhook integration deleted
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DeletedObject'
+ headers:
+ RevenueCat-Rate-Limit-Current-Usage:
+ $ref: '#/components/headers/RateLimitCurrentUsage'
+ RevenueCat-Rate-Limit-Current-Limit:
+ $ref: '#/components/headers/RateLimitCurrentLimit'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/NotFound'
+ '409':
+ $ref: '#/components/responses/Conflict'
+ '422':
+ $ref: '#/components/responses/UnprocessableEntity'
+ '423':
+ $ref: '#/components/responses/Locked'
+ '429':
+ $ref: '#/components/responses/RateLimited'
+ '500':
+ $ref: '#/components/responses/InternalError'
+ '503':
+ $ref: '#/components/responses/InternalError'
+ description: 'This endpoint requires the following permission(s): project_configuration:integrations:read_write.'
/projects/{project_id}/products/{product_id}:
get:
summary: Get a product
@@ -6137,6 +6442,52 @@ components:
maxLength: 255
description: The ID of the subscription group (optional)
additionalProperties: false
+ CreateWebhookIntegrationInput:
+ type: object
+ required:
+ - name
+ - url
+ properties:
+ name:
+ description: The display name of the webhook integration
+ type: string
+ minLength: 1
+ maxLength: 1500
+ example: Customer updates webhook
+ url:
+ description: The URL RevenueCat will send webhook notifications to
+ type: string
+ format: uri
+ maxLength: 5000
+ example: https://hooks.example.com/revenuecat
+ authorization_header:
+ description: Optional authorization header that will be sent with webhook
+ notifications
+ type: string
+ nullable: true
+ maxLength: 5000
+ example: Bearer 123456
+ environment:
+ description: The environment the webhook integration is configured for
+ type: string
+ nullable: true
+ enum:
+ - production
+ - sandbox
+ - null
+ event_types:
+ description: Event types that will trigger the webhook
+ type: array
+ nullable: true
+ items:
+ $ref: '#/components/schemas/WebhookEventType'
+ app_id:
+ description: The ID of the app the webhook integration is scoped to
+ type: string
+ nullable: true
+ minLength: 1
+ maxLength: 255
+ example: app_1234567890abcdef
Currency:
type: string
description: ISO 4217 currency code
@@ -6558,6 +6909,7 @@ components:
- offering
- package
- product
+ - webhook_integration
type: string
id:
description: The ID of the deleted object
@@ -7385,6 +7737,39 @@ components:
type: string
example: /v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-aa18-019a391603e2/virtual_currencies
additionalProperties: false
+ ListWebhookIntegrations:
+ required:
+ - items
+ - object
+ - url
+ title: WebhookIntegrationList
+ type: object
+ properties:
+ object:
+ description: 'String representing the object''s type. Objects of the same
+ type share the
+
+ same value.'
+ enum:
+ - list
+ type: string
+ items:
+ description: Webhook integrations configured for the project.
+ type: array
+ items:
+ $ref: '#/components/schemas/WebhookIntegration'
+ next_page:
+ description: URL to access the next page of webhook integrations. If not
+ present / null, there is no next page
+ type: string
+ nullable: true
+ example: /v2/projects/proj1ab2c3d4/integrations/webhooks?starting_after=whintgr1a2b3c4d
+ url:
+ description: The URL where this list can be accessed.
+ maxLength: 5000
+ type: string
+ example: /v2/projects/proj1ab2c3d4/integrations/webhooks
+ additionalProperties: false
MacAppStoreApp:
type: object
properties:
@@ -8890,6 +9275,49 @@ components:
target_customer:
description: The target customer after the transfer
$ref: '#/components/schemas/Customer'
+ UpdateWebhookIntegrationInput:
+ type: object
+ properties:
+ name:
+ description: The display name of the webhook integration
+ type: string
+ minLength: 1
+ maxLength: 1500
+ example: Customer updates webhook
+ url:
+ description: The URL RevenueCat will send webhook notifications to
+ type: string
+ format: uri
+ maxLength: 5000
+ example: https://hooks.example.com/revenuecat
+ authorization_header:
+ description: Optional authorization header that will be sent with webhook
+ notifications
+ type: string
+ nullable: true
+ maxLength: 5000
+ example: Bearer 123456
+ environment:
+ description: The environment the webhook integration is configured for
+ type: string
+ nullable: true
+ enum:
+ - production
+ - sandbox
+ - null
+ event_types:
+ description: Event types that will trigger the webhook
+ type: array
+ nullable: true
+ items:
+ $ref: '#/components/schemas/WebhookEventType'
+ app_id:
+ description: The ID of the app the webhook integration is scoped to
+ type: string
+ nullable: true
+ minLength: 1
+ maxLength: 255
+ example: app_1234567890abcdef
VirtualCurrencyBalance:
type: object
title: VirtualCurrencyBalance
@@ -8917,6 +9345,109 @@ components:
description: The name of the virtual currency.
type: string
additionalProperties: false
+ WebhookEventType:
+ type: string
+ description: The type of event that triggers the webhook
+ example: initial_purchase
+ enum:
+ - initial_purchase
+ - renewal
+ - product_change
+ - cancellation
+ - billing_issue
+ - non_renewing_purchase
+ - uncancellation
+ - transfer
+ - subscription_paused
+ - expiration
+ - subscription_extended
+ - invoice_issuance
+ - temporary_entitlement_grant
+ - refund_reversed
+ - virtual_currency_transaction
+ additionalProperties: false
+ WebhookIntegration:
+ type: object
+ required:
+ - id
+ - name
+ - url
+ - project_id
+ - object
+ - created_at
+ - app_id
+ - environment
+ properties:
+ object:
+ description: 'String representing the object''s type. Objects of the same
+ type share the
+
+ same value.'
+ enum:
+ - webhook_integration
+ type: string
+ id:
+ description: The ID of the webhook integration
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: wh_1234567890abcdef
+ project_id:
+ description: The ID of the project the webhook integration belongs to
+ type: string
+ minLength: 1
+ maxLength: 255
+ example: proj_1234567890abcdef
+ name:
+ description: The display name of the webhook integration
+ type: string
+ minLength: 1
+ maxLength: 1500
+ example: Customer updates webhook
+ url:
+ description: The URL RevenueCat will send webhook notifications to
+ type: string
+ format: uri
+ maxLength: 5000
+ example: https://hooks.example.com/revenuecat
+ environment:
+ description: The environment the webhook integration is configured for.
+ Only events for the selected environment will be sent.
+ type: string
+ nullable: true
+ enum:
+ - production
+ - sandbox
+ - null
+ event_types:
+ description: Event types that will trigger the webhook. Only events for
+ the selected event types will be sent.
+ type: array
+ nullable: true
+ items:
+ type: string
+ description: 'The event type. Known values include: initial_purchase,
+ renewal, product_change, cancellation, billing_issue, non_renewing_purchase,
+ uncancellation, transfer, subscription_paused, expiration, subscription_extended,
+ invoice_issuance, temporary_entitlement_grant, refund_reversed, virtual_currency_transaction.
+ New event types may be added in the future.'
+ example: initial_purchase
+ app_id:
+ description: The ID of the app the webhook integration is scoped to. If
+ not provided, the webhook integration will be scoped to all apps in the
+ project.
+ type: string
+ nullable: true
+ minLength: 1
+ maxLength: 255
+ example: app_1234567890abcdef
+ created_at:
+ description: The timestamp in ms since epoch when the webhook integration
+ was created
+ type: integer
+ format: int64
+ example: 1658399423658
+ additionalProperties: false
headers:
RateLimitCurrentLimit:
required: true
@@ -9190,5 +9721,6 @@ x-tagGroups:
- Subscription
- Invoice
- Paywall
+ - Integration
- Project
openapi: 3.0.3