openapi: 3.1.0 info: title: FullStory Webhooks API description: >- The FullStory Webhooks API enables developers to create, update, retrieve, and manage webhook endpoints that receive real-time notifications from FullStory. Supported event types include segment creation, segment threshold alerts, and custom event notifications. Webhooks allow event-driven integrations that respond immediately to behavioral signals detected by FullStory, eliminating the need for polling and enabling automated workflows based on user activity patterns. version: '1.0' contact: name: FullStory Support url: https://help.fullstory.com/ termsOfService: https://www.fullstory.com/legal/terms-and-conditions/ externalDocs: description: FullStory Webhooks API Documentation url: https://developer.fullstory.com/destinations/v1/webhooks/getting-started/ servers: - url: https://api.fullstory.com description: FullStory Production API Server tags: - name: Endpoints description: >- Create, retrieve, update, and delete webhook endpoints that receive real-time notifications from FullStory. Each endpoint has a destination URL, configured event types, signing secret, and enabled status. - name: Event Types description: >- List available webhook event types that can be configured for endpoints. Some event types require subcategories and may be limited by plan. security: - basicAuth: [] paths: /webhooks/v1/endpoints: post: operationId: createEndpoint summary: Create a webhook endpoint description: >- Creates a new webhook endpoint with the given properties, including the destination URL and the event types it should receive. Some event types require a subcategory property. Returns the created endpoint details including its ID and signing secret. tags: - Endpoints requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateEndpointRequest' responses: '200': description: Webhook endpoint created successfully content: application/json: schema: $ref: '#/components/schemas/Endpoint' '400': description: Invalid input provided content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized - invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden - insufficient permissions content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/Error' get: operationId: listEndpoints summary: List webhook endpoints description: >- Pages through all configured webhook endpoints with pagination support. Returns endpoint details including ID, URL, configured event types, and enabled status. tags: - Endpoints responses: '200': description: List of webhook endpoints retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EndpointList' '401': description: Unauthorized - invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/Error' /webhooks/v1/endpoints/{endpointId}: get: operationId: getEndpoint summary: Get a webhook endpoint description: >- Retrieves endpoint details corresponding to the provided endpoint ID, including the destination URL, configured event types, signing secret, and enabled status. tags: - Endpoints parameters: - $ref: '#/components/parameters/EndpointIdPath' responses: '200': description: Webhook endpoint retrieved successfully content: application/json: schema: $ref: '#/components/schemas/Endpoint' '401': description: Unauthorized - invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Endpoint not found content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/Error' put: operationId: updateEndpoint summary: Update a webhook endpoint description: >- Updates an existing webhook endpoint. Can be used to change the destination URL, configured events, signing secret, and the enabled status of the endpoint. tags: - Endpoints parameters: - $ref: '#/components/parameters/EndpointIdPath' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateEndpointRequest' responses: '200': description: Webhook endpoint updated successfully content: application/json: schema: $ref: '#/components/schemas/Endpoint' '400': description: Invalid input provided content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized - invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden - insufficient permissions content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Endpoint not found content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/Error' delete: operationId: deleteEndpoint summary: Delete a webhook endpoint description: >- Permanently deletes the webhook endpoint specified by the endpoint ID. The endpoint will no longer receive any event notifications after deletion. tags: - Endpoints parameters: - $ref: '#/components/parameters/EndpointIdPath' responses: '200': description: Webhook endpoint deleted successfully '401': description: Unauthorized - invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Endpoint not found content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/Error' /webhooks/v1/event_types: get: operationId: listEventTypes summary: List available webhook event types description: >- Returns the list of all available event types that can be configured for webhook endpoints. Some event types may not be returned if your FullStory plan does not support them. Event types that have subcategories require a subcategory to be specified when creating an endpoint. tags: - Event Types responses: '200': description: List of event types retrieved successfully content: application/json: schema: $ref: '#/components/schemas/EventTypeList' '401': description: Unauthorized - invalid or missing API key content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/Error' components: securitySchemes: basicAuth: type: http scheme: basic description: >- API key passed in the Authorization header using Basic authentication. Admin or Architect level keys are required. parameters: EndpointIdPath: name: endpointId in: path required: true description: >- The unique identifier of the webhook endpoint schema: type: string schemas: CreateEndpointRequest: type: object required: - url - events description: >- Request body for creating a new webhook endpoint properties: url: type: string format: uri description: >- The URL that will receive webhook event notifications events: type: array description: >- The types of events this endpoint should receive items: $ref: '#/components/schemas/EventTypeConfig' UpdateEndpointRequest: type: object description: >- Request body for updating an existing webhook endpoint properties: url: type: string format: uri description: >- The new destination URL for webhook events events: type: array description: >- Updated list of event types for this endpoint items: $ref: '#/components/schemas/EventTypeConfig' signingSecret: type: string description: >- Updated signing secret for verifying webhook payloads enabled: type: boolean description: >- Whether the endpoint is enabled and receiving events EventTypeConfig: type: object required: - eventName description: >- Configuration for a specific event type on a webhook endpoint properties: eventName: type: string description: >- The name of the event type enum: - segment.created - segment.trend.alert - recording.event.custom - note.created subcategory: type: string description: >- Required subcategory for event types that require one, such as specifying which custom event to listen for Endpoint: type: object description: >- A configured webhook endpoint in FullStory properties: id: type: string description: >- Unique identifier for the webhook endpoint url: type: string format: uri description: >- The destination URL receiving webhook events events: type: array description: >- The event types configured for this endpoint items: $ref: '#/components/schemas/EventTypeConfig' signingSecret: type: string description: >- Secret used to sign webhook payloads for verification enabled: type: boolean description: >- Whether the endpoint is actively receiving events createdAt: type: string format: date-time description: >- Timestamp when the endpoint was created EndpointList: type: object description: >- List of webhook endpoints properties: endpoints: type: array description: >- Array of configured webhook endpoints items: $ref: '#/components/schemas/Endpoint' EventType: type: object description: >- A webhook event type available in FullStory properties: eventName: type: string description: >- The name of the event type description: type: string description: >- Human-readable description of the event type hasSubcategories: type: boolean description: >- Whether this event type requires a subcategory when configuring an endpoint EventTypeList: type: object description: >- List of available webhook event types properties: eventTypes: type: array description: >- Array of available event types items: $ref: '#/components/schemas/EventType' Error: type: object description: >- Standard error response from the FullStory API properties: code: type: integer description: >- HTTP status code message: type: string description: >- Human-readable error message