openapi: 3.0.2
info:
title: Fyno Rest Fire an Event Manage User Subscriptions & Preferences API
version: v1
servers:
- url: https://api.fyno.io/v1
security:
- BearerAuth: []
tags:
- name: Manage User Subscriptions & Preferences
paths:
/{WSID}/{version}/subscriptions/preference:
get:
tags:
- Manage User Subscriptions & Preferences
summary: Get user preference
description: This API enables you to get all the subscriptions topics (with sections) defined in your workspace along with the opted-in/opted-out preference of a particular user.
parameters:
- name: WSID
in: path
description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account.
required: true
style: simple
explode: false
schema:
type: string
example: FYXXXXXXXX
- name: version
in: path
description: Specify the version for which you would like to manage the user profile.
required: true
style: simple
explode: false
schema:
type: string
default: live
enum:
- live
- test
- name: distinct_id
in: query
description: Enter the distinct ID that you currently use to identify the user.
required: true
style: form
explode: true
schema:
type: string
example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- name: event_list
in: query
description: Set this value to 'true' to receive list of notification events attached to each subscription topic.
required: false
style: form
explode: false
schema:
type: boolean
default: false
enum:
- true
- false
example: false
responses:
'200':
$ref: '#/components/responses/PrefProfileFetched'
'400':
$ref: '#/components/responses/DistinctIDMissing'
'401':
$ref: '#/components/responses/APIKeyInvalid'
put:
tags:
- Manage User Subscriptions & Preferences
summary: Update user preference
description: This API enables you to update the channel preference of a user for multiple subscription topics. In the JSON payload, enter the subscription ID as keys to update the channel preference. To update the user preference for all subscription topics at once (global preference), use 'all' instead of the subscription id.
**Note:** If the channel configuration for a subscription topic is set to 'required', then the user preference for the channel cannot be updated.
parameters:
- name: WSID
in: path
description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account.
required: true
style: simple
explode: false
schema:
type: string
example: FYXXXXXXXX
- name: version
in: path
description: Specify the version for which you would like to manage the user profile.
required: true
style: simple
explode: false
schema:
type: string
default: live
enum:
- live
- test
- name: distinct_id
in: query
description: Enter the distinct ID that you currently use to identify the user.
required: true
style: form
explode: true
schema:
type: string
example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/update_subscription_multiple'
required: true
responses:
'200':
$ref: '#/components/responses/SubscriptionUpdated'
'400':
$ref: '#/components/responses/DistinctIDChannelStatusMissing'
'401':
$ref: '#/components/responses/APIKeyInvalid'
/{WSID}/{version}/subscriptions/list/{subscription_id}/user:
post:
tags:
- Manage User Subscriptions & Preferences
summary: Update user preference (single)
description: This API enables you to update the channel preference of a user for a particular subscription topic.
**Note:** If the channel configuration for a subscription topic is set to 'required', then the user preference for the channel cannot be updated.
parameters:
- name: WSID
in: path
description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account.
required: true
style: simple
explode: false
schema:
type: string
example: FYXXXXXXXX
- name: version
in: path
description: Specify the version for which you would like to manage the user profile.
required: true
style: simple
explode: false
schema:
type: string
default: live
enum:
- live
- test
- name: subscription_id
in: path
description: Enter the subscription ID to update the channel preference for the subscription topic. To update the user preference for all subscription topics at once (global preference), use 'all' instead of the subscription id.
required: true
style: simple
explode: true
schema:
type: string
example: SXXXXXXXXX
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/update_subscription_single'
required: true
responses:
'200':
$ref: '#/components/responses/SubscriptionUpdated'
'400':
$ref: '#/components/responses/DistinctIDChannelStatusMissing'
'401':
$ref: '#/components/responses/APIKeyInvalid'
components:
schemas:
update_subscription_single:
properties:
channel:
enum:
- sms
- whatsapp
- email
- discord
- slack
- teams
- push
- voice
- inapp
- webpush
type: string
distinct_id:
type: string
status:
enum:
- opted-in
- opted-out
type: string
type: object
required:
- channel
- distinct_id
- status
preference_channels_opted_out:
properties:
discord:
enum:
- opted-out
type: string
email:
enum:
- opted-out
type: string
inapp:
enum:
- opted-out
type: string
push:
enum:
- opted-out
type: string
slack:
enum:
- opted-out
type: string
sms:
enum:
- opted-out
type: string
teams:
enum:
- opted-out
type: string
voice:
enum:
- opted-out
type: string
whatsapp:
enum:
- opted-out
type: string
type: object
update_subscription_multiple:
properties:
user_preference:
properties:
SXXXXXXXXX:
$ref: '#/components/schemas/preference_channels'
type: object
type: object
required:
- user_preference
updated_at:
properties:
discord:
type: string
email:
type: string
inapp:
type: string
push:
type: string
slack:
type: string
sms:
type: string
teams:
type: string
voice:
type: string
webpush:
type: string
whatsapp:
type: string
type: object
preference_channels:
properties:
discord:
default: opted-in
enum:
- opted-out
- opted-in
type: string
email:
default: opted-in
enum:
- opted-out
- opted-in
type: string
inapp:
default: opted-in
enum:
- opted-out
- opted-in
type: string
push:
default: opted-in
enum:
- opted-out
- opted-in
type: string
slack:
default: opted-in
enum:
- opted-out
- opted-in
type: string
sms:
default: opted-in
enum:
- opted-out
- opted-in
type: string
teams:
default: opted-in
enum:
- opted-out
- opted-in
type: string
voice:
default: opted-in
enum:
- opted-out
- opted-in
type: string
webpush:
default: opted-in
enum:
- opted-out
- opted-in
type: string
whatsapp:
default: opted-in
enum:
- opted-out
- opted-in
type: string
type: object
responses:
APIKeyInvalid:
description: API Key or Workspace ID is invalid. User is unauthorised.
content:
application/json:
schema:
properties:
_message:
example: Invalid API details
type: string
status:
example: error
type: string
type: object
required:
- _message
- status
PrefProfileFetched:
description: Preference fetched successfully
content:
application/json:
schema:
required:
- meta
- result
properties:
meta:
required:
- all
properties:
all:
required:
- preference
- updated_at
properties:
preference:
$ref: '#/components/schemas/preference_channels_opted_out'
updated_at:
$ref: '#/components/schemas/updated_at'
type: object
type: object
result:
required:
- Section1
properties:
Section1:
items:
required:
- channel_config
- description
- is_global_opted_out
- name
- notification_events
- preference
- subscription_id
- updated_at
properties:
channel_config:
properties:
discord:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
email:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
inapp:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
push:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
slack:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
sms:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
teams:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
voice:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
webpush:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
whatsapp:
default: 'on'
enum:
- 'on'
- 'off'
- required
type: string
type: object
description:
type: string
is_global_opted_out:
properties:
discord:
enum:
- true
type: boolean
email:
enum:
- true
type: boolean
inapp:
enum:
- true
type: boolean
push:
enum:
- true
type: boolean
slack:
enum:
- true
type: boolean
sms:
enum:
- true
type: boolean
teams:
enum:
- true
type: boolean
voice:
enum:
- true
type: boolean
webpush:
enum:
- true
type: boolean
whatsapp:
enum:
- true
type: boolean
type: object
name:
type: string
notification_events:
items:
properties:
event_id:
type: string
event_name:
type: string
type: object
type: array
preference:
$ref: '#/components/schemas/preference_channels'
subscription_id:
type: string
updated_at:
$ref: '#/components/schemas/updated_at'
type: object
type: array
type: object
type: object
DistinctIDMissing:
description: Distinct ID is not provided
content:
application/json:
schema:
properties:
_message:
example: distinct_id is required to list preference!
type: string
status:
example: error
type: string
type: object
required:
- _message
- status
SubscriptionUpdated:
description: Subscription updated successfully
content:
application/json:
schema:
required:
- SXXXXXXXXX
properties:
SXXXXXXXXX:
$ref: '#/components/schemas/preference_channels'
type: object
DistinctIDChannelStatusMissing:
description: Distinct ID, channel, or status is not provided
content:
application/json:
schema:
properties:
_message:
example: distinct_id is required!
type: string
status:
example: error
type: string
type: object
required:
- _message
- status
securitySchemes:
BearerAuth:
type: http
description: Enter your API Key. If you don't have it already, you can create one from the API Keys page within your Fyno account
scheme: bearer
x-fern-bearer:
name: apiKey
env: FYNO_API_KEY