Files
formbricks-formbricks/docs/api-v2-reference/openapi.yml
Matti Nannt ae3524b79f chore: add api v2 draft docs (#4783)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-02-20 16:03:01 +01:00

1089 lines
30 KiB
YAML

openapi: 3.1.0
info:
title: Formbricks API
description: Manage Formbricks ressources programmatically.
version: 2.0.0
servers:
- url: https://app.formbricks.com/api
description: Formbricks Cloud
tags:
- name: Responses
description: Operations for managing responses.
- name: Contacts
description: Operations for managing contacts.
- name: Contact Attributes
description: Operations for managing contact attributes.
- name: Contact Attributes Keys
description: Operations for managing contact attributes keys.
paths:
/responses:
get:
operationId: getResponses
summary: Get responses
description: Gets responses from the database.
tags:
- responses
parameters:
- in: query
name: limit
schema:
type: number
minimum: 1
maximum: 100
default: 10
- in: query
name: skip
schema:
type: number
minimum: 0
default: 0
- in: query
name: sortBy
schema:
type: string
enum:
- createdAt
- updatedAt
default: createdAt
- in: query
name: order
schema:
type: string
enum:
- asc
- desc
default: desc
- in: query
name: startDate
schema:
type: string
required: true
- in: query
name: endDate
schema:
type: string
required: true
- in: query
name: surveyId
schema:
type: string
required: true
- in: query
name: contactId
schema:
type: string
required: true
responses:
"200":
description: Responses retrieved successfully.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/response"
post:
operationId: createResponse
summary: Create a response
description: Creates a response in the database.
tags:
- responses
requestBody:
required: true
description: The response to create
content:
application/json:
schema:
$ref: "#/components/schemas/responseCreate"
responses:
"201":
description: Response created successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/response"
/responses/{id}:
get:
operationId: getResponse
summary: Get a response
description: Gets a response from the database.
tags:
- 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:
$ref: "#/components/schemas/response"
put:
operationId: updateResponse
summary: Update a response
description: Updates a response in the database.
tags:
- 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:
$ref: "#/components/schemas/response"
delete:
operationId: deleteResponse
summary: Delete a response
description: Deletes a response from the database.
tags:
- 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:
$ref: "#/components/schemas/response"
/contacts:
get:
operationId: getContacts
summary: Get contacts
description: Gets contacts from the database.
tags:
- contacts
parameters:
- in: query
name: limit
schema:
type: number
minimum: 1
maximum: 100
default: 10
- in: query
name: skip
schema:
type: number
minimum: 0
default: 0
- in: query
name: sortBy
schema:
type: string
enum:
- createdAt
- updatedAt
default: createdAt
- in: query
name: order
schema:
type: string
enum:
- asc
- desc
default: desc
- in: query
name: startDate
schema:
type: string
- in: query
name: endDate
schema:
type: string
responses:
"200":
description: Contacts retrieved successfully.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/contact"
post:
operationId: createContact
summary: Create a contact
description: Creates a contact in the database.
tags:
- contacts
requestBody:
required: true
description: The contact to create
content:
application/json:
schema:
$ref: "#/components/schemas/contactCreate"
responses:
"201":
description: Contact created successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contact"
/contacts/{id}:
get:
operationId: getContact
summary: Get a contact
description: Gets a contact from the database.
tags:
- contacts
parameters:
- in: path
name: contactId
schema:
type: string
required: true
responses:
"200":
description: Contact retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contact"
put:
operationId: updateContact
summary: Update a contact
description: Updates a contact in the database.
tags:
- contacts
parameters:
- in: path
name: contactId
schema:
type: string
required: true
requestBody:
required: true
description: The response to update
content:
application/json:
schema:
$ref: "#/components/schemas/contactCreate"
responses:
"200":
description: Response updated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contact"
delete:
operationId: deleteContact
summary: Delete a contact
description: Deletes a contact from the database.
tags:
- contacts
parameters:
- in: path
name: contactId
schema:
type: string
required: true
responses:
"200":
description: Contact deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contact"
/contact-attributes:
get:
operationId: getContactAttributes
summary: Get contact attributes
description: Gets contact attributes from the database.
tags:
- contact-attributes
parameters:
- in: query
name: limit
schema:
type: number
minimum: 1
maximum: 100
default: 10
- in: query
name: skip
schema:
type: number
minimum: 0
default: 0
- in: query
name: sortBy
schema:
type: string
enum:
- createdAt
- updatedAt
default: createdAt
- in: query
name: order
schema:
type: string
enum:
- asc
- desc
default: desc
- in: query
name: startDate
schema:
type: string
- in: query
name: endDate
schema:
type: string
responses:
"200":
description: Contact attributes retrieved successfully.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/contactAttribute"
post:
operationId: createContactAttribute
summary: Create a contact attribute
description: Creates a contact attribute in the database.
tags:
- contact-attributes
requestBody:
required: true
description: The contact attribute to create
content:
application/json:
schema:
$ref: "#/components/schemas/contactAttributeInput"
responses:
"201":
description: Contact attribute created successfully.
/contact-attributes/{id}:
get:
operationId: getContactAttribute
summary: Get a contact attribute
description: Gets a contact attribute from the database.
tags:
- contact-attributes
parameters:
- in: path
name: contactAttributeId
schema:
type: string
required: true
responses:
"200":
description: Contact retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contactAttribute"
put:
operationId: updateContactAttribute
summary: Update a contact attribute
description: Updates a contact attribute in the database.
tags:
- contact-attributes
parameters:
- in: path
name: contactAttributeId
schema:
type: string
required: true
requestBody:
required: true
description: The response to update
content:
application/json:
schema:
$ref: "#/components/schemas/contactAttributeInput"
responses:
"200":
description: Response updated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contactAttribute"
delete:
operationId: deleteContactAttribute
summary: Delete a contact attribute
description: Deletes a contact attribute from the database.
tags:
- contact-attributes
parameters:
- in: path
name: contactAttributeId
schema:
type: string
required: true
responses:
"200":
description: Contact deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contactAttribute"
/contact-attribute-keys:
get:
operationId: getContactAttributeKeys
summary: Get contact attribute keys
description: Gets contact attribute keys from the database.
tags:
- contact-attribute-keys
parameters:
- in: query
name: limit
schema:
type: number
minimum: 1
maximum: 100
default: 10
- in: query
name: skip
schema:
type: number
minimum: 0
default: 0
- in: query
name: sortBy
schema:
type: string
enum:
- createdAt
- updatedAt
default: createdAt
- in: query
name: order
schema:
type: string
enum:
- asc
- desc
default: desc
- in: query
name: startDate
schema:
type: string
- in: query
name: endDate
schema:
type: string
responses:
"200":
description: Contact attribute keys retrieved successfully.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/contactAttributeKey"
post:
operationId: createContactAttributeKey
summary: Create a contact attribute key
description: Creates a contact attribute key in the database.
tags:
- 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.
/contact-attribute-keys/{id}:
get:
operationId: getContactAttributeKey
summary: Get a contact attribute key
description: Gets a contact attribute key from the database.
tags:
- contact-attribute-keys
parameters:
- in: path
name: contactAttributeKeyId
schema:
type: string
required: true
responses:
"200":
description: Contact attribute key retrieved successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contactAttributeKey"
put:
operationId: updateContactAttributeKey
summary: Update a contact attribute key
description: Updates a contact attribute key in the database.
tags:
- contact-attribute-keys
parameters:
- in: path
name: contactAttributeKeyId
schema:
type: string
required: true
requestBody:
required: true
description: The contact attribute key to update
content:
application/json:
schema:
$ref: "#/components/schemas/contactAttributeKeyInput"
responses:
"200":
description: Contact attribute key updated successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contactAttributeKey"
delete:
operationId: deleteContactAttributeKey
summary: Delete a contact attribute key
description: Deletes a contact attribute key from the database.
tags:
- contact-attribute-keys
parameters:
- in: path
name: contactAttributeId
schema:
type: string
required: true
responses:
"200":
description: Contact attribute key deleted successfully.
content:
application/json:
schema:
$ref: "#/components/schemas/contactAttributeKey"
components:
schemas:
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
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:
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
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
responseCreate:
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
description: A response to create
responseId:
type: string
description: The ID of the response
contactCreate:
type: object
properties:
userId:
type:
- string
- "null"
description: Optional external user identifier
environmentId:
type: string
description: The environment this contact belongs to
required:
- environmentId
description: A contact to create
contactAttributeInput:
type: object
properties:
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:
- attributeKeyId
- contactId
- value
description: Input data for creating or updating a contact attribute
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
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:
- key
- name
- description
- type
- environmentId
description: Input data for creating or updating a contact attribute