diff --git a/config/_default/menus/api.en.yaml b/config/_default/menus/api.en.yaml index ce76dcc0e9f..237e9313295 100644 --- a/config/_default/menus/api.en.yaml +++ b/config/_default/menus/api.en.yaml @@ -11557,6 +11557,75 @@ menu: unstable: - v2 order: 1 + - name: Forms + url: /api/latest/forms/ + identifier: forms + generated: true + - name: Get a form + url: /api/latest/forms/get-a-form/ + identifier: forms-get-a-form + parent: forms + generated: true + params: + versions: + - v2 + operationids: + - GetForm + unstable: + - v2 + order: 5 + - name: Delete a form + url: /api/latest/forms/delete-a-form/ + identifier: forms-delete-a-form + parent: forms + generated: true + params: + versions: + - v2 + operationids: + - DeleteForm + unstable: + - v2 + order: 4 + - name: Create and publish a form + url: /api/latest/forms/create-and-publish-a-form/ + identifier: forms-create-and-publish-a-form + parent: forms + generated: true + params: + versions: + - v2 + operationids: + - CreateAndPublishForm + unstable: + - v2 + order: 3 + - name: Create a form + url: /api/latest/forms/create-a-form/ + identifier: forms-create-a-form + parent: forms + generated: true + params: + versions: + - v2 + operationids: + - CreateForm + unstable: + - v2 + order: 2 + - name: List forms + url: /api/latest/forms/list-forms/ + identifier: forms-list-forms + parent: forms + generated: true + params: + versions: + - v2 + operationids: + - ListForms + unstable: + - v2 + order: 1 - name: Google Chat Integration url: /api/latest/google-chat-integration/ identifier: google-chat-integration diff --git a/content/en/api/latest/forms/_index.md b/content/en/api/latest/forms/_index.md new file mode 100644 index 00000000000..8e4328cd7da --- /dev/null +++ b/content/en/api/latest/forms/_index.md @@ -0,0 +1,3 @@ +--- +title: Forms +--- diff --git a/content/en/api/latest/forms/create-a-form/index.md b/content/en/api/latest/forms/create-a-form/index.md new file mode 100644 index 00000000000..56426a7d832 --- /dev/null +++ b/content/en/api/latest/forms/create-a-form/index.md @@ -0,0 +1,3 @@ +--- +title: Create a form +--- diff --git a/content/en/api/latest/forms/create-and-publish-a-form/index.md b/content/en/api/latest/forms/create-and-publish-a-form/index.md new file mode 100644 index 00000000000..f3ce3bd4730 --- /dev/null +++ b/content/en/api/latest/forms/create-and-publish-a-form/index.md @@ -0,0 +1,3 @@ +--- +title: Create and publish a form +--- diff --git a/content/en/api/latest/forms/delete-a-form/index.md b/content/en/api/latest/forms/delete-a-form/index.md new file mode 100644 index 00000000000..5dd5b998679 --- /dev/null +++ b/content/en/api/latest/forms/delete-a-form/index.md @@ -0,0 +1,3 @@ +--- +title: Delete a form +--- diff --git a/content/en/api/latest/forms/get-a-form/index.md b/content/en/api/latest/forms/get-a-form/index.md new file mode 100644 index 00000000000..3c700358b7b --- /dev/null +++ b/content/en/api/latest/forms/get-a-form/index.md @@ -0,0 +1,3 @@ +--- +title: Get a form +--- diff --git a/content/en/api/latest/forms/list-forms/index.md b/content/en/api/latest/forms/list-forms/index.md new file mode 100644 index 00000000000..d64f4f9050b --- /dev/null +++ b/content/en/api/latest/forms/list-forms/index.md @@ -0,0 +1,3 @@ +--- +title: List forms +--- diff --git a/content/en/api/v2/forms/_index.md b/content/en/api/v2/forms/_index.md new file mode 100644 index 00000000000..e928d04118f --- /dev/null +++ b/content/en/api/v2/forms/_index.md @@ -0,0 +1,4 @@ +--- +title: Forms +headless: true +--- diff --git a/content/en/api/v2/forms/examples.json b/content/en/api/v2/forms/examples.json new file mode 100644 index 00000000000..dbbf2bd344b --- /dev/null +++ b/content/en/api/v2/forms/examples.json @@ -0,0 +1,628 @@ +{ + "ListForms": { + "responses": { + "200": { + "json": { + "data": [ + { + "attributes": { + "active": true, + "anonymous": false, + "created_at": "2026-05-29T20:06:13.677353Z", + "datastore_config": { + "datastore_id": "5108ea24-dd83-4696-9caa-f069f73d0fad", + "primary_column_name": "id", + "primary_key_generation_strategy": "none" + }, + "description": "A form to collect user feedback.", + "end_date": null, + "has_submitted": false, + "idp_survey": false, + "modified_at": "2026-05-29T20:06:13.677353Z", + "name": "User Feedback Form", + "org_id": 2, + "publication": { + "created_at": "2026-05-29T20:06:13.677353Z", + "form_id": "afc67600-0511-43b1-9b18-578fb4979bd3", + "form_version": 1, + "id": "42", + "modified_at": "2026-05-29T20:06:13.677353Z", + "org_id": 2, + "publish_seq": 1, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978" + }, + "self_service": false, + "single_response": false, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978", + "version": { + "created_at": "2026-05-29T20:06:14.895921Z", + "data_definition": { + "$defs": {}, + "description": "Welcome to the Engineering Experience Survey.", + "properties": {}, + "required": [], + "title": "Developer Experience Survey", + "type": "string" + }, + "definition_signature": "{\"signature\":\"b7f312957a80cea2c8c9950532b205a90a3f8a7ebb7e52fc25437a25d903d545\",\"version\":1}", + "etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d", + "id": "126", + "modified_at": "2026-05-29T20:06:14.949163Z", + "state": "frozen", + "ui_definition": { + "ui:order": [], + "ui:theme": { + "primaryColor": "string" + } + }, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978", + "version": 1 + } + }, + "id": "22f6006a-2302-4926-9396-d2dfcf7b0b34", + "type": "forms" + } + ] + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

A list of form resource objects.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of a form.

\n
\n
\n
\n
\n
\n

active [required]

\n
\n

boolean

\n

Whether the form is currently active.

\n
\n \n
\n
\n
\n
\n
\n

anonymous [required]

\n
\n

boolean

\n

Whether the form accepts anonymous submissions.

\n
\n \n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the form was created.

\n
\n \n
\n
\n
\n
\n
\n

datastore_config [required]

\n
\n

object

\n

The datastore configuration for a form.

\n
\n
\n
\n
\n
\n

datastore_id [required]

\n
\n

uuid

\n

The ID of the datastore.

\n
\n \n
\n
\n
\n
\n
\n

primary_column_name [required]

\n
\n

string

\n

The name of the primary column in the datastore.

\n
\n \n
\n
\n
\n
\n
\n

primary_key_generation_strategy [required]

\n
\n

string

\n

The strategy used to generate primary keys in the datastore.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description [required]

\n
\n

string

\n

The description of the form.

\n
\n \n
\n
\n
\n
\n
\n

end_date

\n
\n

date-time

\n

The date and time at which the form stops accepting responses.

\n
\n \n
\n
\n
\n
\n
\n

has_submitted

\n
\n

boolean

\n

Whether the current user has already submitted this form. Only present for forms with single_response set to true.

\n
\n \n
\n
\n
\n
\n
\n

idp_survey [required]

\n
\n

boolean

\n

Whether the form is an IDP survey.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the form was last modified.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the form.

\n
\n \n
\n
\n
\n
\n
\n

org_id [required]

\n
\n

int64

\n

The ID of the organization that owns this form.

\n
\n \n
\n
\n
\n
\n
\n

publication

\n
\n

object

\n

The attributes of a form publication.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the publication was created.

\n
\n \n
\n
\n
\n
\n
\n

form_id [required]

\n
\n

uuid

\n

The ID of the form.

\n
\n \n
\n
\n
\n
\n
\n

form_version [required]

\n
\n

int64

\n

The version number that was published.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the form publication.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the publication was last modified.

\n
\n \n
\n
\n
\n
\n
\n

org_id [required]

\n
\n

int64

\n

The ID of the organization that owns this publication.

\n
\n \n
\n
\n
\n
\n
\n

publish_seq [required]

\n
\n

int64

\n

The sequential publication number for this form.

\n
\n \n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this publication.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this publication.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

self_service [required]

\n
\n

boolean

\n

Whether the form is available in the self-service catalog.

\n
\n \n
\n
\n
\n
\n
\n

single_response [required]

\n
\n

boolean

\n

Whether each user can only submit one response.

\n
\n \n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this form.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this form.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

object

\n

The attributes of a form version.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the version was created.

\n
\n \n
\n
\n
\n
\n
\n

data_definition [required]

\n
\n

object

\n

A JSON Schema definition that describes the form's data fields.

\n
\n
\n
\n
\n
\n

$defs

\n
\n

object

\n

The definitions of the form fields.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

A description shown to form respondents.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

object

\n

A map of field names to their JSON Schema definitions.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

[string]

\n

List of field names that must be answered.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

The title of the form schema.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The root schema type. Always "object". \nAllowed enum values: object

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

definition_signature [required]

\n
\n

string

\n

The signature of the version definition.

\n
\n \n
\n
\n
\n
\n
\n

etag [required]

\n
\n

string

\n

The ETag for optimistic concurrency control.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the form version.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the version was last modified.

\n
\n \n
\n
\n
\n
\n
\n

state [required]

\n
\n

enum

\n

The state of a form version. \nAllowed enum values: draft,frozen

\n
\n \n
\n
\n
\n
\n
\n

ui_definition [required]

\n
\n

object

\n

UI configuration for rendering form fields, including widget overrides, field ordering, and themes.

\n
\n
\n
\n
\n
\n

ui:order

\n
\n

[string]

\n

The order in which form fields are displayed.

\n
\n \n
\n
\n
\n
\n
\n

ui:theme

\n
\n

object

\n

The visual theme applied to the form.

\n
\n
\n
\n
\n
\n

primaryColor

\n
\n

enum

\n

The primary color of the form theme. \nAllowed enum values: gray,red,orange,yellow,green,light-blue,dark-blue,magenta,indigo

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this version.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this version.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

The sequential version number.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the form.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The resource type for a form. \nAllowed enum values: forms

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "CreateForm": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "active": true, + "anonymous": false, + "created_at": "2026-05-29T20:06:13.677353Z", + "datastore_config": { + "datastore_id": "5108ea24-dd83-4696-9caa-f069f73d0fad", + "primary_column_name": "id", + "primary_key_generation_strategy": "none" + }, + "description": "A form to collect user feedback.", + "end_date": null, + "has_submitted": false, + "idp_survey": false, + "modified_at": "2026-05-29T20:06:13.677353Z", + "name": "User Feedback Form", + "org_id": 2, + "publication": { + "created_at": "2026-05-29T20:06:13.677353Z", + "form_id": "afc67600-0511-43b1-9b18-578fb4979bd3", + "form_version": 1, + "id": "42", + "modified_at": "2026-05-29T20:06:13.677353Z", + "org_id": 2, + "publish_seq": 1, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978" + }, + "self_service": false, + "single_response": false, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978", + "version": { + "created_at": "2026-05-29T20:06:14.895921Z", + "data_definition": { + "$defs": {}, + "description": "Welcome to the Engineering Experience Survey.", + "properties": {}, + "required": [], + "title": "Developer Experience Survey", + "type": "string" + }, + "definition_signature": "{\"signature\":\"b7f312957a80cea2c8c9950532b205a90a3f8a7ebb7e52fc25437a25d903d545\",\"version\":1}", + "etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d", + "id": "126", + "modified_at": "2026-05-29T20:06:14.949163Z", + "state": "frozen", + "ui_definition": { + "ui:order": [], + "ui:theme": { + "primaryColor": "string" + } + }, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978", + "version": 1 + } + }, + "id": "22f6006a-2302-4926-9396-d2dfcf7b0b34", + "type": "forms" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

A form resource object.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of a form.

\n
\n
\n
\n
\n
\n

active [required]

\n
\n

boolean

\n

Whether the form is currently active.

\n
\n \n
\n
\n
\n
\n
\n

anonymous [required]

\n
\n

boolean

\n

Whether the form accepts anonymous submissions.

\n
\n \n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the form was created.

\n
\n \n
\n
\n
\n
\n
\n

datastore_config [required]

\n
\n

object

\n

The datastore configuration for a form.

\n
\n
\n
\n
\n
\n

datastore_id [required]

\n
\n

uuid

\n

The ID of the datastore.

\n
\n \n
\n
\n
\n
\n
\n

primary_column_name [required]

\n
\n

string

\n

The name of the primary column in the datastore.

\n
\n \n
\n
\n
\n
\n
\n

primary_key_generation_strategy [required]

\n
\n

string

\n

The strategy used to generate primary keys in the datastore.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description [required]

\n
\n

string

\n

The description of the form.

\n
\n \n
\n
\n
\n
\n
\n

end_date

\n
\n

date-time

\n

The date and time at which the form stops accepting responses.

\n
\n \n
\n
\n
\n
\n
\n

has_submitted

\n
\n

boolean

\n

Whether the current user has already submitted this form. Only present for forms with single_response set to true.

\n
\n \n
\n
\n
\n
\n
\n

idp_survey [required]

\n
\n

boolean

\n

Whether the form is an IDP survey.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the form was last modified.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the form.

\n
\n \n
\n
\n
\n
\n
\n

org_id [required]

\n
\n

int64

\n

The ID of the organization that owns this form.

\n
\n \n
\n
\n
\n
\n
\n

publication

\n
\n

object

\n

The attributes of a form publication.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the publication was created.

\n
\n \n
\n
\n
\n
\n
\n

form_id [required]

\n
\n

uuid

\n

The ID of the form.

\n
\n \n
\n
\n
\n
\n
\n

form_version [required]

\n
\n

int64

\n

The version number that was published.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the form publication.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the publication was last modified.

\n
\n \n
\n
\n
\n
\n
\n

org_id [required]

\n
\n

int64

\n

The ID of the organization that owns this publication.

\n
\n \n
\n
\n
\n
\n
\n

publish_seq [required]

\n
\n

int64

\n

The sequential publication number for this form.

\n
\n \n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this publication.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this publication.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

self_service [required]

\n
\n

boolean

\n

Whether the form is available in the self-service catalog.

\n
\n \n
\n
\n
\n
\n
\n

single_response [required]

\n
\n

boolean

\n

Whether each user can only submit one response.

\n
\n \n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this form.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this form.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

object

\n

The attributes of a form version.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the version was created.

\n
\n \n
\n
\n
\n
\n
\n

data_definition [required]

\n
\n

object

\n

A JSON Schema definition that describes the form's data fields.

\n
\n
\n
\n
\n
\n

$defs

\n
\n

object

\n

The definitions of the form fields.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

A description shown to form respondents.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

object

\n

A map of field names to their JSON Schema definitions.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

[string]

\n

List of field names that must be answered.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

The title of the form schema.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The root schema type. Always "object". \nAllowed enum values: object

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

definition_signature [required]

\n
\n

string

\n

The signature of the version definition.

\n
\n \n
\n
\n
\n
\n
\n

etag [required]

\n
\n

string

\n

The ETag for optimistic concurrency control.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the form version.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the version was last modified.

\n
\n \n
\n
\n
\n
\n
\n

state [required]

\n
\n

enum

\n

The state of a form version. \nAllowed enum values: draft,frozen

\n
\n \n
\n
\n
\n
\n
\n

ui_definition [required]

\n
\n

object

\n

UI configuration for rendering form fields, including widget overrides, field ordering, and themes.

\n
\n
\n
\n
\n
\n

ui:order

\n
\n

[string]

\n

The order in which form fields are displayed.

\n
\n \n
\n
\n
\n
\n
\n

ui:theme

\n
\n

object

\n

The visual theme applied to the form.

\n
\n
\n
\n
\n
\n

primaryColor

\n
\n

enum

\n

The primary color of the form theme. \nAllowed enum values: gray,red,orange,yellow,green,light-blue,dark-blue,magenta,indigo

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this version.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this version.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

The sequential version number.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the form.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The resource type for a form. \nAllowed enum values: forms

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "data_definition": {}, + "name": "User Feedback Form", + "ui_definition": {} + }, + "type": "forms" + } + }, + "json": { + "data": { + "attributes": { + "anonymous": false, + "data_definition": { + "$defs": {}, + "description": "Welcome to the Engineering Experience Survey.", + "properties": {}, + "required": [], + "title": "Developer Experience Survey", + "type": "string" + }, + "description": "A form to collect user feedback.", + "idp_survey": false, + "name": "User Feedback Form", + "single_response": false, + "ui_definition": { + "ui:order": [], + "ui:theme": { + "primaryColor": "string" + } + } + }, + "type": "forms" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data for creating a form.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes for creating a form.

\n
\n
\n
\n
\n
\n

anonymous

\n
\n

boolean

\n

Whether the form accepts anonymous submissions.

\n
\n \n
\n
\n
\n
\n
\n

data_definition [required]

\n
\n

object

\n

A JSON Schema definition that describes the form's data fields.

\n
\n
\n
\n
\n
\n

$defs

\n
\n

object

\n

The definitions of the form fields.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

A description shown to form respondents.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

object

\n

A map of field names to their JSON Schema definitions.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

[string]

\n

List of field names that must be answered.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

The title of the form schema.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The root schema type. Always "object". \nAllowed enum values: object

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The description of the form.

\n
\n \n
\n
\n
\n
\n
\n

idp_survey

\n
\n

boolean

\n

Whether the form is an IDP survey.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the form.

\n
\n \n
\n
\n
\n
\n
\n

single_response

\n
\n

boolean

\n

Whether each user can only submit one response.

\n
\n \n
\n
\n
\n
\n
\n

ui_definition [required]

\n
\n

object

\n

UI configuration for rendering form fields, including widget overrides, field ordering, and themes.

\n
\n
\n
\n
\n
\n

ui:order

\n
\n

[string]

\n

The order in which form fields are displayed.

\n
\n \n
\n
\n
\n
\n
\n

ui:theme

\n
\n

object

\n

The visual theme applied to the form.

\n
\n
\n
\n
\n
\n

primaryColor

\n
\n

enum

\n

The primary color of the form theme. \nAllowed enum values: gray,red,orange,yellow,green,light-blue,dark-blue,magenta,indigo

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The resource type for a form. \nAllowed enum values: forms

\n
\n \n
\n
\n
\n
" + } + }, + "CreateAndPublishForm": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "active": true, + "anonymous": false, + "created_at": "2026-05-29T20:06:13.677353Z", + "datastore_config": { + "datastore_id": "5108ea24-dd83-4696-9caa-f069f73d0fad", + "primary_column_name": "id", + "primary_key_generation_strategy": "none" + }, + "description": "A form to collect user feedback.", + "end_date": null, + "has_submitted": false, + "idp_survey": false, + "modified_at": "2026-05-29T20:06:13.677353Z", + "name": "User Feedback Form", + "org_id": 2, + "publication": { + "created_at": "2026-05-29T20:06:13.677353Z", + "form_id": "afc67600-0511-43b1-9b18-578fb4979bd3", + "form_version": 1, + "id": "42", + "modified_at": "2026-05-29T20:06:13.677353Z", + "org_id": 2, + "publish_seq": 1, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978" + }, + "self_service": false, + "single_response": false, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978", + "version": { + "created_at": "2026-05-29T20:06:14.895921Z", + "data_definition": { + "$defs": {}, + "description": "Welcome to the Engineering Experience Survey.", + "properties": {}, + "required": [], + "title": "Developer Experience Survey", + "type": "string" + }, + "definition_signature": "{\"signature\":\"b7f312957a80cea2c8c9950532b205a90a3f8a7ebb7e52fc25437a25d903d545\",\"version\":1}", + "etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d", + "id": "126", + "modified_at": "2026-05-29T20:06:14.949163Z", + "state": "frozen", + "ui_definition": { + "ui:order": [], + "ui:theme": { + "primaryColor": "string" + } + }, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978", + "version": 1 + } + }, + "id": "22f6006a-2302-4926-9396-d2dfcf7b0b34", + "type": "forms" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

A form resource object.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of a form.

\n
\n
\n
\n
\n
\n

active [required]

\n
\n

boolean

\n

Whether the form is currently active.

\n
\n \n
\n
\n
\n
\n
\n

anonymous [required]

\n
\n

boolean

\n

Whether the form accepts anonymous submissions.

\n
\n \n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the form was created.

\n
\n \n
\n
\n
\n
\n
\n

datastore_config [required]

\n
\n

object

\n

The datastore configuration for a form.

\n
\n
\n
\n
\n
\n

datastore_id [required]

\n
\n

uuid

\n

The ID of the datastore.

\n
\n \n
\n
\n
\n
\n
\n

primary_column_name [required]

\n
\n

string

\n

The name of the primary column in the datastore.

\n
\n \n
\n
\n
\n
\n
\n

primary_key_generation_strategy [required]

\n
\n

string

\n

The strategy used to generate primary keys in the datastore.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description [required]

\n
\n

string

\n

The description of the form.

\n
\n \n
\n
\n
\n
\n
\n

end_date

\n
\n

date-time

\n

The date and time at which the form stops accepting responses.

\n
\n \n
\n
\n
\n
\n
\n

has_submitted

\n
\n

boolean

\n

Whether the current user has already submitted this form. Only present for forms with single_response set to true.

\n
\n \n
\n
\n
\n
\n
\n

idp_survey [required]

\n
\n

boolean

\n

Whether the form is an IDP survey.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the form was last modified.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the form.

\n
\n \n
\n
\n
\n
\n
\n

org_id [required]

\n
\n

int64

\n

The ID of the organization that owns this form.

\n
\n \n
\n
\n
\n
\n
\n

publication

\n
\n

object

\n

The attributes of a form publication.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the publication was created.

\n
\n \n
\n
\n
\n
\n
\n

form_id [required]

\n
\n

uuid

\n

The ID of the form.

\n
\n \n
\n
\n
\n
\n
\n

form_version [required]

\n
\n

int64

\n

The version number that was published.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the form publication.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the publication was last modified.

\n
\n \n
\n
\n
\n
\n
\n

org_id [required]

\n
\n

int64

\n

The ID of the organization that owns this publication.

\n
\n \n
\n
\n
\n
\n
\n

publish_seq [required]

\n
\n

int64

\n

The sequential publication number for this form.

\n
\n \n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this publication.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this publication.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

self_service [required]

\n
\n

boolean

\n

Whether the form is available in the self-service catalog.

\n
\n \n
\n
\n
\n
\n
\n

single_response [required]

\n
\n

boolean

\n

Whether each user can only submit one response.

\n
\n \n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this form.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this form.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

object

\n

The attributes of a form version.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the version was created.

\n
\n \n
\n
\n
\n
\n
\n

data_definition [required]

\n
\n

object

\n

A JSON Schema definition that describes the form's data fields.

\n
\n
\n
\n
\n
\n

$defs

\n
\n

object

\n

The definitions of the form fields.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

A description shown to form respondents.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

object

\n

A map of field names to their JSON Schema definitions.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

[string]

\n

List of field names that must be answered.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

The title of the form schema.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The root schema type. Always "object". \nAllowed enum values: object

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

definition_signature [required]

\n
\n

string

\n

The signature of the version definition.

\n
\n \n
\n
\n
\n
\n
\n

etag [required]

\n
\n

string

\n

The ETag for optimistic concurrency control.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the form version.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the version was last modified.

\n
\n \n
\n
\n
\n
\n
\n

state [required]

\n
\n

enum

\n

The state of a form version. \nAllowed enum values: draft,frozen

\n
\n \n
\n
\n
\n
\n
\n

ui_definition [required]

\n
\n

object

\n

UI configuration for rendering form fields, including widget overrides, field ordering, and themes.

\n
\n
\n
\n
\n
\n

ui:order

\n
\n

[string]

\n

The order in which form fields are displayed.

\n
\n \n
\n
\n
\n
\n
\n

ui:theme

\n
\n

object

\n

The visual theme applied to the form.

\n
\n
\n
\n
\n
\n

primaryColor

\n
\n

enum

\n

The primary color of the form theme. \nAllowed enum values: gray,red,orange,yellow,green,light-blue,dark-blue,magenta,indigo

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this version.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this version.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

The sequential version number.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the form.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The resource type for a form. \nAllowed enum values: forms

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "data_definition": {}, + "name": "User Feedback Form", + "ui_definition": {} + }, + "type": "forms" + } + }, + "json": { + "data": { + "attributes": { + "anonymous": false, + "data_definition": { + "$defs": {}, + "description": "Welcome to the Engineering Experience Survey.", + "properties": {}, + "required": [], + "title": "Developer Experience Survey", + "type": "string" + }, + "description": "A form to collect user feedback.", + "idp_survey": false, + "name": "User Feedback Form", + "single_response": false, + "ui_definition": { + "ui:order": [], + "ui:theme": { + "primaryColor": "string" + } + } + }, + "type": "forms" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

The data for creating a form.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes for creating a form.

\n
\n
\n
\n
\n
\n

anonymous

\n
\n

boolean

\n

Whether the form accepts anonymous submissions.

\n
\n \n
\n
\n
\n
\n
\n

data_definition [required]

\n
\n

object

\n

A JSON Schema definition that describes the form's data fields.

\n
\n
\n
\n
\n
\n

$defs

\n
\n

object

\n

The definitions of the form fields.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

A description shown to form respondents.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

object

\n

A map of field names to their JSON Schema definitions.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

[string]

\n

List of field names that must be answered.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

The title of the form schema.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The root schema type. Always "object". \nAllowed enum values: object

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The description of the form.

\n
\n \n
\n
\n
\n
\n
\n

idp_survey

\n
\n

boolean

\n

Whether the form is an IDP survey.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the form.

\n
\n \n
\n
\n
\n
\n
\n

single_response

\n
\n

boolean

\n

Whether each user can only submit one response.

\n
\n \n
\n
\n
\n
\n
\n

ui_definition [required]

\n
\n

object

\n

UI configuration for rendering form fields, including widget overrides, field ordering, and themes.

\n
\n
\n
\n
\n
\n

ui:order

\n
\n

[string]

\n

The order in which form fields are displayed.

\n
\n \n
\n
\n
\n
\n
\n

ui:theme

\n
\n

object

\n

The visual theme applied to the form.

\n
\n
\n
\n
\n
\n

primaryColor

\n
\n

enum

\n

The primary color of the form theme. \nAllowed enum values: gray,red,orange,yellow,green,light-blue,dark-blue,magenta,indigo

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The resource type for a form. \nAllowed enum values: forms

\n
\n \n
\n
\n
\n
" + } + }, + "DeleteForm": { + "responses": { + "200": { + "json": { + "data": { + "id": "844dfd88-aa84-4db4-8979-e7bdbb9c1dc3", + "type": "forms" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The data returned when a form is deleted.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the deleted form.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The resource type for a form. \nAllowed enum values: forms

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetForm": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "active": true, + "anonymous": false, + "created_at": "2026-05-29T20:06:13.677353Z", + "datastore_config": { + "datastore_id": "5108ea24-dd83-4696-9caa-f069f73d0fad", + "primary_column_name": "id", + "primary_key_generation_strategy": "none" + }, + "description": "A form to collect user feedback.", + "end_date": null, + "has_submitted": false, + "idp_survey": false, + "modified_at": "2026-05-29T20:06:13.677353Z", + "name": "User Feedback Form", + "org_id": 2, + "publication": { + "created_at": "2026-05-29T20:06:13.677353Z", + "form_id": "afc67600-0511-43b1-9b18-578fb4979bd3", + "form_version": 1, + "id": "42", + "modified_at": "2026-05-29T20:06:13.677353Z", + "org_id": 2, + "publish_seq": 1, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978" + }, + "self_service": false, + "single_response": false, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978", + "version": { + "created_at": "2026-05-29T20:06:14.895921Z", + "data_definition": { + "$defs": {}, + "description": "Welcome to the Engineering Experience Survey.", + "properties": {}, + "required": [], + "title": "Developer Experience Survey", + "type": "string" + }, + "definition_signature": "{\"signature\":\"b7f312957a80cea2c8c9950532b205a90a3f8a7ebb7e52fc25437a25d903d545\",\"version\":1}", + "etag": "b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d", + "id": "126", + "modified_at": "2026-05-29T20:06:14.949163Z", + "state": "frozen", + "ui_definition": { + "ui:order": [], + "ui:theme": { + "primaryColor": "string" + } + }, + "user_id": 10001, + "user_uuid": "1fc709aa-be19-4539-a47d-52a30d78a978", + "version": 1 + } + }, + "id": "22f6006a-2302-4926-9396-d2dfcf7b0b34", + "type": "forms" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

A form resource object.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The attributes of a form.

\n
\n
\n
\n
\n
\n

active [required]

\n
\n

boolean

\n

Whether the form is currently active.

\n
\n \n
\n
\n
\n
\n
\n

anonymous [required]

\n
\n

boolean

\n

Whether the form accepts anonymous submissions.

\n
\n \n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the form was created.

\n
\n \n
\n
\n
\n
\n
\n

datastore_config [required]

\n
\n

object

\n

The datastore configuration for a form.

\n
\n
\n
\n
\n
\n

datastore_id [required]

\n
\n

uuid

\n

The ID of the datastore.

\n
\n \n
\n
\n
\n
\n
\n

primary_column_name [required]

\n
\n

string

\n

The name of the primary column in the datastore.

\n
\n \n
\n
\n
\n
\n
\n

primary_key_generation_strategy [required]

\n
\n

string

\n

The strategy used to generate primary keys in the datastore.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description [required]

\n
\n

string

\n

The description of the form.

\n
\n \n
\n
\n
\n
\n
\n

end_date

\n
\n

date-time

\n

The date and time at which the form stops accepting responses.

\n
\n \n
\n
\n
\n
\n
\n

has_submitted

\n
\n

boolean

\n

Whether the current user has already submitted this form. Only present for forms with single_response set to true.

\n
\n \n
\n
\n
\n
\n
\n

idp_survey [required]

\n
\n

boolean

\n

Whether the form is an IDP survey.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the form was last modified.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the form.

\n
\n \n
\n
\n
\n
\n
\n

org_id [required]

\n
\n

int64

\n

The ID of the organization that owns this form.

\n
\n \n
\n
\n
\n
\n
\n

publication

\n
\n

object

\n

The attributes of a form publication.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the publication was created.

\n
\n \n
\n
\n
\n
\n
\n

form_id [required]

\n
\n

uuid

\n

The ID of the form.

\n
\n \n
\n
\n
\n
\n
\n

form_version [required]

\n
\n

int64

\n

The version number that was published.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the form publication.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the publication was last modified.

\n
\n \n
\n
\n
\n
\n
\n

org_id [required]

\n
\n

int64

\n

The ID of the organization that owns this publication.

\n
\n \n
\n
\n
\n
\n
\n

publish_seq [required]

\n
\n

int64

\n

The sequential publication number for this form.

\n
\n \n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this publication.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this publication.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

self_service [required]

\n
\n

boolean

\n

Whether the form is available in the self-service catalog.

\n
\n \n
\n
\n
\n
\n
\n

single_response [required]

\n
\n

boolean

\n

Whether each user can only submit one response.

\n
\n \n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this form.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this form.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

object

\n

The attributes of a form version.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

The time at which the version was created.

\n
\n \n
\n
\n
\n
\n
\n

data_definition [required]

\n
\n

object

\n

A JSON Schema definition that describes the form's data fields.

\n
\n
\n
\n
\n
\n

$defs

\n
\n

object

\n

The definitions of the form fields.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

A description shown to form respondents.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

object

\n

A map of field names to their JSON Schema definitions.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

[string]

\n

List of field names that must be answered.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

The title of the form schema.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The root schema type. Always "object". \nAllowed enum values: object

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

definition_signature [required]

\n
\n

string

\n

The signature of the version definition.

\n
\n \n
\n
\n
\n
\n
\n

etag [required]

\n
\n

string

\n

The ETag for optimistic concurrency control.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the form version.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

The time at which the version was last modified.

\n
\n \n
\n
\n
\n
\n
\n

state [required]

\n
\n

enum

\n

The state of a form version. \nAllowed enum values: draft,frozen

\n
\n \n
\n
\n
\n
\n
\n

ui_definition [required]

\n
\n

object

\n

UI configuration for rendering form fields, including widget overrides, field ordering, and themes.

\n
\n
\n
\n
\n
\n

ui:order

\n
\n

[string]

\n

The order in which form fields are displayed.

\n
\n \n
\n
\n
\n
\n
\n

ui:theme

\n
\n

object

\n

The visual theme applied to the form.

\n
\n
\n
\n
\n
\n

primaryColor

\n
\n

enum

\n

The primary color of the form theme. \nAllowed enum values: gray,red,orange,yellow,green,light-blue,dark-blue,magenta,indigo

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

user_id [required]

\n
\n

int64

\n

The ID of the user who created this version.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid [required]

\n
\n

uuid

\n

The UUID of the user who created this version.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

The sequential version number.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the form.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The resource type for a form. \nAllowed enum values: forms

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "401": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + } +} \ No newline at end of file diff --git a/content/en/api/v2/forms/request.CreateAndPublishForm.json b/content/en/api/v2/forms/request.CreateAndPublishForm.json new file mode 100644 index 00000000000..df41a570a07 --- /dev/null +++ b/content/en/api/v2/forms/request.CreateAndPublishForm.json @@ -0,0 +1,14 @@ +{ + "data": { + "attributes": { + "anonymous": false, + "data_definition": {}, + "description": "A form to collect user feedback.", + "idp_survey": false, + "name": "User Feedback Form", + "single_response": false, + "ui_definition": {} + }, + "type": "forms" + } +} \ No newline at end of file diff --git a/content/en/api/v2/forms/request.CreateForm.json b/content/en/api/v2/forms/request.CreateForm.json new file mode 100644 index 00000000000..df41a570a07 --- /dev/null +++ b/content/en/api/v2/forms/request.CreateForm.json @@ -0,0 +1,14 @@ +{ + "data": { + "attributes": { + "anonymous": false, + "data_definition": {}, + "description": "A form to collect user feedback.", + "idp_survey": false, + "name": "User Feedback Form", + "single_response": false, + "ui_definition": {} + }, + "type": "forms" + } +} \ No newline at end of file diff --git a/data/api/v2/CodeExamples.json b/data/api/v2/CodeExamples.json index b8638a543aa..fb703c80a8f 100644 --- a/data/api/v2/CodeExamples.json +++ b/data/api/v2/CodeExamples.json @@ -800,6 +800,20 @@ "description": "Update targeting rules for a flag in an environment returns \"OK\" response" } ], + "CreateForm": [ + { + "group": "forms", + "suffix": "", + "description": "Create a form returns \"OK\" response" + } + ], + "CreateAndPublishForm": [ + { + "group": "forms", + "suffix": "", + "description": "Create and publish a form returns \"OK\" response" + } + ], "MakeGCPSTSDelegate": [ { "group": "gcp_integration", diff --git a/data/api/v2/full_spec.yaml b/data/api/v2/full_spec.yaml index 5a234f0ddde..c6155e88e86 100644 --- a/data/api/v2/full_spec.yaml +++ b/data/api/v2/full_spec.yaml @@ -23128,6 +23128,57 @@ components: required: - data type: object + CreateFormData: + description: The data for creating a form. + properties: + attributes: + $ref: "#/components/schemas/CreateFormDataAttributes" + type: + $ref: "#/components/schemas/FormType" + required: + - attributes + - type + type: object + CreateFormDataAttributes: + description: The attributes for creating a form. + properties: + anonymous: + description: Whether the form accepts anonymous submissions. + example: false + type: boolean + data_definition: + $ref: "#/components/schemas/FormDataDefinition" + description: + description: The description of the form. + example: A form to collect user feedback. + type: string + idp_survey: + description: Whether the form is an IDP survey. + example: false + type: boolean + name: + description: The name of the form. + example: User Feedback Form + type: string + single_response: + description: Whether each user can only submit one response. + example: false + type: boolean + ui_definition: + $ref: "#/components/schemas/FormUiDefinition" + required: + - data_definition + - name + - ui_definition + type: object + CreateFormRequest: + description: A request to create a form. + properties: + data: + $ref: "#/components/schemas/CreateFormData" + required: + - data + type: object CreateIncidentNotificationRuleRequest: description: Create request for a notification rule. properties: @@ -28819,6 +28870,26 @@ components: required: - data type: object + DeleteFormData: + description: The data returned when a form is deleted. + properties: + id: + description: The ID of the deleted form. + example: 844dfd88-aa84-4db4-8979-e7bdbb9c1dc3 + format: uuid + type: string + type: + $ref: "#/components/schemas/FormType" + required: + - id + - type + type: object + DeleteFormResponse: + description: A response returned after deleting a form. + properties: + data: + $ref: "#/components/schemas/DeleteFormData" + type: object DeletedSuiteResponseData: description: Data object for a deleted Synthetic test suite. properties: @@ -36900,6 +36971,236 @@ components: type: string x-enum-varnames: - FLUTTER_SYMBOL_FILE + FormData: + description: A form resource object. + properties: + attributes: + $ref: "#/components/schemas/FormDataAttributes" + id: + description: The ID of the form. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + format: uuid + type: string + type: + $ref: "#/components/schemas/FormType" + required: + - id + - type + - attributes + type: object + FormDataAttributes: + description: The attributes of a form. + properties: + active: + description: Whether the form is currently active. + example: true + type: boolean + anonymous: + description: Whether the form accepts anonymous submissions. + example: false + type: boolean + created_at: + description: The time at which the form was created. + example: "2026-05-29T20:06:13.677353Z" + format: date-time + type: string + datastore_config: + $ref: "#/components/schemas/FormDatastoreConfigAttributes" + description: + description: The description of the form. + example: A form to collect user feedback. + type: string + end_date: + description: The date and time at which the form stops accepting responses. + example: + format: date-time + nullable: true + type: string + has_submitted: + description: Whether the current user has already submitted this form. Only present for forms with `single_response` set to `true`. + nullable: true + type: boolean + idp_survey: + description: Whether the form is an IDP survey. + example: false + type: boolean + modified_at: + description: The time at which the form was last modified. + example: "2026-05-29T20:06:13.677353Z" + format: date-time + type: string + name: + description: The name of the form. + example: User Feedback Form + type: string + org_id: + description: The ID of the organization that owns this form. + example: 2 + format: int64 + type: integer + publication: + $ref: "#/components/schemas/FormPublicationAttributes" + self_service: + description: Whether the form is available in the self-service catalog. + example: false + type: boolean + single_response: + description: Whether each user can only submit one response. + example: false + type: boolean + user_id: + description: The ID of the user who created this form. + example: 10001 + format: int64 + type: integer + user_uuid: + description: The UUID of the user who created this form. + example: 1fc709aa-be19-4539-a47d-52a30d78a978 + format: uuid + type: string + version: + $ref: "#/components/schemas/FormVersionAttributes" + required: + - active + - anonymous + - created_at + - datastore_config + - description + - idp_survey + - modified_at + - name + - org_id + - self_service + - single_response + - user_id + - user_uuid + type: object + FormDataDefinition: + additionalProperties: {} + description: A JSON Schema definition that describes the form's data fields. + properties: + $defs: + additionalProperties: {} + description: The definitions of the form fields. + type: object + description: + description: A description shown to form respondents. + example: Welcome to the Engineering Experience Survey. + type: string + properties: + additionalProperties: {} + description: A map of field names to their JSON Schema definitions. + type: object + required: + description: List of field names that must be answered. + items: + type: string + type: array + title: + description: The title of the form schema. + example: Developer Experience Survey + type: string + type: + $ref: "#/components/schemas/FormDataDefinitionType" + type: object + FormDataDefinitionType: + description: The root schema type. Always "object". + enum: + - object + type: string + x-enum-varnames: + - OBJECT + FormDataList: + description: A list of form resource objects. + items: + $ref: "#/components/schemas/FormData" + type: array + FormDatastoreConfigAttributes: + description: The datastore configuration for a form. + properties: + datastore_id: + description: The ID of the datastore. + example: 5108ea24-dd83-4696-9caa-f069f73d0fad + format: uuid + type: string + primary_column_name: + description: The name of the primary column in the datastore. + example: id + type: string + primary_key_generation_strategy: + description: The strategy used to generate primary keys in the datastore. + example: none + type: string + required: + - datastore_id + - primary_column_name + - primary_key_generation_strategy + type: object + FormPublicationAttributes: + description: The attributes of a form publication. + properties: + created_at: + description: The time at which the publication was created. + example: "2026-05-29T20:06:13.677353Z" + format: date-time + type: string + form_id: + description: The ID of the form. + example: afc67600-0511-43b1-9b18-578fb4979bd3 + format: uuid + type: string + form_version: + description: The version number that was published. + example: 1 + format: int64 + type: integer + id: + description: The ID of the form publication. + example: "42" + type: string + modified_at: + description: The time at which the publication was last modified. + example: "2026-05-29T20:06:13.677353Z" + format: date-time + type: string + org_id: + description: The ID of the organization that owns this publication. + example: 2 + format: int64 + type: integer + publish_seq: + description: The sequential publication number for this form. + example: 1 + format: int64 + type: integer + user_id: + description: The ID of the user who created this publication. + example: 10001 + format: int64 + type: integer + user_uuid: + description: The UUID of the user who created this publication. + example: 1fc709aa-be19-4539-a47d-52a30d78a978 + format: uuid + type: string + required: + - created_at + - form_id + - form_version + - modified_at + - org_id + - publish_seq + - user_id + - user_uuid + type: object + FormResponse: + description: A response containing a single form. + properties: + data: + $ref: "#/components/schemas/FormData" + required: + - data + type: object FormTrigger: description: "Trigger a workflow from a Form." properties: @@ -36918,6 +37219,132 @@ components: required: - formTrigger type: object + FormType: + description: The resource type for a form. + enum: + - forms + example: forms + type: string + x-enum-varnames: + - FORMS + FormUiDefinition: + additionalProperties: {} + description: UI configuration for rendering form fields, including widget overrides, field ordering, and themes. + properties: + "ui:order": + description: The order in which form fields are displayed. + items: + type: string + type: array + "ui:theme": + $ref: "#/components/schemas/FormUiDefinitionUiTheme" + type: object + FormUiDefinitionUiTheme: + description: The visual theme applied to the form. + properties: + primaryColor: + $ref: "#/components/schemas/FormUiDefinitionUiThemePrimaryColor" + type: object + FormUiDefinitionUiThemePrimaryColor: + description: The primary color of the form theme. + enum: + - gray + - red + - orange + - yellow + - green + - light-blue + - dark-blue + - magenta + - indigo + type: string + x-enum-varnames: + - GRAY + - RED + - ORANGE + - YELLOW + - GREEN + - LIGHT_BLUE + - DARK_BLUE + - MAGENTA + - INDIGO + FormVersionAttributes: + description: The attributes of a form version. + properties: + created_at: + description: The time at which the version was created. + example: "2026-05-29T20:06:14.895921Z" + format: date-time + type: string + data_definition: + $ref: "#/components/schemas/FormDataDefinition" + definition_signature: + description: The signature of the version definition. + example: '{"signature":"b7f312957a80cea2c8c9950532b205a90a3f8a7ebb7e52fc25437a25d903d545","version":1}' + type: string + etag: + description: The ETag for optimistic concurrency control. + example: b51f08b698d88d8027a935d9db649774949f5fb41a0c559bfee6a9a13225c72d + nullable: true + type: string + id: + description: The ID of the form version. + example: "126" + type: string + modified_at: + description: The time at which the version was last modified. + example: "2026-05-29T20:06:14.949163Z" + format: date-time + type: string + state: + $ref: "#/components/schemas/FormVersionState" + ui_definition: + $ref: "#/components/schemas/FormUiDefinition" + user_id: + description: The ID of the user who created this version. + example: 10001 + format: int64 + type: integer + user_uuid: + description: The UUID of the user who created this version. + example: 1fc709aa-be19-4539-a47d-52a30d78a978 + format: uuid + type: string + version: + description: The sequential version number. + example: 1 + format: int64 + type: integer + required: + - created_at + - data_definition + - definition_signature + - etag + - modified_at + - state + - ui_definition + - user_id + - user_uuid + - version + type: object + FormVersionState: + description: The state of a form version. + enum: + - draft + - frozen + example: frozen + type: string + x-enum-varnames: + - DRAFT + - FROZEN + FormsResponse: + description: A response containing a list of forms. + properties: + data: + $ref: "#/components/schemas/FormDataList" + required: + - data + type: object FormulaLimit: description: |- Message for specifying limits to the number of values returned by a query. @@ -125851,6 +126278,335 @@ paths: permissions: - feature_flag_config_write - feature_flag_environment_config_read + /api/v2/forms: + get: + description: Get all forms for the authenticated user's organization. + operationId: ListForms + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 00000000-0000-0000-0000-000000000000 + primary_column_name: "" + primary_key_generation_strategy: "" + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:14.895285Z" + name: User Feedback Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List forms + tags: + - Forms + x-menu-order: 1 + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + post: + description: Create a new form. + operationId: CreateForm + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + anonymous: false + data_definition: {} + description: A form to collect user feedback. + idp_survey: false + name: User Feedback Form + single_response: false + ui_definition: {} + type: forms + schema: + $ref: "#/components/schemas/CreateFormRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 5108ea24-dd83-4696-9caa-f069f73d0fad + primary_column_name: id + primary_key_generation_strategy: none + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:14.895285Z" + name: User Feedback Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create a form + tags: + - Forms + x-menu-order: 2 + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/forms/create_and_publish: + post: + description: Creates a new form and immediately publishes its initial version. + operationId: CreateAndPublishForm + requestBody: + content: + application/json: + examples: + default: + value: + data: + attributes: + anonymous: false + data_definition: {} + description: A form to collect user feedback. + idp_survey: false + name: User Feedback Form + single_response: false + ui_definition: {} + type: forms + schema: + $ref: "#/components/schemas/CreateFormRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 5108ea24-dd83-4696-9caa-f069f73d0fad + primary_column_name: id + primary_key_generation_strategy: none + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:14.895285Z" + name: User Feedback Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Create and publish a form + tags: + - Forms + x-menu-order: 3 + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/forms/{form_id}: + delete: + description: Delete a form by its ID. + operationId: DeleteForm + parameters: + - description: The ID of the form. + example: 844dfd88-aa84-4db4-8979-e7bdbb9c1dc3 + in: path + name: form_id + required: true + schema: + format: uuid + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + id: 844dfd88-aa84-4db4-8979-e7bdbb9c1dc3 + type: forms + schema: + $ref: "#/components/schemas/DeleteFormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Delete a form + tags: + - Forms + x-menu-order: 4 + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + get: + description: Get a form by its ID. + operationId: GetForm + parameters: + - description: The ID of the form. + example: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + in: path + name: form_id + required: true + schema: + format: uuid + type: string + - description: The version of the form to retrieve. Use 'latest' for the most recent draft, 'published' for the last published version, or a specific version number. + in: query + name: version + required: false + schema: + default: latest + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + active: true + anonymous: false + created_at: "2026-05-29T20:06:14.895284Z" + datastore_config: + datastore_id: 5108ea24-dd83-4696-9caa-f069f73d0fad + primary_column_name: id + primary_key_generation_strategy: none + description: A form to collect user feedback. + end_date: + idp_survey: false + modified_at: "2026-05-29T20:06:14.895285Z" + name: User Feedback Form + org_id: 2 + self_service: false + single_response: false + user_id: 10001 + user_uuid: 1fc709aa-be19-4539-a47d-52a30d78a978 + id: 22f6006a-2302-4926-9396-d2dfcf7b0b34 + type: forms + schema: + $ref: "#/components/schemas/FormResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get a form + tags: + - Forms + x-menu-order: 5 + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/hamr: get: description: |- @@ -182973,6 +183729,9 @@ tags: Package Upgrade Deployments (`/upgrade`): - Upgrade the Datadog Agent to specific versions name: Fleet Automation + - description: |- + The Datadog Forms API lets you create and manage forms within the App Builder platform. You can configure form settings, manage versions, publish forms, and handle sharing configurations. + name: Forms - description: |- Configure your Datadog-Google Cloud Platform (GCP) integration directly through the Datadog API. Read more about the [Datadog-Google Cloud Platform integration](https://docs.datadoghq.com/integrations/google_cloud_platform). diff --git a/data/api/v2/translate_actions.json b/data/api/v2/translate_actions.json index 2080ac5860b..81e1ed92093 100644 --- a/data/api/v2/translate_actions.json +++ b/data/api/v2/translate_actions.json @@ -1820,6 +1820,30 @@ "description": "Unarchives a previously archived feature flag,\nmaking it visible in the main list again.", "summary": "Unarchive a feature flag" }, + "ListForms": { + "description": "Get all forms for the authenticated user's organization.", + "summary": "List forms" + }, + "CreateForm": { + "description": "Create a new form.", + "summary": "Create a form", + "request_description": "", + "request_schema_description": "A request to create a form." + }, + "CreateAndPublishForm": { + "description": "Creates a new form and immediately publishes its initial version.", + "summary": "Create and publish a form", + "request_description": "", + "request_schema_description": "A request to create a form." + }, + "DeleteForm": { + "description": "Delete a form by its ID.", + "summary": "Delete a form" + }, + "GetForm": { + "description": "Get a form by its ID.", + "summary": "Get a form" + }, "GetHamrOrgConnection": { "description": "Retrieve the High Availability Multi-Region (HAMR) organization connection details for the authenticated organization.\nThis endpoint returns information about the HAMR connection configuration, including the target organization,\ndatacenter, status, and whether this is the primary or secondary organization in the HAMR relationship.", "summary": "Get HAMR organization connection" diff --git a/data/api/v2/translate_tags.json b/data/api/v2/translate_tags.json index dff58104acb..51e1be4f83d 100644 --- a/data/api/v2/translate_tags.json +++ b/data/api/v2/translate_tags.json @@ -195,6 +195,10 @@ "name": "Fleet Automation", "description": "Manage automated deployments across your fleet of hosts.\n\nFleet Automation provides two types of deployments:\n\nConfiguration Deployments (`/configure`):\n- Apply configuration file changes to target hosts\n- Support merge-patch operations to update specific configuration fields\n- Support delete operations to remove configuration files\n- Useful for updating Datadog Agent settings, integration configs, and more\n\nPackage Upgrade Deployments (`/upgrade`):\n- Upgrade the Datadog Agent to specific versions" }, + "forms": { + "name": "Forms", + "description": "The Datadog Forms API lets you create and manage forms within the App Builder platform. You can configure form settings, manage versions, publish forms, and handle sharing configurations." + }, "gcp-integration": { "name": "GCP Integration", "description": "Configure your Datadog-Google Cloud Platform (GCP) integration directly\nthrough the Datadog API. Read more about the [Datadog-Google Cloud Platform integration](https://docs.datadoghq.com/integrations/google_cloud_platform)."