mirror of
https://github.com/formbricks/formbricks.git
synced 2025-12-20 12:11:18 -06:00
4764 lines
154 KiB
YAML
4764 lines
154 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Formbricks API
|
|
description: Manage Formbricks resources programmatically.
|
|
version: 2.0.0
|
|
servers:
|
|
- url: https://app.formbricks.com/api/v2
|
|
description: Formbricks Cloud
|
|
tags:
|
|
- name: Health
|
|
description: Operations for checking critical application dependencies health status.
|
|
- name: Roles
|
|
description: Operations for managing roles.
|
|
- name: Me
|
|
description: Operations for managing your API key.
|
|
- name: Management API - Responses
|
|
description: Operations for managing responses.
|
|
- name: Management API - Contacts
|
|
description: Operations for managing contacts.
|
|
- name: Management API - Contact Attributes
|
|
description: Operations for managing contact attributes.
|
|
- name: Management API - Contact Attribute Keys
|
|
description: Operations for managing contact attribute keys.
|
|
- name: Management API - Surveys
|
|
description: Operations for managing surveys.
|
|
- name: Management API - Surveys - Contact Links
|
|
description: Operations for generating personalized survey links for contacts.
|
|
- name: Management API - Webhooks
|
|
description: Operations for managing webhooks.
|
|
- name: Organizations API - Teams
|
|
description: Operations for managing teams.
|
|
- name: Organizations API - Project Teams
|
|
description: Operations for managing project teams.
|
|
- name: Organizations API - Users
|
|
description: Operations for managing users.
|
|
security:
|
|
- apiKeyAuth: []
|
|
paths:
|
|
/client/{environmentId}/responses/{responseId}:
|
|
put:
|
|
security: []
|
|
description: Update an existing response for example when you want to mark a
|
|
response as finished or you want to change an existing response's value.
|
|
parameters:
|
|
- in: path
|
|
name: environmentId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
description: The ID of the environment.
|
|
- in: path
|
|
name: responseId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
example:
|
|
data:
|
|
tcgls0063n8ri7dtrbnepcmz: Who? Who? Who?
|
|
finished: true
|
|
type: object
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
example:
|
|
data: {}
|
|
schema:
|
|
type: object
|
|
description: OK
|
|
"404":
|
|
content:
|
|
application/json:
|
|
example:
|
|
code: not_found
|
|
details:
|
|
resource_type: Response
|
|
message: Response not found
|
|
schema:
|
|
type: object
|
|
description: Not Found
|
|
summary: Update Response
|
|
tags:
|
|
- Client API - Response
|
|
servers:
|
|
- url: https://app.formbricks.com/api/v2
|
|
description: Formbricks Client
|
|
/client/{environmentId}/responses:
|
|
post:
|
|
security: []
|
|
description: Create a response for a survey and its fields with the user's
|
|
responses. The userId & meta here is optional
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
surveyId:
|
|
type: string
|
|
description: The ID of the survey this response belongs to
|
|
responses:
|
|
type: object
|
|
additionalProperties: true
|
|
description: Answers keyed by questionId; value shape depends on question type
|
|
finished:
|
|
type: boolean
|
|
description: Whether the response is marked as finished
|
|
language:
|
|
type: string
|
|
enum:
|
|
[
|
|
"en-US",
|
|
"de-DE",
|
|
"pt-BR",
|
|
"fr-FR",
|
|
"zh-Hant-TW",
|
|
"pt-PT",
|
|
"ro-RO",
|
|
"ja-JP",
|
|
"zh-Hans-CN",
|
|
]
|
|
description: Locale of the response
|
|
meta:
|
|
type: object
|
|
properties:
|
|
action: { type: string }
|
|
source: { type: string }
|
|
url: { type: string }
|
|
description: Optional metadata about the response
|
|
required: ["surveyId"]
|
|
example:
|
|
surveyId: survey123
|
|
responses: {}
|
|
responses:
|
|
"201":
|
|
content:
|
|
application/json:
|
|
example:
|
|
responseId: response123
|
|
schema:
|
|
type: object
|
|
description: Created
|
|
summary: Create Response
|
|
tags:
|
|
- Client API - Response
|
|
servers:
|
|
- url: https://app.formbricks.com/api/v2
|
|
description: Formbricks Client
|
|
/client/{environmentId}/contacts/{userId}/attributes:
|
|
put:
|
|
security: []
|
|
description: Update a contact's attributes in Formbricks to keep them in sync
|
|
with your app or when you want to set a custom attribute in Formbricks.
|
|
parameters:
|
|
- in: path
|
|
name: environmentId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
attributes:
|
|
type: object
|
|
additionalProperties: true
|
|
description: Key-value pairs of contact attributes
|
|
required: ["attributes"]
|
|
example:
|
|
attributes: {}
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
examples:
|
|
example-0: {}
|
|
example-1: {}
|
|
schema:
|
|
type: object
|
|
description: OK
|
|
"500":
|
|
content:
|
|
application/json:
|
|
example:
|
|
code: internal_server_error
|
|
details: {}
|
|
message: "Unable to complete request: Expected"
|
|
schema:
|
|
type: object
|
|
description: Internal Server Error
|
|
summary: Update Contact (Attributes)
|
|
tags:
|
|
- Client API - Contacts
|
|
servers:
|
|
- url: https://app.formbricks.com/api/v2
|
|
description: Formbricks Client
|
|
/client/{environmentId}/identify/contacts/{userId}:
|
|
get:
|
|
security: []
|
|
description: Retrieves a contact's state including their segments, displays,
|
|
responses and other tracking information. If the contact doesn't exist,
|
|
it will be created.
|
|
parameters:
|
|
- in: path
|
|
name: environmentId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
example:
|
|
userId: user123
|
|
state: active
|
|
schema:
|
|
type: object
|
|
description: OK
|
|
summary: Get Contact State
|
|
tags:
|
|
- Client API - Contacts
|
|
servers:
|
|
- url: https://app.formbricks.com/api/v2
|
|
description: Formbricks Client
|
|
/client/{environmentId}/displays:
|
|
post:
|
|
security: []
|
|
description: Create a new display for a valid survey ID. If a userId is passed,
|
|
the display is linked to the user.
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
example:
|
|
surveyId: survey123
|
|
userId: user123
|
|
type: object
|
|
responses:
|
|
"201":
|
|
content:
|
|
application/json:
|
|
example:
|
|
displayId: display123
|
|
schema:
|
|
type: object
|
|
description: Created
|
|
summary: Create Display
|
|
tags:
|
|
- Client API - Display
|
|
servers:
|
|
- url: https://app.formbricks.com/api/v2
|
|
description: Formbricks Client
|
|
/client/{environmentId}/environment:
|
|
get:
|
|
security: []
|
|
description: "Retrieves the environment state to be used in Formbricks SDKs.
|
|
**Cache Behavior**: This endpoint uses server-side caching with a
|
|
**5-minute TTL (Time To Live)**. Any changes to surveys, action classes,
|
|
project settings, or other environment data will take up to 5 minutes to
|
|
reflect in the API response. This caching is implemented to improve
|
|
performance for high-frequency SDK requests."
|
|
parameters:
|
|
- in: path
|
|
name: environmentId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
description: The ID of the environment.
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
example:
|
|
environmentId: env123
|
|
state: active
|
|
schema:
|
|
type: object
|
|
description: OK
|
|
summary: Get Environment State
|
|
tags:
|
|
- Client API - Environment
|
|
servers:
|
|
- url: https://app.formbricks.com/api/v2
|
|
description: Formbricks Client
|
|
/client/{environmentId}/user:
|
|
post:
|
|
security: []
|
|
description: Endpoint for creating or identifying a user within the specified
|
|
environment. If the user already exists, this will identify them and
|
|
potentially update user attributes. If they don't exist, it will create
|
|
a new user.
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
example:
|
|
userId: user123
|
|
attributes: {}
|
|
type: object
|
|
responses:
|
|
"200":
|
|
content:
|
|
application/json:
|
|
example:
|
|
userId: user123
|
|
state: identified
|
|
schema:
|
|
type: object
|
|
description: OK
|
|
summary: Create or Identify User
|
|
tags:
|
|
- Client API - User
|
|
servers:
|
|
- url: https://app.formbricks.com/api/v2
|
|
description: Formbricks Client
|
|
/client/{environmentId}/storage:
|
|
post:
|
|
security: []
|
|
summary: Upload Private File
|
|
description: API endpoint for uploading private files. Uploaded files are kept
|
|
private so that only users with access to the specified environment can
|
|
retrieve them. The endpoint validates the survey ID, file name, and file
|
|
type from the request body, and returns a signed URL for S3 uploads
|
|
along with a local upload URL.
|
|
tags:
|
|
- Client API - File Upload
|
|
parameters:
|
|
- in: path
|
|
name: environmentId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
description: The ID of the environment.
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
surveyId:
|
|
type: string
|
|
description: The ID of the survey associated with the file.
|
|
fileName:
|
|
type: string
|
|
description: The name of the file to be uploaded.
|
|
fileType:
|
|
type: string
|
|
description: The MIME type of the file.
|
|
required:
|
|
- surveyId
|
|
- fileName
|
|
- fileType
|
|
example:
|
|
surveyId: cm7pr0x2y004o192zmit8cjvb
|
|
fileName: example.jpg
|
|
fileType: image/jpeg
|
|
responses:
|
|
"200":
|
|
description: OK - Returns the signed URL, presigned fields, updated file name,
|
|
and file URL.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: object
|
|
properties:
|
|
signedUrl:
|
|
type: string
|
|
description: Presigned POST URL for uploading the file to S3-compatible storage.
|
|
presignedFields:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: Presigned POST form fields required by S3-compatible storage.
|
|
updatedFileName:
|
|
type: string
|
|
description: The updated file name after processing.
|
|
fileUrl:
|
|
type: string
|
|
description: URL where the uploaded file can be accessed.
|
|
example:
|
|
data:
|
|
signedUrl: https://s3.example.com/bucket
|
|
presignedFields:
|
|
key: uploads/env-id/private/file--fid--uuid.jpg
|
|
policy: <base64-policy>
|
|
x-amz-algorithm: AWS4-HMAC-SHA256
|
|
updatedFileName: file--fid--b153ba3e-6602-4bb3-bed9-211b5b1ae463.jpg
|
|
fileUrl: https://app.formbricks.com/storage/cm1ubebtj000614kqe4hs3c67/private/file--fid--b153ba3e-6602-4bb3-bed9-211b5b1ae463.jpg
|
|
"400":
|
|
description: Bad Request - One or more required fields are missing.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
error:
|
|
type: string
|
|
description: Detailed error message.
|
|
example:
|
|
error: fileName is required
|
|
"404":
|
|
description: Not Found - The specified survey or organization does not exist.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
error:
|
|
type: string
|
|
description: Detailed error message.
|
|
example:
|
|
error: Survey survey123 not found
|
|
servers:
|
|
- url: https://app.formbricks.com/api/v2
|
|
description: Formbricks API Server
|
|
/health:
|
|
get:
|
|
tags:
|
|
- Health
|
|
summary: Health Check
|
|
description: Check the health status of critical application dependencies
|
|
including database and cache.
|
|
operationId: healthCheck
|
|
security: []
|
|
responses:
|
|
"200":
|
|
description: Health check completed successfully. Check individual dependency
|
|
status in response data.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
main_database:
|
|
type: boolean
|
|
description: Main database connection status - true if database is reachable and
|
|
running
|
|
example: true
|
|
cache_database:
|
|
type: boolean
|
|
description: Cache database connection status - true if cache database is
|
|
reachable and running
|
|
example: true
|
|
title: Health Check Response
|
|
description: Health check status for critical application dependencies
|
|
/roles:
|
|
get:
|
|
operationId: getRoles
|
|
summary: Get roles
|
|
description: Gets roles from the database.
|
|
tags:
|
|
- Roles
|
|
responses:
|
|
"200":
|
|
description: Roles retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
anyOf:
|
|
- type: string
|
|
const: owner
|
|
- type: string
|
|
const: manager
|
|
- type: string
|
|
const: member
|
|
- type: string
|
|
const: billing
|
|
/me:
|
|
get:
|
|
operationId: me
|
|
summary: Me
|
|
description: Fetches the projects and organizations associated with the API key.
|
|
tags:
|
|
- Me
|
|
responses:
|
|
"200":
|
|
description: API key information retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
organizationId:
|
|
type: string
|
|
organizationAccess:
|
|
type: object
|
|
properties:
|
|
accessControl:
|
|
type: object
|
|
properties:
|
|
read:
|
|
type: boolean
|
|
write:
|
|
type: boolean
|
|
required:
|
|
- read
|
|
- write
|
|
additionalProperties: false
|
|
required:
|
|
- accessControl
|
|
environments:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
environmentId:
|
|
type: string
|
|
environmentType:
|
|
type: string
|
|
enum:
|
|
- production
|
|
- development
|
|
permission:
|
|
type: string
|
|
enum:
|
|
- read
|
|
- write
|
|
- manage
|
|
projectId:
|
|
type: string
|
|
projectName:
|
|
type: string
|
|
required:
|
|
- environmentId
|
|
- environmentType
|
|
- permission
|
|
- projectId
|
|
- projectName
|
|
/responses:
|
|
servers: &a6
|
|
- url: https://app.formbricks.com/api/v2/management
|
|
description: Formbricks Management API
|
|
get:
|
|
operationId: getResponses
|
|
summary: Get responses
|
|
description: Gets responses from the database.
|
|
tags:
|
|
- Management API - Responses
|
|
parameters:
|
|
- in: query
|
|
name: limit
|
|
description: Number of items to return
|
|
schema:
|
|
type: number
|
|
minimum: 1
|
|
maximum: 250
|
|
default: 50
|
|
description: Number of items to return
|
|
- in: query
|
|
name: skip
|
|
description: Number of items to skip
|
|
schema:
|
|
type: number
|
|
minimum: 0
|
|
default: 0
|
|
description: Number of items to skip
|
|
- in: query
|
|
name: sortBy
|
|
description: Sort by field
|
|
schema:
|
|
type: string
|
|
enum: &a7
|
|
- createdAt
|
|
- updatedAt
|
|
default: createdAt
|
|
description: Sort by field
|
|
- in: query
|
|
name: order
|
|
description: Sort order
|
|
schema:
|
|
type: string
|
|
enum: &a8
|
|
- asc
|
|
- desc
|
|
default: desc
|
|
description: Sort order
|
|
- in: query
|
|
name: startDate
|
|
description: Start date
|
|
schema:
|
|
type: string
|
|
description: Start date
|
|
- in: query
|
|
name: endDate
|
|
description: End date
|
|
schema:
|
|
type: string
|
|
description: End date
|
|
- in: query
|
|
name: filterDateField
|
|
description: Date field to filter by
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- createdAt
|
|
- updatedAt
|
|
default: createdAt
|
|
description: Date field to filter by
|
|
- in: query
|
|
name: surveyId
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: contactId
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Responses retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the response
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the response was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the response was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
finished:
|
|
type: boolean
|
|
description: Whether the response is finished
|
|
example: true
|
|
surveyId:
|
|
type: string
|
|
description: The ID of the survey
|
|
contactId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the contact
|
|
endingId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the ending
|
|
data:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
- type: array
|
|
items:
|
|
type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: The data of the response
|
|
example: &a1
|
|
question1: answer1
|
|
question2: 2
|
|
question3:
|
|
- answer3
|
|
- answer4
|
|
question4:
|
|
subquestion1: answer5
|
|
variables:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
description: The variables of the response
|
|
example: &a2
|
|
variable1: answer1
|
|
variable2: 2
|
|
ttc:
|
|
type: object
|
|
additionalProperties:
|
|
type: number
|
|
description: The TTC of the response
|
|
example: &a3
|
|
question1: 10
|
|
question2: 20
|
|
meta:
|
|
type: object
|
|
properties:
|
|
source:
|
|
type: string
|
|
description: The source of the response
|
|
example: https://example.com
|
|
url:
|
|
type: string
|
|
description: The URL of the response
|
|
example: https://example.com
|
|
userAgent:
|
|
type: object
|
|
properties:
|
|
browser:
|
|
type: string
|
|
os:
|
|
type: string
|
|
device:
|
|
type: string
|
|
country:
|
|
type: string
|
|
action:
|
|
type: string
|
|
description: The meta data of the response
|
|
example: &a4
|
|
source: https://example.com
|
|
url: https://example.com
|
|
userAgent:
|
|
browser: Chrome
|
|
os: Windows
|
|
device: Desktop
|
|
country: US
|
|
action: click
|
|
contactAttributes:
|
|
type:
|
|
- object
|
|
- "null"
|
|
additionalProperties:
|
|
type: string
|
|
description: The attributes of the contact
|
|
example: &a5
|
|
attribute1: value1
|
|
attribute2: value2
|
|
singleUseId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The single use ID of the response
|
|
language:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The language of the response
|
|
example: en
|
|
displayId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The display ID of the response
|
|
meta:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
limit:
|
|
type: number
|
|
offset:
|
|
type: number
|
|
post:
|
|
operationId: createResponse
|
|
summary: Create a response
|
|
description: Creates a response in the database.
|
|
tags:
|
|
- Management API - Responses
|
|
requestBody:
|
|
required: true
|
|
description: The response to create
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the response was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the response was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
surveyId:
|
|
type: string
|
|
description: The ID of the survey
|
|
displayId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The display ID of the response
|
|
singleUseId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The single use ID of the response
|
|
finished:
|
|
type: boolean
|
|
description: Whether the response is finished
|
|
example: true
|
|
endingId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the ending
|
|
language:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The language of the response
|
|
example: en
|
|
data:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
- type: array
|
|
items:
|
|
type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: The data of the response
|
|
example: *a1
|
|
variables:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
description: The variables of the response
|
|
example: *a2
|
|
ttc:
|
|
type: object
|
|
additionalProperties:
|
|
type: number
|
|
description: The TTC of the response
|
|
example: *a3
|
|
meta:
|
|
type: object
|
|
properties:
|
|
source:
|
|
type: string
|
|
description: The source of the response
|
|
example: https://example.com
|
|
url:
|
|
type: string
|
|
description: The URL of the response
|
|
example: https://example.com
|
|
userAgent:
|
|
type: object
|
|
properties:
|
|
browser:
|
|
type: string
|
|
os:
|
|
type: string
|
|
device:
|
|
type: string
|
|
country:
|
|
type: string
|
|
action:
|
|
type: string
|
|
description: The meta data of the response
|
|
example: *a4
|
|
required:
|
|
- surveyId
|
|
- finished
|
|
- data
|
|
responses:
|
|
"201":
|
|
description: Response created successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the response
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the response was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the response was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
finished:
|
|
type: boolean
|
|
description: Whether the response is finished
|
|
example: true
|
|
surveyId:
|
|
type: string
|
|
description: The ID of the survey
|
|
contactId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the contact
|
|
endingId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the ending
|
|
data:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
- type: array
|
|
items:
|
|
type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: The data of the response
|
|
example: *a1
|
|
variables:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
description: The variables of the response
|
|
example: *a2
|
|
ttc:
|
|
type: object
|
|
additionalProperties:
|
|
type: number
|
|
description: The TTC of the response
|
|
example: *a3
|
|
meta:
|
|
type: object
|
|
properties:
|
|
source:
|
|
type: string
|
|
description: The source of the response
|
|
example: https://example.com
|
|
url:
|
|
type: string
|
|
description: The URL of the response
|
|
example: https://example.com
|
|
userAgent:
|
|
type: object
|
|
properties:
|
|
browser:
|
|
type: string
|
|
os:
|
|
type: string
|
|
device:
|
|
type: string
|
|
country:
|
|
type: string
|
|
action:
|
|
type: string
|
|
description: The meta data of the response
|
|
example: *a4
|
|
contactAttributes:
|
|
type:
|
|
- object
|
|
- "null"
|
|
additionalProperties:
|
|
type: string
|
|
description: The attributes of the contact
|
|
example: *a5
|
|
singleUseId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The single use ID of the response
|
|
language:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The language of the response
|
|
example: en
|
|
displayId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The display ID of the response
|
|
/responses/{id}:
|
|
servers: *a6
|
|
get:
|
|
operationId: getResponse
|
|
summary: Get a response
|
|
description: Gets a response from the database.
|
|
tags:
|
|
- Management API - Responses
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the response
|
|
schema:
|
|
$ref: "#/components/schemas/responseId"
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Response retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the response
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the response was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the response was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
finished:
|
|
type: boolean
|
|
description: Whether the response is finished
|
|
example: true
|
|
surveyId:
|
|
type: string
|
|
description: The ID of the survey
|
|
contactId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the contact
|
|
endingId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the ending
|
|
data:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
- type: array
|
|
items:
|
|
type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: The data of the response
|
|
example: *a1
|
|
variables:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
description: The variables of the response
|
|
example: *a2
|
|
ttc:
|
|
type: object
|
|
additionalProperties:
|
|
type: number
|
|
description: The TTC of the response
|
|
example: *a3
|
|
meta:
|
|
type: object
|
|
properties:
|
|
source:
|
|
type: string
|
|
description: The source of the response
|
|
example: https://example.com
|
|
url:
|
|
type: string
|
|
description: The URL of the response
|
|
example: https://example.com
|
|
userAgent:
|
|
type: object
|
|
properties:
|
|
browser:
|
|
type: string
|
|
os:
|
|
type: string
|
|
device:
|
|
type: string
|
|
country:
|
|
type: string
|
|
action:
|
|
type: string
|
|
description: The meta data of the response
|
|
example: *a4
|
|
contactAttributes:
|
|
type:
|
|
- object
|
|
- "null"
|
|
additionalProperties:
|
|
type: string
|
|
description: The attributes of the contact
|
|
example: *a5
|
|
singleUseId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The single use ID of the response
|
|
language:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The language of the response
|
|
example: en
|
|
displayId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The display ID of the response
|
|
put:
|
|
operationId: updateResponse
|
|
summary: Update a response
|
|
description: Updates a response in the database.
|
|
tags:
|
|
- Management API - Responses
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the response
|
|
schema:
|
|
$ref: "#/components/schemas/responseId"
|
|
required: true
|
|
requestBody:
|
|
required: true
|
|
description: The response to update
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
createdAt:
|
|
type: string
|
|
updatedAt:
|
|
type: string
|
|
environmentId:
|
|
type: string
|
|
surveyId:
|
|
type: string
|
|
userId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
displayId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
singleUseId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
finished:
|
|
type: boolean
|
|
endingId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
language:
|
|
type: string
|
|
data:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
- type: array
|
|
items:
|
|
type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
variables:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
ttc:
|
|
type: object
|
|
additionalProperties:
|
|
type: number
|
|
meta:
|
|
type: object
|
|
properties:
|
|
source:
|
|
type: string
|
|
url:
|
|
type: string
|
|
userAgent:
|
|
type: object
|
|
properties:
|
|
browser:
|
|
type: string
|
|
device:
|
|
type: string
|
|
os:
|
|
type: string
|
|
country:
|
|
type: string
|
|
action:
|
|
type: string
|
|
required:
|
|
- environmentId
|
|
- surveyId
|
|
- finished
|
|
- data
|
|
responses:
|
|
"200":
|
|
description: Response updated successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the response
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the response was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the response was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
finished:
|
|
type: boolean
|
|
description: Whether the response is finished
|
|
example: true
|
|
surveyId:
|
|
type: string
|
|
description: The ID of the survey
|
|
contactId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the contact
|
|
endingId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the ending
|
|
data:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
- type: array
|
|
items:
|
|
type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: The data of the response
|
|
example: *a1
|
|
variables:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
description: The variables of the response
|
|
example: *a2
|
|
ttc:
|
|
type: object
|
|
additionalProperties:
|
|
type: number
|
|
description: The TTC of the response
|
|
example: *a3
|
|
meta:
|
|
type: object
|
|
properties:
|
|
source:
|
|
type: string
|
|
description: The source of the response
|
|
example: https://example.com
|
|
url:
|
|
type: string
|
|
description: The URL of the response
|
|
example: https://example.com
|
|
userAgent:
|
|
type: object
|
|
properties:
|
|
browser:
|
|
type: string
|
|
os:
|
|
type: string
|
|
device:
|
|
type: string
|
|
country:
|
|
type: string
|
|
action:
|
|
type: string
|
|
description: The meta data of the response
|
|
example: *a4
|
|
contactAttributes:
|
|
type:
|
|
- object
|
|
- "null"
|
|
additionalProperties:
|
|
type: string
|
|
description: The attributes of the contact
|
|
example: *a5
|
|
singleUseId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The single use ID of the response
|
|
language:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The language of the response
|
|
example: en
|
|
displayId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The display ID of the response
|
|
delete:
|
|
operationId: deleteResponse
|
|
summary: Delete a response
|
|
description: Deletes a response from the database.
|
|
tags:
|
|
- Management API - Responses
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the response
|
|
schema:
|
|
$ref: "#/components/schemas/responseId"
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Response deleted successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the response
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the response was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the response was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
finished:
|
|
type: boolean
|
|
description: Whether the response is finished
|
|
example: true
|
|
surveyId:
|
|
type: string
|
|
description: The ID of the survey
|
|
contactId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the contact
|
|
endingId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the ending
|
|
data:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
- type: array
|
|
items:
|
|
type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: The data of the response
|
|
example: *a1
|
|
variables:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
description: The variables of the response
|
|
example: *a2
|
|
ttc:
|
|
type: object
|
|
additionalProperties:
|
|
type: number
|
|
description: The TTC of the response
|
|
example: *a3
|
|
meta:
|
|
type: object
|
|
properties:
|
|
source:
|
|
type: string
|
|
description: The source of the response
|
|
example: https://example.com
|
|
url:
|
|
type: string
|
|
description: The URL of the response
|
|
example: https://example.com
|
|
userAgent:
|
|
type: object
|
|
properties:
|
|
browser:
|
|
type: string
|
|
os:
|
|
type: string
|
|
device:
|
|
type: string
|
|
country:
|
|
type: string
|
|
action:
|
|
type: string
|
|
description: The meta data of the response
|
|
example: *a4
|
|
contactAttributes:
|
|
type:
|
|
- object
|
|
- "null"
|
|
additionalProperties:
|
|
type: string
|
|
description: The attributes of the contact
|
|
example: *a5
|
|
singleUseId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The single use ID of the response
|
|
language:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The language of the response
|
|
example: en
|
|
displayId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The display ID of the response
|
|
/contacts/bulk:
|
|
servers: *a6
|
|
put:
|
|
operationId: uploadBulkContacts
|
|
summary: Upload Bulk Contacts
|
|
description: Uploads contacts in bulk. Each contact in the payload must have an
|
|
'email' attribute present in their attributes array. The email attribute
|
|
is mandatory and must be a valid email format. Without a valid email,
|
|
the contact will be skipped during processing.
|
|
tags:
|
|
- Management API - Contacts
|
|
requestBody:
|
|
required: true
|
|
description: The contacts to upload. Each contact must include an 'email'
|
|
attribute in their attributes array. The email is used as the unique
|
|
identifier for the contact.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
environmentId:
|
|
type: string
|
|
contacts:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
attributes:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
attributeKey:
|
|
type: object
|
|
properties:
|
|
key:
|
|
type: string
|
|
name:
|
|
type: string
|
|
required:
|
|
- key
|
|
- name
|
|
value:
|
|
type: string
|
|
required:
|
|
- attributeKey
|
|
- value
|
|
required:
|
|
- attributes
|
|
maxItems: 250
|
|
required:
|
|
- environmentId
|
|
- contacts
|
|
example:
|
|
environmentId: env_01h2xce9q8p3w4x5y6z7a8b9c0
|
|
contacts:
|
|
- attributes:
|
|
- attributeKey:
|
|
key: email
|
|
name: Email Address
|
|
value: john.doe@example.com
|
|
- attributeKey:
|
|
key: firstName
|
|
name: First Name
|
|
value: John
|
|
- attributeKey:
|
|
key: lastName
|
|
name: Last Name
|
|
value: Doe
|
|
- attributes:
|
|
- attributeKey:
|
|
key: email
|
|
name: Email Address
|
|
value: jane.smith@example.com
|
|
- attributeKey:
|
|
key: firstName
|
|
name: First Name
|
|
value: Jane
|
|
- attributeKey:
|
|
key: lastName
|
|
name: Last Name
|
|
value: Smith
|
|
responses:
|
|
"200":
|
|
description: Contacts uploaded successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
message:
|
|
type: string
|
|
required:
|
|
- status
|
|
- message
|
|
required:
|
|
- data
|
|
"207":
|
|
description: Contacts uploaded partially successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
message:
|
|
type: string
|
|
skippedContacts:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
index:
|
|
type: number
|
|
userId:
|
|
type: string
|
|
required:
|
|
- index
|
|
- userId
|
|
required:
|
|
- status
|
|
- message
|
|
- skippedContacts
|
|
required:
|
|
- data
|
|
/contacts:
|
|
servers: *a6
|
|
post:
|
|
operationId: createContact
|
|
summary: Create a contact
|
|
description: Creates a contact in the database. Each contact must have a valid
|
|
email address in the attributes. All attribute keys must already exist
|
|
in the environment. The email is used as the unique identifier along
|
|
with the environment.
|
|
tags:
|
|
- Management API - Contacts
|
|
requestBody:
|
|
required: true
|
|
description: The contact to create. Must include an email attribute and all
|
|
attribute keys must already exist in the environment.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
environmentId:
|
|
type: string
|
|
attributes:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
required:
|
|
- environmentId
|
|
- attributes
|
|
example:
|
|
environmentId: env_01h2xce9q8p3w4x5y6z7a8b9c0
|
|
attributes:
|
|
email: john.doe@example.com
|
|
firstName: John
|
|
lastName: Doe
|
|
userId: h2xce9q8p3w4x5y6z7a8b9c1
|
|
responses:
|
|
"201":
|
|
description: Contact created successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
createdAt:
|
|
type: string
|
|
environmentId:
|
|
type: string
|
|
attributes:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
example:
|
|
id: ctc_01h2xce9q8p3w4x5y6z7a8b9c2
|
|
createdAt: 2023-01-01T12:00:00.000Z
|
|
environmentId: env_01h2xce9q8p3w4x5y6z7a8b9c0
|
|
attributes:
|
|
email: john.doe@example.com
|
|
firstName: John
|
|
lastName: Doe
|
|
userId: h2xce9q8p3w4x5y6z7a8b9c1
|
|
/contact-attribute-keys:
|
|
servers: *a6
|
|
get:
|
|
operationId: getContactAttributeKeys
|
|
summary: Get contact attribute keys
|
|
description: Gets contact attribute keys from the database.
|
|
tags:
|
|
- Management API - Contact Attribute Keys
|
|
parameters:
|
|
- in: query
|
|
name: limit
|
|
description: Number of items to return
|
|
schema:
|
|
type: number
|
|
minimum: 1
|
|
maximum: 250
|
|
default: 50
|
|
description: Number of items to return
|
|
- in: query
|
|
name: skip
|
|
description: Number of items to skip
|
|
schema:
|
|
type: number
|
|
minimum: 0
|
|
default: 0
|
|
description: Number of items to skip
|
|
- in: query
|
|
name: sortBy
|
|
description: Sort by field
|
|
schema:
|
|
type: string
|
|
enum: *a7
|
|
default: createdAt
|
|
description: Sort by field
|
|
- in: query
|
|
name: order
|
|
description: Sort order
|
|
schema:
|
|
type: string
|
|
enum: *a8
|
|
default: desc
|
|
description: Sort order
|
|
- in: query
|
|
name: startDate
|
|
description: Start date
|
|
schema:
|
|
type: string
|
|
description: Start date
|
|
- in: query
|
|
name: endDate
|
|
description: End date
|
|
schema:
|
|
type: string
|
|
description: End date
|
|
- in: query
|
|
name: filterDateField
|
|
description: Date field to filter by
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- createdAt
|
|
- updatedAt
|
|
default: createdAt
|
|
description: Date field to filter by
|
|
- in: query
|
|
name: environmentId
|
|
description: The environment ID to filter by
|
|
schema:
|
|
type: string
|
|
description: The environment ID to filter by
|
|
responses:
|
|
"200":
|
|
description: Contact attribute keys retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the contact attribute key
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isUnique:
|
|
type: boolean
|
|
description: Whether the attribute must have unique values across contacts
|
|
example: false
|
|
key:
|
|
type: string
|
|
description: The attribute identifier used in the system
|
|
example: email
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Display name for the attribute
|
|
example: Email Address
|
|
description:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Description of the attribute
|
|
example: The user's email address
|
|
type:
|
|
type: string
|
|
enum:
|
|
- default
|
|
- custom
|
|
description: Whether this is a default or custom attribute
|
|
example: custom
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment this attribute belongs to
|
|
meta:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
limit:
|
|
type: number
|
|
offset:
|
|
type: number
|
|
post:
|
|
operationId: createContactAttributeKey
|
|
summary: Create a contact attribute key
|
|
description: Creates a contact attribute key in the database.
|
|
tags:
|
|
- Management API - Contact Attribute Keys
|
|
requestBody:
|
|
required: true
|
|
description: The contact attribute key to create
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/contactAttributeKeyInput"
|
|
responses:
|
|
"201":
|
|
description: Contact attribute key created successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the contact attribute key
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isUnique:
|
|
type: boolean
|
|
description: Whether the attribute must have unique values across contacts
|
|
example: false
|
|
key:
|
|
type: string
|
|
description: The attribute identifier used in the system
|
|
example: email
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Display name for the attribute
|
|
example: Email Address
|
|
description:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Description of the attribute
|
|
example: The user's email address
|
|
type:
|
|
type: string
|
|
enum:
|
|
- default
|
|
- custom
|
|
description: Whether this is a default or custom attribute
|
|
example: custom
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment this attribute belongs to
|
|
/contact-attribute-keys/{id}:
|
|
servers: *a6
|
|
get:
|
|
operationId: getContactAttributeKey
|
|
summary: Get a contact attribute key
|
|
description: Gets a contact attribute key from the database.
|
|
tags:
|
|
- Management API - Contact Attribute Keys
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the contact attribute key
|
|
schema:
|
|
$ref: "#/components/schemas/contactAttributeKeyId"
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Contact attribute key retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the contact attribute key
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isUnique:
|
|
type: boolean
|
|
description: Whether the attribute must have unique values across contacts
|
|
example: false
|
|
key:
|
|
type: string
|
|
description: The attribute identifier used in the system
|
|
example: email
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Display name for the attribute
|
|
example: Email Address
|
|
description:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Description of the attribute
|
|
example: The user's email address
|
|
type:
|
|
type: string
|
|
enum:
|
|
- default
|
|
- custom
|
|
description: Whether this is a default or custom attribute
|
|
example: custom
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment this attribute belongs to
|
|
put:
|
|
operationId: updateContactAttributeKey
|
|
summary: Update a contact attribute key
|
|
description: Updates a contact attribute key in the database.
|
|
tags:
|
|
- Management API - Contact Attribute Keys
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the contact attribute key
|
|
schema:
|
|
$ref: "#/components/schemas/contactAttributeKeyId"
|
|
required: true
|
|
requestBody:
|
|
required: true
|
|
description: The contact attribute key to update
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/contactAttributeKeyUpdate"
|
|
responses:
|
|
"200":
|
|
description: Contact attribute key updated successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the contact attribute key
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isUnique:
|
|
type: boolean
|
|
description: Whether the attribute must have unique values across contacts
|
|
example: false
|
|
key:
|
|
type: string
|
|
description: The attribute identifier used in the system
|
|
example: email
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Display name for the attribute
|
|
example: Email Address
|
|
description:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Description of the attribute
|
|
example: The user's email address
|
|
type:
|
|
type: string
|
|
enum:
|
|
- default
|
|
- custom
|
|
description: Whether this is a default or custom attribute
|
|
example: custom
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment this attribute belongs to
|
|
delete:
|
|
operationId: deleteContactAttributeKey
|
|
summary: Delete a contact attribute key
|
|
description: Deletes a contact attribute key from the database.
|
|
tags:
|
|
- Management API - Contact Attribute Keys
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the contact attribute key
|
|
schema:
|
|
$ref: "#/components/schemas/contactAttributeKeyId"
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Contact attribute key deleted successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the contact attribute key
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isUnique:
|
|
type: boolean
|
|
description: Whether the attribute must have unique values across contacts
|
|
example: false
|
|
key:
|
|
type: string
|
|
description: The attribute identifier used in the system
|
|
example: email
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Display name for the attribute
|
|
example: Email Address
|
|
description:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Description of the attribute
|
|
example: The user's email address
|
|
type:
|
|
type: string
|
|
enum:
|
|
- default
|
|
- custom
|
|
description: Whether this is a default or custom attribute
|
|
example: custom
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment this attribute belongs to
|
|
/surveys/{surveyId}/contact-links/contacts/{contactId}/:
|
|
servers: *a6
|
|
get:
|
|
operationId: getPersonalizedSurveyLink
|
|
summary: Get personalized survey link for a contact
|
|
description: Retrieves a personalized link for a specific survey.
|
|
tags:
|
|
- Management API - Surveys - Contact Links
|
|
parameters:
|
|
- in: path
|
|
name: surveyId
|
|
description: The ID of the survey
|
|
schema:
|
|
type: string
|
|
description: The ID of the survey
|
|
required: true
|
|
- in: path
|
|
name: contactId
|
|
description: The ID of the contact
|
|
schema:
|
|
type: string
|
|
description: The ID of the contact
|
|
required: true
|
|
- in: query
|
|
name: expirationDays
|
|
description: Number of days until the generated JWT expires. If not provided,
|
|
there is no expiration.
|
|
schema:
|
|
type:
|
|
- number
|
|
- undefined
|
|
minimum: 1
|
|
description: Number of days until the generated JWT expires. If not provided,
|
|
there is no expiration.
|
|
responses:
|
|
"200":
|
|
description: Personalized survey link retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: object
|
|
properties:
|
|
surveyUrl:
|
|
type: string
|
|
format: uri
|
|
expiresAt:
|
|
type: string
|
|
format: date-time
|
|
nullable: true
|
|
description: The date and time the link expires, null if no expiration
|
|
required:
|
|
- surveyUrl
|
|
/surveys/{surveyId}/contact-links/segments/{segmentId}:
|
|
servers: *a6
|
|
get:
|
|
operationId: getContactLinksBySegment
|
|
summary: Get survey links for contacts in a segment
|
|
description: Generates personalized survey links for contacts in a segment.
|
|
tags:
|
|
- Management API - Surveys - Contact Links
|
|
parameters:
|
|
- in: path
|
|
name: surveyId
|
|
description: The ID of the survey
|
|
schema:
|
|
type: string
|
|
description: The ID of the survey
|
|
required: true
|
|
- in: path
|
|
name: segmentId
|
|
description: The ID of the segment
|
|
schema:
|
|
type: string
|
|
description: The ID of the segment
|
|
required: true
|
|
- in: query
|
|
name: limit
|
|
description: Number of items to return
|
|
schema:
|
|
type: number
|
|
minimum: 1
|
|
maximum: 250
|
|
default: 50
|
|
description: Number of items to return
|
|
- in: query
|
|
name: skip
|
|
description: Number of items to skip
|
|
schema:
|
|
type: number
|
|
minimum: 0
|
|
default: 0
|
|
description: Number of items to skip
|
|
- in: query
|
|
name: expirationDays
|
|
description: Number of days until the generated JWT expires. If not provided,
|
|
there is no expiration.
|
|
schema:
|
|
type:
|
|
- number
|
|
- "null"
|
|
minimum: 1
|
|
maximum: 365
|
|
default: null
|
|
description: Number of days until the generated JWT expires. If not provided,
|
|
there is no expiration.
|
|
- in: query
|
|
name: attributeKeys
|
|
schema:
|
|
type: string
|
|
description: Comma-separated list of contact attribute keys to include in the
|
|
response. You can have max 20 keys. If not provided, no attributes
|
|
will be included.
|
|
responses:
|
|
"200":
|
|
description: Contact links generated successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
contactId:
|
|
type: string
|
|
description: The ID of the contact
|
|
surveyUrl:
|
|
type: string
|
|
format: uri
|
|
description: Personalized survey link
|
|
expiresAt:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The date and time the link expires, null if no expiration
|
|
attributes:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: The attributes of the contact
|
|
meta:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
limit:
|
|
type: number
|
|
offset:
|
|
type: number
|
|
/webhooks:
|
|
servers: *a6
|
|
get:
|
|
operationId: getWebhooks
|
|
summary: Get webhooks
|
|
description: Gets webhooks from the database.
|
|
tags:
|
|
- Management API - Webhooks
|
|
parameters:
|
|
- in: query
|
|
name: limit
|
|
description: Number of items to return
|
|
schema:
|
|
type: number
|
|
minimum: 1
|
|
maximum: 250
|
|
default: 50
|
|
description: Number of items to return
|
|
- in: query
|
|
name: skip
|
|
description: Number of items to skip
|
|
schema:
|
|
type: number
|
|
minimum: 0
|
|
default: 0
|
|
description: Number of items to skip
|
|
- in: query
|
|
name: sortBy
|
|
description: Sort by field
|
|
schema:
|
|
type: string
|
|
enum: *a7
|
|
default: createdAt
|
|
description: Sort by field
|
|
- in: query
|
|
name: order
|
|
description: Sort order
|
|
schema:
|
|
type: string
|
|
enum: *a8
|
|
default: desc
|
|
description: Sort order
|
|
- in: query
|
|
name: startDate
|
|
description: Start date
|
|
schema:
|
|
type: string
|
|
description: Start date
|
|
- in: query
|
|
name: endDate
|
|
description: End date
|
|
schema:
|
|
type: string
|
|
description: End date
|
|
- in: query
|
|
name: filterDateField
|
|
description: Date field to filter by
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- createdAt
|
|
- updatedAt
|
|
default: createdAt
|
|
description: Date field to filter by
|
|
- in: query
|
|
name: surveyIds
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Webhooks retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the webhook
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The name of the webhook
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the webhook was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the webhook was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
url:
|
|
type: string
|
|
format: uri
|
|
description: The URL of the webhook
|
|
source:
|
|
type: string
|
|
enum: &a9
|
|
- user
|
|
- zapier
|
|
- make
|
|
- n8n
|
|
description: The source of the webhook
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment
|
|
triggers:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum: &a10
|
|
- responseFinished
|
|
- responseCreated
|
|
- responseUpdated
|
|
minItems: 1
|
|
description: The triggers of the webhook
|
|
surveyIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: "The IDs of the surveys "
|
|
meta:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
limit:
|
|
type: number
|
|
offset:
|
|
type: number
|
|
post:
|
|
operationId: createWebhook
|
|
summary: Create a webhook
|
|
description: Creates a webhook in the database.
|
|
tags:
|
|
- Management API - Webhooks
|
|
requestBody:
|
|
required: true
|
|
description: The webhook to create
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The name of the webhook
|
|
url:
|
|
type: string
|
|
format: uri
|
|
description: The URL of the webhook
|
|
source:
|
|
type: string
|
|
enum: *a9
|
|
description: The source of the webhook
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment
|
|
triggers:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum: *a10
|
|
minItems: 1
|
|
description: The triggers of the webhook
|
|
surveyIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: "The IDs of the surveys "
|
|
required:
|
|
- name
|
|
- url
|
|
- source
|
|
- environmentId
|
|
- triggers
|
|
- surveyIds
|
|
responses:
|
|
"201":
|
|
description: Webhook created successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the webhook
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The name of the webhook
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the webhook was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the webhook was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
url:
|
|
type: string
|
|
format: uri
|
|
description: The URL of the webhook
|
|
source:
|
|
type: string
|
|
enum: *a9
|
|
description: The source of the webhook
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment
|
|
triggers:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum: *a10
|
|
minItems: 1
|
|
description: The triggers of the webhook
|
|
surveyIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: "The IDs of the surveys "
|
|
/webhooks/{id}:
|
|
servers: *a6
|
|
get:
|
|
operationId: getWebhook
|
|
summary: Get a webhook
|
|
description: Gets a webhook from the database.
|
|
tags:
|
|
- Management API - Webhooks
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the webhook
|
|
schema:
|
|
$ref: "#/components/schemas/webhookId"
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Webhook retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the webhook
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The name of the webhook
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the webhook was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the webhook was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
url:
|
|
type: string
|
|
format: uri
|
|
description: The URL of the webhook
|
|
source:
|
|
type: string
|
|
enum: *a9
|
|
description: The source of the webhook
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment
|
|
triggers:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum: *a10
|
|
minItems: 1
|
|
description: The triggers of the webhook
|
|
surveyIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: "The IDs of the surveys "
|
|
put:
|
|
operationId: updateWebhook
|
|
summary: Update a webhook
|
|
description: Updates a webhook in the database.
|
|
tags:
|
|
- Management API - Webhooks
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the webhook
|
|
schema:
|
|
$ref: "#/components/schemas/webhookId"
|
|
required: true
|
|
requestBody:
|
|
required: true
|
|
description: The webhook to update
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The name of the webhook
|
|
url:
|
|
type: string
|
|
format: uri
|
|
description: The URL of the webhook
|
|
source:
|
|
type: string
|
|
enum: *a9
|
|
description: The source of the webhook
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment
|
|
triggers:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum: *a10
|
|
minItems: 1
|
|
description: The triggers of the webhook
|
|
surveyIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: "The IDs of the surveys "
|
|
required:
|
|
- name
|
|
- url
|
|
- source
|
|
- environmentId
|
|
- triggers
|
|
- surveyIds
|
|
responses:
|
|
"200":
|
|
description: Webhook updated successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the webhook
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The name of the webhook
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the webhook was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the webhook was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
url:
|
|
type: string
|
|
format: uri
|
|
description: The URL of the webhook
|
|
source:
|
|
type: string
|
|
enum: *a9
|
|
description: The source of the webhook
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment
|
|
triggers:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum: *a10
|
|
minItems: 1
|
|
description: The triggers of the webhook
|
|
surveyIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: "The IDs of the surveys "
|
|
delete:
|
|
operationId: deleteWebhook
|
|
summary: Delete a webhook
|
|
description: Deletes a webhook from the database.
|
|
tags:
|
|
- Management API - Webhooks
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the webhook
|
|
schema:
|
|
$ref: "#/components/schemas/webhookId"
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Webhook deleted successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the webhook
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The name of the webhook
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the webhook was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the webhook was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
url:
|
|
type: string
|
|
format: uri
|
|
description: The URL of the webhook
|
|
source:
|
|
type: string
|
|
enum: *a9
|
|
description: The source of the webhook
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment
|
|
triggers:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum: *a10
|
|
minItems: 1
|
|
description: The triggers of the webhook
|
|
surveyIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: "The IDs of the surveys "
|
|
/{organizationId}/teams:
|
|
servers: &a11
|
|
- url: https://app.formbricks.com/api/v2/organizations
|
|
description: Formbricks Organizations API
|
|
get:
|
|
operationId: getTeams
|
|
summary: Get teams
|
|
description: Gets teams from the database.
|
|
tags:
|
|
- Organizations API - Teams
|
|
parameters:
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
- in: query
|
|
name: limit
|
|
description: Number of items to return
|
|
schema:
|
|
type: number
|
|
minimum: 1
|
|
maximum: 250
|
|
default: 50
|
|
description: Number of items to return
|
|
- in: query
|
|
name: skip
|
|
description: Number of items to skip
|
|
schema:
|
|
type: number
|
|
minimum: 0
|
|
default: 0
|
|
description: Number of items to skip
|
|
- in: query
|
|
name: sortBy
|
|
description: Sort by field
|
|
schema:
|
|
type: string
|
|
enum: *a7
|
|
default: createdAt
|
|
description: Sort by field
|
|
- in: query
|
|
name: order
|
|
description: Sort order
|
|
schema:
|
|
type: string
|
|
enum: *a8
|
|
default: desc
|
|
description: Sort order
|
|
- in: query
|
|
name: startDate
|
|
description: Start date
|
|
schema:
|
|
type: string
|
|
description: Start date
|
|
- in: query
|
|
name: endDate
|
|
description: End date
|
|
schema:
|
|
type: string
|
|
description: End date
|
|
- in: query
|
|
name: filterDateField
|
|
description: Date field to filter by
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- createdAt
|
|
- updatedAt
|
|
default: createdAt
|
|
description: Date field to filter by
|
|
responses:
|
|
"200":
|
|
description: Teams retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the team
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the team was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
name:
|
|
type: string
|
|
description: The name of the team
|
|
example: My team
|
|
organizationId:
|
|
type: string
|
|
description: The ID of the organization
|
|
meta:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
limit:
|
|
type: number
|
|
offset:
|
|
type: number
|
|
post:
|
|
operationId: createTeam
|
|
summary: Create a team
|
|
description: Creates a team in the database.
|
|
tags:
|
|
- Organizations API - Teams
|
|
parameters:
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
requestBody:
|
|
required: true
|
|
description: The team to create
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The name of the team
|
|
example: My team
|
|
required:
|
|
- name
|
|
responses:
|
|
"201":
|
|
description: Team created successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the team
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the team was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
name:
|
|
type: string
|
|
description: The name of the team
|
|
example: My team
|
|
organizationId:
|
|
type: string
|
|
description: The ID of the organization
|
|
/{organizationId}/teams/{id}:
|
|
servers: *a11
|
|
get:
|
|
operationId: getTeam
|
|
summary: Get a team
|
|
description: Gets a team from the database.
|
|
tags:
|
|
- Organizations API - Teams
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the team
|
|
schema:
|
|
$ref: "#/components/schemas/teamId"
|
|
required: true
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Team retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the team
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the team was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
name:
|
|
type: string
|
|
description: The name of the team
|
|
example: My team
|
|
organizationId:
|
|
type: string
|
|
description: The ID of the organization
|
|
put:
|
|
operationId: updateTeam
|
|
summary: Update a team
|
|
description: Updates a team in the database.
|
|
tags:
|
|
- Organizations API - Teams
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the team
|
|
schema:
|
|
$ref: "#/components/schemas/teamId"
|
|
required: true
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
requestBody:
|
|
required: true
|
|
description: The team to update
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: The name of the team
|
|
example: My team
|
|
required:
|
|
- name
|
|
responses:
|
|
"200":
|
|
description: Team updated successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the team
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the team was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
name:
|
|
type: string
|
|
description: The name of the team
|
|
example: My team
|
|
organizationId:
|
|
type: string
|
|
description: The ID of the organization
|
|
delete:
|
|
operationId: deleteTeam
|
|
summary: Delete a team
|
|
description: Deletes a team from the database.
|
|
tags:
|
|
- Organizations API - Teams
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
description: The ID of the team
|
|
schema:
|
|
$ref: "#/components/schemas/teamId"
|
|
required: true
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Team deleted successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the team
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the team was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
name:
|
|
type: string
|
|
description: The name of the team
|
|
example: My team
|
|
organizationId:
|
|
type: string
|
|
description: The ID of the organization
|
|
/{organizationId}/project-teams:
|
|
servers: *a11
|
|
get:
|
|
operationId: getProjectTeams
|
|
summary: Get project teams
|
|
description: Gets projectTeams from the database.
|
|
tags:
|
|
- Organizations API - Project Teams
|
|
parameters:
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
- in: query
|
|
name: limit
|
|
description: Number of items to return
|
|
schema:
|
|
type: number
|
|
minimum: 1
|
|
maximum: 250
|
|
default: 50
|
|
description: Number of items to return
|
|
- in: query
|
|
name: skip
|
|
description: Number of items to skip
|
|
schema:
|
|
type: number
|
|
minimum: 0
|
|
default: 0
|
|
description: Number of items to skip
|
|
- in: query
|
|
name: sortBy
|
|
description: Sort by field
|
|
schema:
|
|
type: string
|
|
enum: *a7
|
|
default: createdAt
|
|
description: Sort by field
|
|
- in: query
|
|
name: order
|
|
description: Sort order
|
|
schema:
|
|
type: string
|
|
enum: *a8
|
|
default: desc
|
|
description: Sort order
|
|
- in: query
|
|
name: startDate
|
|
description: Start date
|
|
schema:
|
|
type: string
|
|
description: Start date
|
|
- in: query
|
|
name: endDate
|
|
description: End date
|
|
schema:
|
|
type: string
|
|
description: End date
|
|
- in: query
|
|
name: filterDateField
|
|
description: Date field to filter by
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- createdAt
|
|
- updatedAt
|
|
default: createdAt
|
|
description: Date field to filter by
|
|
- in: query
|
|
name: teamId
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: projectId
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Project teams retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the project tem was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the project team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
projectId:
|
|
type: string
|
|
description: The ID of the project
|
|
teamId:
|
|
type: string
|
|
description: The ID of the team
|
|
permission:
|
|
type: string
|
|
enum:
|
|
- read
|
|
- readWrite
|
|
- manage
|
|
description: Level of access granted to the project
|
|
meta:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
limit:
|
|
type: number
|
|
offset:
|
|
type: number
|
|
post:
|
|
operationId: createProjectTeam
|
|
summary: Create a projectTeam
|
|
description: Creates a project team in the database.
|
|
tags:
|
|
- Organizations API - Project Teams
|
|
parameters:
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
requestBody:
|
|
required: true
|
|
description: The project team to create
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
teamId:
|
|
type: string
|
|
description: The ID of the team
|
|
projectId:
|
|
type: string
|
|
description: The ID of the project
|
|
permission:
|
|
type: string
|
|
enum:
|
|
- read
|
|
- readWrite
|
|
- manage
|
|
description: Level of access granted to the project
|
|
required:
|
|
- teamId
|
|
- projectId
|
|
- permission
|
|
responses:
|
|
"201":
|
|
description: Project team created successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the project tem was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the project team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
projectId:
|
|
type: string
|
|
description: The ID of the project
|
|
teamId:
|
|
type: string
|
|
description: The ID of the team
|
|
permission:
|
|
type: string
|
|
enum:
|
|
- read
|
|
- readWrite
|
|
- manage
|
|
description: Level of access granted to the project
|
|
put:
|
|
operationId: updateProjectTeam
|
|
summary: Update a project team
|
|
description: Updates a project team in the database.
|
|
tags:
|
|
- Organizations API - Project Teams
|
|
parameters:
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
requestBody:
|
|
required: true
|
|
description: The project team to update
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
teamId:
|
|
type: string
|
|
description: The ID of the team
|
|
projectId:
|
|
type: string
|
|
description: The ID of the project
|
|
permission:
|
|
type: string
|
|
enum:
|
|
- read
|
|
- readWrite
|
|
- manage
|
|
description: Level of access granted to the project
|
|
required:
|
|
- teamId
|
|
- projectId
|
|
- permission
|
|
responses:
|
|
"200":
|
|
description: Project team updated successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the project tem was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the project team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
projectId:
|
|
type: string
|
|
description: The ID of the project
|
|
teamId:
|
|
type: string
|
|
description: The ID of the team
|
|
permission:
|
|
type: string
|
|
enum:
|
|
- read
|
|
- readWrite
|
|
- manage
|
|
description: Level of access granted to the project
|
|
delete:
|
|
operationId: deleteProjectTeam
|
|
summary: Delete a project team
|
|
description: Deletes a project team from the database.
|
|
tags:
|
|
- Organizations API - Project Teams
|
|
parameters:
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
- in: query
|
|
name: teamId
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- in: query
|
|
name: projectId
|
|
schema:
|
|
type: string
|
|
required: true
|
|
responses:
|
|
"200":
|
|
description: Project team deleted successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the project tem was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the project team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
projectId:
|
|
type: string
|
|
description: The ID of the project
|
|
teamId:
|
|
type: string
|
|
description: The ID of the team
|
|
permission:
|
|
type: string
|
|
enum:
|
|
- read
|
|
- readWrite
|
|
- manage
|
|
description: Level of access granted to the project
|
|
/{organizationId}/users:
|
|
servers: *a11
|
|
get:
|
|
operationId: getUsers
|
|
summary: Get users
|
|
description: Gets users from the database.<br />Only available for self-hosted
|
|
Formbricks.
|
|
tags:
|
|
- Organizations API - Users
|
|
parameters:
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
- in: query
|
|
name: limit
|
|
description: Number of items to return
|
|
schema:
|
|
type: number
|
|
minimum: 1
|
|
maximum: 250
|
|
default: 50
|
|
description: Number of items to return
|
|
- in: query
|
|
name: skip
|
|
description: Number of items to skip
|
|
schema:
|
|
type: number
|
|
minimum: 0
|
|
default: 0
|
|
description: Number of items to skip
|
|
- in: query
|
|
name: sortBy
|
|
description: Sort by field
|
|
schema:
|
|
type: string
|
|
enum: *a7
|
|
default: createdAt
|
|
description: Sort by field
|
|
- in: query
|
|
name: order
|
|
description: Sort order
|
|
schema:
|
|
type: string
|
|
enum: *a8
|
|
default: desc
|
|
description: Sort order
|
|
- in: query
|
|
name: startDate
|
|
description: Start date
|
|
schema:
|
|
type: string
|
|
description: Start date
|
|
- in: query
|
|
name: endDate
|
|
description: End date
|
|
schema:
|
|
type: string
|
|
description: End date
|
|
- in: query
|
|
name: filterDateField
|
|
description: Date field to filter by
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- createdAt
|
|
- updatedAt
|
|
default: createdAt
|
|
description: Date field to filter by
|
|
- in: query
|
|
name: id
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: email
|
|
schema:
|
|
type: string
|
|
responses:
|
|
"200":
|
|
description: Users retrieved successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the user
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the user was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the user was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
lastLoginAt:
|
|
type: string
|
|
description: The date and time the user last logged in
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isActive:
|
|
type: boolean
|
|
description: Whether the user is active
|
|
example: true
|
|
name:
|
|
type: string
|
|
pattern: ^[\p{L}\p{M}\s'\d-]+$
|
|
minLength: 1
|
|
description: The name of the user
|
|
example: John Doe
|
|
email:
|
|
type: string
|
|
format: email
|
|
maxLength: 255
|
|
description: The email of the user
|
|
example: example@example.com
|
|
role:
|
|
type: string
|
|
enum: &a12
|
|
- owner
|
|
- manager
|
|
- member
|
|
description: The role of the user in the organization
|
|
example: member
|
|
teams:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: The list of teams the user is a member of
|
|
example: &a13
|
|
- team1
|
|
- team2
|
|
meta:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
limit:
|
|
type: number
|
|
offset:
|
|
type: number
|
|
post:
|
|
operationId: createUser
|
|
summary: Create a user
|
|
description: Create a new user in the database.<br />Only available for
|
|
self-hosted Formbricks.
|
|
tags:
|
|
- Organizations API - Users
|
|
parameters:
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
requestBody:
|
|
required: true
|
|
description: The user to create
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
isActive:
|
|
type: boolean
|
|
description: Whether the user is active
|
|
example: true
|
|
name:
|
|
type: string
|
|
pattern: ^[\p{L}\p{M}\s'\d-]+$
|
|
minLength: 1
|
|
description: The name of the user
|
|
example: John Doe
|
|
email:
|
|
type: string
|
|
format: email
|
|
maxLength: 255
|
|
description: The email of the user
|
|
example: example@example.com
|
|
role:
|
|
type: string
|
|
enum: *a12
|
|
description: The role of the user in the organization
|
|
example: member
|
|
teams:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: The list of teams the user is a member of
|
|
example: *a13
|
|
required:
|
|
- name
|
|
- email
|
|
- role
|
|
responses:
|
|
"201":
|
|
description: User created successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the user
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the user was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the user was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
lastLoginAt:
|
|
type: string
|
|
description: The date and time the user last logged in
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isActive:
|
|
type: boolean
|
|
description: Whether the user is active
|
|
example: true
|
|
name:
|
|
type: string
|
|
pattern: ^[\p{L}\p{M}\s'\d-]+$
|
|
minLength: 1
|
|
description: The name of the user
|
|
example: John Doe
|
|
email:
|
|
type: string
|
|
format: email
|
|
maxLength: 255
|
|
description: The email of the user
|
|
example: example@example.com
|
|
role:
|
|
type: string
|
|
enum: *a12
|
|
description: The role of the user in the organization
|
|
example: member
|
|
teams:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: The list of teams the user is a member of
|
|
example: *a13
|
|
patch:
|
|
operationId: updateUser
|
|
summary: Update a user
|
|
description: Updates an existing user in the database.<br />Only available for
|
|
self-hosted Formbricks.
|
|
tags:
|
|
- Organizations API - Users
|
|
parameters:
|
|
- in: path
|
|
name: organizationId
|
|
description: The ID of the organization
|
|
schema:
|
|
$ref: "#/components/schemas/organizationId"
|
|
required: true
|
|
requestBody:
|
|
required: true
|
|
description: The user to update
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
isActive:
|
|
type: boolean
|
|
description: Whether the user is active
|
|
example: true
|
|
name:
|
|
type: string
|
|
pattern: ^[\p{L}\p{M}\s'\d-]+$
|
|
minLength: 1
|
|
email:
|
|
type: string
|
|
format: email
|
|
maxLength: 255
|
|
description: The email of the user
|
|
example: example@example.com
|
|
role:
|
|
type: string
|
|
enum: *a12
|
|
description: The role of the user in the organization
|
|
example: member
|
|
teams:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: The list of teams the user is a member of
|
|
example: *a13
|
|
required:
|
|
- email
|
|
responses:
|
|
"200":
|
|
description: User updated successfully.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the user
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the user was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the user was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
lastLoginAt:
|
|
type: string
|
|
description: The date and time the user last logged in
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isActive:
|
|
type: boolean
|
|
description: Whether the user is active
|
|
example: true
|
|
name:
|
|
type: string
|
|
pattern: ^[\p{L}\p{M}\s'\d-]+$
|
|
minLength: 1
|
|
description: The name of the user
|
|
example: John Doe
|
|
email:
|
|
type: string
|
|
format: email
|
|
maxLength: 255
|
|
description: The email of the user
|
|
example: example@example.com
|
|
role:
|
|
type: string
|
|
enum: *a12
|
|
description: The role of the user in the organization
|
|
example: member
|
|
teams:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: The list of teams the user is a member of
|
|
example: *a13
|
|
components:
|
|
securitySchemes:
|
|
apiKeyAuth:
|
|
type: apiKey
|
|
in: header
|
|
name: x-api-key
|
|
description: Use your Formbricks x-api-key to authenticate.
|
|
schemas:
|
|
health:
|
|
type: object
|
|
properties:
|
|
main_database:
|
|
type: boolean
|
|
description: Main database connection status - true if database is reachable and
|
|
running
|
|
example: true
|
|
cache_database:
|
|
type: boolean
|
|
description: Cache database connection status - true if cache database is
|
|
reachable and running
|
|
example: true
|
|
required:
|
|
- main_database
|
|
- cache_database
|
|
title: Health Check Response
|
|
description: Health check status for critical application dependencies
|
|
role:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
anyOf:
|
|
- type: string
|
|
const: owner
|
|
- type: string
|
|
const: manager
|
|
- type: string
|
|
const: member
|
|
- type: string
|
|
const: billing
|
|
required:
|
|
- data
|
|
me:
|
|
type: object
|
|
properties:
|
|
organizationId:
|
|
type: string
|
|
organizationAccess:
|
|
type: object
|
|
properties:
|
|
accessControl:
|
|
type: object
|
|
properties:
|
|
read:
|
|
type: boolean
|
|
write:
|
|
type: boolean
|
|
required:
|
|
- read
|
|
- write
|
|
additionalProperties: false
|
|
required:
|
|
- accessControl
|
|
environments:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
environmentId:
|
|
type: string
|
|
environmentType:
|
|
type: string
|
|
enum:
|
|
- production
|
|
- development
|
|
permission:
|
|
type: string
|
|
enum:
|
|
- read
|
|
- write
|
|
- manage
|
|
projectId:
|
|
type: string
|
|
projectName:
|
|
type: string
|
|
required:
|
|
- environmentId
|
|
- environmentType
|
|
- permission
|
|
- projectId
|
|
- projectName
|
|
required:
|
|
- organizationId
|
|
- organizationAccess
|
|
- environments
|
|
response:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the response
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the response was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the response was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
finished:
|
|
type: boolean
|
|
description: Whether the response is finished
|
|
example: true
|
|
surveyId:
|
|
type: string
|
|
description: The ID of the survey
|
|
contactId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the contact
|
|
endingId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The ID of the ending
|
|
data:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
- type: array
|
|
items:
|
|
type: string
|
|
- type: object
|
|
additionalProperties:
|
|
type: string
|
|
description: The data of the response
|
|
example: *a1
|
|
variables:
|
|
type: object
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: string
|
|
- type: number
|
|
description: The variables of the response
|
|
example: *a2
|
|
ttc:
|
|
type: object
|
|
additionalProperties:
|
|
type: number
|
|
description: The TTC of the response
|
|
example: *a3
|
|
meta:
|
|
type: object
|
|
properties:
|
|
source:
|
|
type: string
|
|
description: The source of the response
|
|
example: https://example.com
|
|
url:
|
|
type: string
|
|
description: The URL of the response
|
|
example: https://example.com
|
|
userAgent:
|
|
type: object
|
|
properties:
|
|
browser:
|
|
type: string
|
|
os:
|
|
type: string
|
|
device:
|
|
type: string
|
|
country:
|
|
type: string
|
|
action:
|
|
type: string
|
|
description: The meta data of the response
|
|
example: *a4
|
|
contactAttributes:
|
|
type:
|
|
- object
|
|
- "null"
|
|
additionalProperties:
|
|
type: string
|
|
description: The attributes of the contact
|
|
example: *a5
|
|
singleUseId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The single use ID of the response
|
|
language:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The language of the response
|
|
example: en
|
|
displayId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The display ID of the response
|
|
required:
|
|
- id
|
|
- createdAt
|
|
- updatedAt
|
|
- finished
|
|
- surveyId
|
|
- contactId
|
|
- endingId
|
|
- data
|
|
- variables
|
|
- ttc
|
|
- meta
|
|
- contactAttributes
|
|
- singleUseId
|
|
- language
|
|
- displayId
|
|
contact:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: Unique identifier for the contact
|
|
userId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Optional external user identifier
|
|
createdAt:
|
|
type: string
|
|
description: When the contact was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: When the contact was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
environmentId:
|
|
type: string
|
|
description: The environment this contact belongs to
|
|
required:
|
|
- id
|
|
- userId
|
|
- createdAt
|
|
- updatedAt
|
|
- environmentId
|
|
contactAttribute:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the contact attribute
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the contact attribute was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the contact attribute was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
attributeKeyId:
|
|
type: string
|
|
description: The ID of the attribute key
|
|
contactId:
|
|
type: string
|
|
description: The ID of the contact
|
|
value:
|
|
type: string
|
|
description: The value of the attribute
|
|
example: example@email.com
|
|
required:
|
|
- id
|
|
- createdAt
|
|
- updatedAt
|
|
- attributeKeyId
|
|
- contactId
|
|
- value
|
|
contactAttributeKey:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the contact attribute key
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the contact attribute key was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isUnique:
|
|
type: boolean
|
|
description: Whether the attribute must have unique values across contacts
|
|
example: false
|
|
key:
|
|
type: string
|
|
description: The attribute identifier used in the system
|
|
example: email
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Display name for the attribute
|
|
example: Email Address
|
|
description:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Description of the attribute
|
|
example: The user's email address
|
|
type:
|
|
type: string
|
|
enum:
|
|
- default
|
|
- custom
|
|
description: Whether this is a default or custom attribute
|
|
example: custom
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment this attribute belongs to
|
|
required:
|
|
- id
|
|
- createdAt
|
|
- updatedAt
|
|
- isUnique
|
|
- key
|
|
- name
|
|
- description
|
|
- type
|
|
- environmentId
|
|
survey:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the survey
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the survey was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the survey was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
name:
|
|
type: string
|
|
description: The name of the survey
|
|
redirectUrl:
|
|
type:
|
|
- string
|
|
- "null"
|
|
format: uri
|
|
description: The URL to redirect to after the survey is completed
|
|
type:
|
|
type: string
|
|
enum:
|
|
- link
|
|
- app
|
|
description: The type of the survey
|
|
status:
|
|
type: string
|
|
enum:
|
|
- draft
|
|
- inProgress
|
|
- paused
|
|
- completed
|
|
description: The status of the survey
|
|
thankYouMessage:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The thank you message of the survey
|
|
showLanguageSwitch:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
description: Whether to show the language switch
|
|
showThankYouMessage:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
description: Whether to show the thank you message
|
|
welcomeCard:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
timeToFinish:
|
|
type: boolean
|
|
showResponseCount:
|
|
type: boolean
|
|
headline:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
html:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
fileUrl:
|
|
type: string
|
|
buttonLabel:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
videoUrl:
|
|
type: string
|
|
required:
|
|
- enabled
|
|
- timeToFinish
|
|
- showResponseCount
|
|
description: The welcome card configuration
|
|
displayProgressBar:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
description: Whether to display the progress bar
|
|
pin:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The pin of the survey
|
|
createdBy:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The user who created the survey
|
|
environmentId:
|
|
type: string
|
|
description: The environment ID of the survey
|
|
endings:
|
|
type: array
|
|
items:
|
|
anyOf:
|
|
- type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
type:
|
|
type: string
|
|
const: endScreen
|
|
headline:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
subheader:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
buttonLabel:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
buttonLink:
|
|
type: string
|
|
imageUrl:
|
|
type: string
|
|
videoUrl:
|
|
type: string
|
|
required:
|
|
- id
|
|
- type
|
|
- type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
type:
|
|
type: string
|
|
const: redirectToUrl
|
|
url:
|
|
type: string
|
|
label:
|
|
type: string
|
|
required:
|
|
- id
|
|
- type
|
|
default: []
|
|
description: The endings of the survey
|
|
hiddenFields:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
fieldIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
required:
|
|
- enabled
|
|
description: Hidden fields configuration
|
|
variables:
|
|
type: array
|
|
items:
|
|
oneOf:
|
|
- type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
const: number
|
|
value:
|
|
type: number
|
|
default: 0
|
|
required:
|
|
- id
|
|
- name
|
|
- type
|
|
- value
|
|
- type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
const: text
|
|
value:
|
|
type: string
|
|
default: ""
|
|
required:
|
|
- id
|
|
- name
|
|
- type
|
|
- value
|
|
description: Survey variables
|
|
displayOption:
|
|
type: string
|
|
enum:
|
|
- displayOnce
|
|
- displayMultiple
|
|
- displaySome
|
|
- respondMultiple
|
|
description: Display options for the survey
|
|
recontactDays:
|
|
type:
|
|
- number
|
|
- "null"
|
|
description: Days before recontacting
|
|
displayLimit:
|
|
type:
|
|
- number
|
|
- "null"
|
|
description: Display limit for the survey
|
|
autoClose:
|
|
type:
|
|
- number
|
|
- "null"
|
|
description: Auto close time in seconds
|
|
autoComplete:
|
|
type:
|
|
- number
|
|
- "null"
|
|
description: Auto complete time in seconds
|
|
delay:
|
|
type: number
|
|
description: Delay before showing survey
|
|
surveyClosedMessage:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
heading:
|
|
type: string
|
|
subheading:
|
|
type: string
|
|
required:
|
|
- enabled
|
|
- heading
|
|
- subheading
|
|
description: Message shown when survey is closed
|
|
segmentId:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: ID of the segment
|
|
projectOverwrites:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
brandColor:
|
|
type:
|
|
- string
|
|
- "null"
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
highlightBorderColor:
|
|
type:
|
|
- string
|
|
- "null"
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
placement:
|
|
type:
|
|
- string
|
|
- "null"
|
|
enum:
|
|
- bottomLeft
|
|
- bottomRight
|
|
- topLeft
|
|
- topRight
|
|
- center
|
|
- null
|
|
clickOutsideClose:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
darkOverlay:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
description: Project specific overwrites
|
|
styling:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
brandColor:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
light:
|
|
type: string
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
dark:
|
|
type:
|
|
- string
|
|
- "null"
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
required:
|
|
- light
|
|
questionColor:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
light:
|
|
type: string
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
dark:
|
|
type:
|
|
- string
|
|
- "null"
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
required:
|
|
- light
|
|
inputColor:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
light:
|
|
type: string
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
dark:
|
|
type:
|
|
- string
|
|
- "null"
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
required:
|
|
- light
|
|
inputBorderColor:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
light:
|
|
type: string
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
dark:
|
|
type:
|
|
- string
|
|
- "null"
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
required:
|
|
- light
|
|
cardBackgroundColor:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
light:
|
|
type: string
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
dark:
|
|
type:
|
|
- string
|
|
- "null"
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
required:
|
|
- light
|
|
cardBorderColor:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
light:
|
|
type: string
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
dark:
|
|
type:
|
|
- string
|
|
- "null"
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
required:
|
|
- light
|
|
highlightBorderColor:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
light:
|
|
type: string
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
dark:
|
|
type:
|
|
- string
|
|
- "null"
|
|
pattern: ^#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
|
|
required:
|
|
- light
|
|
isDarkModeEnabled:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
roundness:
|
|
type:
|
|
- number
|
|
- "null"
|
|
cardArrangement:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
linkSurveys:
|
|
type: string
|
|
enum: &a14
|
|
- casual
|
|
- straight
|
|
- simple
|
|
appSurveys:
|
|
type: string
|
|
enum: *a14
|
|
required:
|
|
- linkSurveys
|
|
- appSurveys
|
|
background:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
bg:
|
|
type:
|
|
- string
|
|
- "null"
|
|
bgType:
|
|
type:
|
|
- string
|
|
- "null"
|
|
enum:
|
|
- animation
|
|
- color
|
|
- image
|
|
- upload
|
|
- null
|
|
brightness:
|
|
type:
|
|
- number
|
|
- "null"
|
|
hideProgressBar:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
isLogoHidden:
|
|
type:
|
|
- boolean
|
|
- "null"
|
|
description: Survey styling configuration
|
|
singleUse:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
isEncrypted:
|
|
type: boolean
|
|
required:
|
|
- enabled
|
|
- isEncrypted
|
|
description: Single use configuration
|
|
isVerifyEmailEnabled:
|
|
type: boolean
|
|
description: Whether email verification is enabled
|
|
isSingleResponsePerEmailEnabled:
|
|
type: boolean
|
|
description: Whether single response per email is enabled
|
|
inlineTriggers:
|
|
type:
|
|
- array
|
|
- "null"
|
|
items: {}
|
|
description: Inline triggers configuration
|
|
isBackButtonHidden:
|
|
type: boolean
|
|
description: Whether the back button is hidden
|
|
recaptcha:
|
|
type:
|
|
- object
|
|
- "null"
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
threshold:
|
|
type: number
|
|
multipleOf: 0.1
|
|
minimum: 0.1
|
|
maximum: 0.9
|
|
required:
|
|
- enabled
|
|
- threshold
|
|
description: Google reCAPTCHA configuration
|
|
metadata:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
description:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
ogImage:
|
|
type: string
|
|
format: uri
|
|
description: Custom link metadata for social sharing
|
|
displayPercentage:
|
|
type:
|
|
- number
|
|
- "null"
|
|
description: The display percentage of the survey
|
|
questions:
|
|
type: array
|
|
items: {}
|
|
description: The questions of the survey.
|
|
required:
|
|
- id
|
|
- createdAt
|
|
- updatedAt
|
|
- name
|
|
- redirectUrl
|
|
- type
|
|
- status
|
|
- thankYouMessage
|
|
- showLanguageSwitch
|
|
- showThankYouMessage
|
|
- welcomeCard
|
|
- displayProgressBar
|
|
- pin
|
|
- createdBy
|
|
- environmentId
|
|
- endings
|
|
- hiddenFields
|
|
- variables
|
|
- displayOption
|
|
- recontactDays
|
|
- displayLimit
|
|
- autoClose
|
|
- autoComplete
|
|
- delay
|
|
- surveyClosedMessage
|
|
- segmentId
|
|
- projectOverwrites
|
|
- styling
|
|
- singleUse
|
|
- isVerifyEmailEnabled
|
|
- isSingleResponsePerEmailEnabled
|
|
- inlineTriggers
|
|
- isBackButtonHidden
|
|
- recaptcha
|
|
- metadata
|
|
- displayPercentage
|
|
- questions
|
|
webhook:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the webhook
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: The name of the webhook
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the webhook was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the webhook was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
url:
|
|
type: string
|
|
format: uri
|
|
description: The URL of the webhook
|
|
source:
|
|
type: string
|
|
enum: *a9
|
|
description: The source of the webhook
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment
|
|
triggers:
|
|
type: array
|
|
items:
|
|
type: string
|
|
enum: *a10
|
|
minItems: 1
|
|
description: The triggers of the webhook
|
|
surveyIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: "The IDs of the surveys "
|
|
required:
|
|
- id
|
|
- name
|
|
- createdAt
|
|
- updatedAt
|
|
- url
|
|
- source
|
|
- environmentId
|
|
- triggers
|
|
- surveyIds
|
|
team:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the team
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the team was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
name:
|
|
type: string
|
|
description: The name of the team
|
|
example: My team
|
|
organizationId:
|
|
type: string
|
|
description: The ID of the organization
|
|
required:
|
|
- id
|
|
- createdAt
|
|
- updatedAt
|
|
- name
|
|
- organizationId
|
|
projectTeam:
|
|
type: object
|
|
properties:
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the project tem was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the project team was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
projectId:
|
|
type: string
|
|
description: The ID of the project
|
|
teamId:
|
|
type: string
|
|
description: The ID of the team
|
|
permission:
|
|
type: string
|
|
enum:
|
|
- read
|
|
- readWrite
|
|
- manage
|
|
description: Level of access granted to the project
|
|
required:
|
|
- createdAt
|
|
- updatedAt
|
|
- projectId
|
|
- teamId
|
|
- permission
|
|
user:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: The ID of the user
|
|
createdAt:
|
|
type: string
|
|
description: The date and time the user was created
|
|
example: 2021-01-01T00:00:00.000Z
|
|
updatedAt:
|
|
type: string
|
|
description: The date and time the user was last updated
|
|
example: 2021-01-01T00:00:00.000Z
|
|
lastLoginAt:
|
|
type: string
|
|
description: The date and time the user last logged in
|
|
example: 2021-01-01T00:00:00.000Z
|
|
isActive:
|
|
type: boolean
|
|
description: Whether the user is active
|
|
example: true
|
|
name:
|
|
type: string
|
|
pattern: ^[\p{L}\p{M}\s'\d-]+$
|
|
minLength: 1
|
|
description: The name of the user
|
|
example: John Doe
|
|
email:
|
|
type: string
|
|
format: email
|
|
maxLength: 255
|
|
description: The email of the user
|
|
example: example@example.com
|
|
role:
|
|
type: string
|
|
enum: *a12
|
|
description: The role of the user in the organization
|
|
example: member
|
|
teams:
|
|
type: array
|
|
items:
|
|
type: string
|
|
description: The list of teams the user is a member of
|
|
example: *a13
|
|
required:
|
|
- id
|
|
- createdAt
|
|
- updatedAt
|
|
- lastLoginAt
|
|
- isActive
|
|
- name
|
|
- email
|
|
- role
|
|
responseId:
|
|
type: string
|
|
description: The ID of the response
|
|
contactAttributeKeyInput:
|
|
type: object
|
|
properties:
|
|
key:
|
|
type: string
|
|
description: The attribute identifier used in the system
|
|
example: email
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Display name for the attribute
|
|
example: Email Address
|
|
description:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Description of the attribute
|
|
example: The user's email address
|
|
environmentId:
|
|
type: string
|
|
description: The ID of the environment this attribute belongs to
|
|
required:
|
|
- key
|
|
- name
|
|
- description
|
|
- environmentId
|
|
description: Input data for creating or updating a contact attribute
|
|
contactAttributeKeyId:
|
|
type: string
|
|
description: The ID of the contact attribute key
|
|
contactAttributeKeyUpdate:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Display name for the attribute
|
|
example: Email Address
|
|
description:
|
|
type:
|
|
- string
|
|
- "null"
|
|
description: Description of the attribute
|
|
example: The user's email address
|
|
key:
|
|
type: string
|
|
description: The attribute identifier used in the system
|
|
example: email
|
|
required:
|
|
- name
|
|
- description
|
|
- key
|
|
description: A contact attribute key to update.
|
|
webhookId:
|
|
type: string
|
|
description: The ID of the webhook
|
|
organizationId:
|
|
type: string
|
|
description: The ID of the organization
|
|
teamId:
|
|
type: string
|
|
description: The ID of the team
|