Craft.io Feedback Portals API
Feedback portals are the areas where various stakeholders submit their product related feedbacks
Feedback portals are the areas where various stakeholders submit their product related feedbacks
openapi: 3.0.0
info:
title: Craft.io Feedback Portal Feedback items Feedback Portals API
description: REST API for managing customer feedback portals, including listing portals and categories, retrieving feedback items, and submitting new feedback via POST requests.
version: 1.0.0
contact:
name: Craft.io Support
url: https://help.craft.io/
email: support@craft.io
servers:
- url: /
tags:
- name: Feedback Portals
description: Feedback portals are the areas where various stakeholders submit their product related feedbacks
paths:
/feedback_portals/{accountId}:
get:
operationId: GetPortals
responses:
'200':
description: A list of feedback portals
content:
application/json:
schema:
items:
$ref: '#/components/schemas/FeedbackPortal'
type: array
examples:
Example 1:
value:
- id: '2305843010022720311'
name: My Favorite portal
url: myportal
- id: '2305843010022720322'
name: Secret portal
url: secretportal
'400':
description: Invalid account ID
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'401':
description: No access to account
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'403':
description: Access denied
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'500':
description: An error occurred while fetching feedback portals
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
description: Get the list of your account’s feedback portals
tags:
- Feedback Portals
security:
- api_key:
- read:feedback:craft
parameters:
- in: path
name: accountId
required: true
schema:
type: string
/feedback_portals:
get:
operationId: GetPortalsExtended
responses:
'200':
description: A list of feedback portals
content:
application/json:
schema:
items:
$ref: '#/components/schemas/FeedbackPortal'
type: array
examples:
Example 1:
value:
- id: '2305843010022720311'
name: My Favorite portal
url: myportal
- id: '2305843010022720322'
name: Secret portal
url: secretportal
'401':
description: No access to account
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'403':
description: Access denied
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'500':
description: An error occurred while fetching feedback portals
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
description: Get the list of your account’s feedback portals
tags:
- Feedback Portals
security:
- api_key:
- read:feedback:craft
parameters:
- description: Filter by single portal
in: query
name: portalId
required: false
schema:
type: string
/feedback_portal/{portalId}/categories:
get:
operationId: GetCategories
responses:
'200':
description: A list of categories in a feedback portal
content:
application/json:
schema:
items:
$ref: '#/components/schemas/FeedbackPortal'
type: array
examples:
Example 1:
value:
- id: '2305843010122720311'
name: General
- id: '2305843010222720322'
name: My favorite category
'400':
description: Invalid portal ID
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'401':
description: No access to account
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'403':
description: Access denied
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'500':
description: An error occurred while fetching categories in a feedback portal
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
description: Get the list of the feedback portal categories
tags:
- Feedback Portals
security:
- api_key:
- read:feedback:craft
parameters:
- in: path
name: portalId
required: true
schema:
type: string
- in: query
name: workspaceId
required: false
schema:
default: ''
type: string
/feedback_portal/{portalId}/importances:
get:
operationId: GetImportances
responses:
'200':
description: A list of importances in a feedback portal
content:
application/json:
schema:
items:
$ref: '#/components/schemas/PortalImportance'
type: array
examples:
Example 1:
value:
- id: '2305843010122720555'
name: Critical
isDefault: false
- id: '2305843010122720556'
name: Nice to Have
isDefault: true
'400':
description: Invalid portal ID
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'401':
description: No access to account
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'403':
description: Access denied
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'500':
description: An error occurred while fetching importances in a feedback portal
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
description: Get the list of the feedback portal importances.
tags:
- Feedback Portals
security:
- api_key:
- read:feedback:craft
parameters:
- in: path
name: portalId
required: true
schema:
type: string
/feedback_portal/{portalId}/custom_fields:
get:
operationId: GetCustomFields
responses:
'200':
description: A list of feedback portal custom fields and their metadata
content:
application/json:
schema:
items:
$ref: '#/components/schemas/CustomField'
type: array
'400':
description: Invalid portal ID
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'401':
description: No access to account
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'403':
description: Access denied
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'500':
description: An error occurred while fetching custom fields in a feedback portal
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
description: Get the list of your feedback portal's custom fields
tags:
- Feedback Portals
security:
- api_key:
- read:feedback:craft
parameters:
- in: path
name: portalId
required: true
schema:
type: string
- in: query
name: includeOptions
required: false
schema:
default: false
type: boolean
/feedback_portal/{portalId}/forms:
get:
operationId: GetForms
responses:
'200':
description: A list of feedback portal forms and their metadata
content:
application/json:
schema:
properties:
forms:
items:
$ref: '#/components/schemas/PortalForm'
type: array
metadata:
properties:
count:
type: number
format: double
portalId:
type: string
required:
- count
- portalId
type: object
required:
- forms
- metadata
type: object
'400':
description: Invalid portal ID
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'401':
description: No access to account
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'403':
description: Access denied
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
'500':
description: An error occurred while fetching forms in a feedback portal
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralErrorResponse'
description: Get the list of your feedback portal's forms
tags:
- Feedback Portals
security:
- api_key:
- read:feedback:craft
parameters:
- in: path
name: portalId
required: true
schema:
type: string
- description: Filter by category
in: query
name: categoryId
required: false
schema:
type: string
- in: query
name: includeOptions
required: false
schema:
default: false
type: boolean
components:
schemas:
PortalForm:
properties:
id:
type: string
name:
type: string
categories:
items:
$ref: '#/components/schemas/Entity'
type: array
fields:
items:
$ref: '#/components/schemas/FormCustomField'
type: array
required:
- id
- name
- categories
- fields
type: object
additionalProperties: false
Workspace:
properties:
id:
type: string
name:
type: string
nullable: true
key:
type: string
webUrl:
type: string
description: Canonical Craft.io app URL for this workspace. Computed in PublishService.
type: object
additionalProperties: false
PortalImportance:
properties:
id:
type: string
name:
type: string
isDefault:
type: boolean
description: True when this importance is the portal's default — used by create_feedback when `importanceId` is omitted.
required:
- id
- name
type: object
additionalProperties: false
CustomFieldOption:
properties:
id:
type: string
label:
type: string
startDate:
type: string
nullable: true
endDate:
type: string
nullable: true
required:
- id
- label
type: object
additionalProperties: false
Entity:
properties:
id:
type: string
name:
type: string
nullable: true
type: object
additionalProperties: false
FormCustomField:
properties:
id:
type: string
name:
type: string
type:
type: string
values:
items:
type: string
type: array
options:
items:
$ref: '#/components/schemas/CustomFieldOption'
type: array
optionShape:
$ref: '#/components/schemas/OptionShape'
required:
type: boolean
required:
- id
- name
- type
- required
type: object
additionalProperties: false
GeneralErrorResponse:
properties:
message:
type: string
required:
- message
type: object
additionalProperties: false
FeedbackPortal:
properties:
id:
type: string
name:
type: string
nullable: true
url:
type: string
workspaces:
items:
$ref: '#/components/schemas/Workspace'
type: array
webUrl:
type: string
description: Fully-qualified portal URL (https://{slug}.{FPURL}). Convenience over `url`.
type: object
additionalProperties: false
OptionShape:
type: string
enum:
- select
- date
- date_range
CustomField:
properties:
id:
type: string
name:
type: string
type:
type: string
values:
items:
type: string
type: array
options:
items:
$ref: '#/components/schemas/CustomFieldOption'
type: array
optionShape:
$ref: '#/components/schemas/OptionShape'
required:
- id
- name
- type
type: object
additionalProperties: false
securitySchemes:
api_key:
type: apiKey
in: header
name: x-api-key