Marketo Forms API

Form Controller

OpenAPI Specification

marketo-forms-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Marketo Engage Rest Approve Forms API
  description: Marketo exposes a REST API which allows for remote execution of many of the systems capabilities. From creating programs to bulk lead import, there are many options which allow fine-grained control of a Marketo instance.
  termsOfService: https://www.adobe.com/legal.html
  contact:
    name: Adobe Developer Relations
    url: https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/home
    email: developerfeedback@marketo.com
  license:
    name: API License Agreement
    url: https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/api-license
  version: '1.0'
servers:
- url: https://localhost:8080/
tags:
- name: Forms
  description: Form Controller
paths:
  /rest/asset/v1/form/byName.json:
    get:
      tags:
      - Forms
      summary: Marketo Get Form by Name
      description: 'Retrieves a form record by its name. Required Permissions: Read-Only Assets, Read-Write Assets'
      operationId: getLpFormByNameUsingGET
      parameters:
      - name: name
        in: query
        description: Name of the form
        required: true
        schema:
          type: string
      - name: status
        in: query
        description: Status filter for draft or approved versions
        schema:
          type: string
          enum:
          - approved
          - draft
      - name: folder
        in: query
        description: JSON representation of parent folder, with members 'id', and 'type' which may be 'Folder' or 'Program'
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfLpFormResponse'
  /rest/asset/v1/form/{formId}/field/{fieldId}/visibility.json:
    post:
      tags:
      - Forms
      summary: Marketo Add Form Field Visibility Rules
      description: 'Adds a visibility rule to the target form field. Required Permissions: Read-Write Assets'
      operationId: addFormFieldVisibilityRuleUsingPOST
      parameters:
      - name: formId
        in: path
        description: formId
        required: true
        schema:
          type: integer
          format: int32
      - name: fieldId
        in: path
        description: fieldId
        required: true
        schema:
          type: string
      requestBody:
        description: addFormFieldVisibilityRequest
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AddFormFieldVisibilityRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfFormVisibilityRuleResponse'
      x-codegen-request-body-name: addFormFieldVisibilityRequest
  /rest/asset/v1/form/{id}.json:
    get:
      tags:
      - Forms
      summary: Marketo Get Form By Id
      description: 'Retrieves a form record by its id. Required Permissions: Read-Only Assets, Read-Write Assets'
      operationId: getLpFormByIdUsingGET
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
          format: int32
      - name: status
        in: query
        description: Status filter for draft or approved versions
        schema:
          type: string
          enum:
          - approved
          - draft
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfLpFormResponse'
    post:
      tags:
      - Forms
      summary: Marketo Update Form Metadata
      description: 'Updates the metadata of the target form. Required Permissions: Read-Write Assets'
      operationId: updateFormsUsingPOST
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        description: updateFormMetaDataRequest
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UpdateFormMetaDataRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfLpFormResponse'
      x-codegen-request-body-name: updateFormMetaDataRequest
  /rest/asset/v1/form/{id}/approveDraft.json:
    post:
      tags:
      - Forms
      summary: Marketo Approve Form Draft
      description: 'Approves the current draft of the form. This will delete the current approved version of the form. Required Permissions: Approve Assets'
      operationId: approveFromUsingPOST
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfLpFormResponse'
  /rest/asset/v1/form/{id}/clone.json:
    post:
      tags:
      - Forms
      summary: Marketo Clone Form
      description: 'Clones the target form. Required Permissions: Read-Write Assets'
      operationId: cloneLpFormsUsingPOST
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        description: cloneFormRequest
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CloneFormRequest'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfLpFormResponse'
      x-codegen-request-body-name: cloneFormRequest
  /rest/asset/v1/form/{id}/delete.json:
    post:
      tags:
      - Forms
      summary: Marketo Delete Form
      description: 'Deletes the target form. Forms which are in use by landing pages may not be deleted until they are removed from all landing pages. Required Permissions: Read-Write Assets'
      operationId: deleteFormByIdUsingPOST
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfIdResponse'
  /rest/asset/v1/form/{id}/discardDraft.json:
    post:
      tags:
      - Forms
      summary: Marketo Discard Form Draft
      description: 'Discards the current draft of the form. Required Permissions: Read-Write Assets'
      operationId: discardFormByIdUsingPOST
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfIdResponse'
  /rest/asset/v1/form/{id}/submitButton.json:
    post:
      tags:
      - Forms
      summary: Marketo Update Submit Button
      description: 'Updates the submit button configuration for the target form. Required Permissions: Read-Write Assets'
      operationId: updateFormSubmitButtonUsingPOST
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        description: submitButtonRequest
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SubmitButtonRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfLpFormResponse'
      x-codegen-request-body-name: submitButtonRequest
  /rest/asset/v1/form/{id}/thankYouPage.json:
    get:
      tags:
      - Forms
      summary: Marketo Get Thank You Page by Form Id
      description: 'Returns the thank you page configuration for a given form. Required Permissions: Read-Only Assets, Read-Write Assets'
      operationId: getThankYouPageByIdUsingGET
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
          format: int32
      - name: status
        in: query
        description: Status filter for draft or approved versions
        schema:
          type: string
          enum:
          - approved
          - draft
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfThankYouPageResponse'
    post:
      tags:
      - Forms
      summary: Marketo Update Thank You Page
      description: 'Updates the thank you page configuration for a given form. This update is destructive and the resulting draft will not have any memory of the previous configuration. Required Permissions: Read-Only Assets, Read-Write Assets'
      operationId: updateThankYouPageByIdUsingPOST
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        description: thankYouPageRequest
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UpdateThankYouPageRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfThankYouPageResponse'
      x-codegen-request-body-name: thankYouPageRequest
  /rest/asset/v1/forms.json:
    get:
      tags:
      - Forms
      summary: Marketo Get Forms
      description: 'Retrieves a list of accessible form records from the target instance. Required Permissions: Read-Only Assets, Read-Write Assets'
      operationId: browseForms2UsingGET
      parameters:
      - name: status
        in: query
        description: Status filter for draft or approved versions
        schema:
          type: string
          enum:
          - approved
          - draft
      - name: folder
        in: query
        description: JSON representation of parent folder, with members 'id', and 'type' which may be 'Folder' or 'Program'
        required: true
        schema:
          type: string
      - name: maxReturn
        in: query
        description: Maximum number of channels to return. Max 200, default 20
        schema:
          type: string
      - name: offset
        in: query
        description: Integer offset for paging
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfLpFormResponse'
    post:
      tags:
      - Forms
      summary: Marketo Create Form
      description: 'Creates a new form. Required Permissions: Read-Write Assets'
      operationId: createLpFormsUsingPOST
      requestBody:
        description: createFormRequest
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateLpFormRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfLpFormResponse'
      x-codegen-request-body-name: createFormRequest
  /rest/asset/v1/form/{id}/usedBy.json:
    get:
      tags:
      - Forms
      summary: Marketo Get Form Used By
      description: 'Returns a list of asset records which depend on a given form. Required Permissions: Read-Only Assets, Read-Write Assets'
      operationId: getFormUsedByUsingGET
      parameters:
      - name: id
        in: path
        description: Id of the form
        required: true
        schema:
          type: integer
          format: int32
      - name: offset
        in: query
        description: Integer offset for paging
        schema:
          type: integer
          format: int32
      - name: maxReturn
        in: query
        description: Maximum number of assets to return. Max 200, default 20
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseOfFormUsedByResponse'
components:
  schemas:
    Folder:
      required:
      - id
      - type
      type: object
      properties:
        id:
          type: integer
          description: Id of the folder
          format: int32
        type:
          type: string
          description: Type of folder
          enum:
          - Folder
          - Program
      description: JSON representation of a folder
    VisibilityRuleRequest:
      required:
      - operator
      - subjectField
      - values
      type: object
      properties:
        altLabel:
          type: string
        operator:
          type: string
          description: Operation to apply to target field. Evaluated against the list of values when applicable.
          enum:
          - is
          - isNot
          - isEmpty
          - isNotEmpty
          - startsWith
          - notStartsWith
          - endsWith
          - notEndsWith
          - contains
          - notContains
          - greaterThan
          - lessThan
          - atLeast
          - atMost
          - between
          - notBetween
          - notInTimeFrame
          - inPast
          - notInPast
          - after
          - before
          - inTimeFrame
          - onOrAfter
          - onOrBefore
        pickListValues:
          type: array
          description: Alternative label to display when rules are applied.
          items:
            $ref: '#/components/schemas/PickListDTO'
        subjectField:
          type: string
          description: Target field id to apply the operation defined by operator to
        values:
          type: array
          description: Comma-separated list of values to match against. Valid for operators 'is', 'isNot', 'startsWith', 'notStartsWith', 'endsWith', 'notEndsWith', 'contains', and 'notContains'
          items:
            type: string
    ThankYouPageRequest:
      required:
      - followupType
      - followupValue
      - operator
      - subjectField
      - values
      type: object
      properties:
        default:
          type: boolean
          description: When true, this is the default rule, and will be applied when a user does not qualify for any of the other rules
        followupType:
          type: string
          description: Type of followup. When set to url, will follow to the url set in followupValue. When set to lp, will follow to the Landing page with the id given in followupValue
        followupValue:
          type: string
          description: Where to follow to on submission. Given as a URL or and Integer depending on followupType
        operator:
          type: string
          description: Operator to evaluate aginst the subject field
        subjectField:
          type: string
          description: Field to apply to operator to
        values:
          type: array
          description: Comma-separated list of values to compare to with the operator
          items:
            type: string
    SubmitButtonRequest:
      type: object
      properties:
        buttonPosition:
          type: integer
          description: Location in pixels of the button relative to the left of the form
          format: int32
        buttonStyle:
          type: string
          description: Style of the button
        label:
          type: string
          description: Label text of the button
        waitingLabel:
          type: string
          description: Waiting text of the button
    AddFormFieldVisibilityRequest:
      type: object
      properties:
        visibilityRule:
          $ref: '#/components/schemas/FormFieldVisibilityRequest'
    CloneFormRequest:
      required:
      - folder
      - name
      type: object
      properties:
        name:
          type: string
          description: Name for the cloned form
        folder:
          $ref: '#/components/schemas/Folder'
        description:
          type: string
          description: Description of the cloned form
    FormUsedByResponse:
      required:
      - id
      - name
      - status
      - type
      - updatedAt
      type: object
      properties:
        id:
          type: integer
          description: Id of the asset
          format: int64
        name:
          type: string
          description: Name of the asset
        type:
          type: string
          description: Type of asset
        status:
          type: string
          description: Status filter for draft or approved versions
          enum:
          - approved
          - draft
        updatedAt:
          type: string
          description: Datetime the asset was most recently updated
          format: date-time
    ResponseOfThankYouPageResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
        requestId:
          type: string
        result:
          type: array
          items:
            $ref: '#/components/schemas/ThankYouPageResponse'
        success:
          type: boolean
        warnings:
          type: array
          items:
            type: string
    UpdateThankYouPageRequest:
      type: object
      properties:
        thankyou:
          type: array
          description: JSON array of followup rules
          items:
            $ref: '#/components/schemas/ThankYouPageRequest'
    Error:
      required:
      - code
      - message
      type: object
      properties:
        code:
          type: string
          description: Error code of the error. See full list of error codes <a href="https://developers.marketo.com/rest-api/error-codes/">here</a>
        message:
          type: string
          description: Message describing the cause of the error
    FormVisibilityRuleResponse:
      type: object
      properties:
        formFieldId:
          type: string
        ruleType:
          type: string
        rules:
          type: array
          items:
            $ref: '#/components/schemas/FormVisibilityRuleDTO'
    FormThankYouPageDTO:
      type: object
      properties:
        default:
          type: boolean
        followupType:
          type: string
        followupValue:
          type: object
          properties: {}
        operator:
          type: string
        subjectField:
          type: string
        values:
          type: array
          items:
            type: string
    ThankYouPageResponse:
      type: object
      properties:
        id:
          type: integer
          format: int32
        thankYouList:
          type: array
          items:
            $ref: '#/components/schemas/FormThankYouPageDTO'
    ResponseOfLpFormResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
        requestId:
          type: string
        result:
          type: array
          items:
            $ref: '#/components/schemas/LpFormResponse'
        success:
          type: boolean
        warnings:
          type: array
          items:
            type: string
    FormFieldVisibilityRequest:
      required:
      - ruleType
      - rules
      type: object
      properties:
        ruleType:
          type: string
          description: Type of rule to apply
          enum:
          - show
          - alwaysShow
          - hide
        rules:
          type: array
          description: JSON Array of rules
          items:
            $ref: '#/components/schemas/VisibilityRuleRequest'
    ResponseOfIdResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
        requestId:
          type: string
        result:
          type: array
          items:
            $ref: '#/components/schemas/IdResponse'
        success:
          type: boolean
        warnings:
          type: array
          items:
            type: string
    CreateLpFormRequest:
      required:
      - folder
      type: object
      properties:
        description:
          type: string
          description: Description of the form
        folder:
          $ref: '#/components/schemas/Folder'
        fontFamily:
          type: string
          description: font-family property for the form
        fontSize:
          type: string
          description: font-size property of the form
        knownVisitor:
          $ref: '#/components/schemas/FormKnownVisitorDTO'
        labelPosition:
          type: string
          description: Default positioning of labels.
        language:
          type: string
          description: Language of the form
        locale:
          type: string
          description: Locale of the form
        name:
          type: string
          description: Name of the form
        progressiveProfiling:
          type: boolean
          description: Whether progressive profiling is enabled for the form
        theme:
          type: string
          description: CSS theme for the form to use
    FormKnownVisitorDTO:
      type: object
      properties:
        template:
          type: string
        type:
          type: string
    PickListDTO:
      type: object
      properties:
        isDefault:
          type: boolean
        label:
          type: string
        selected:
          type: boolean
        value:
          type: string
    UpdateFormMetaDataRequest:
      type: object
      properties:
        customCss:
          type: string
          description: Custom CSS to apply to the form
        description:
          type: string
          description: Description of the form
        fontFamily:
          type: string
          description: font-family property for the form
        fontSize:
          type: string
          description: font-size property of the form
        knownVisitor:
          $ref: '#/components/schemas/FormKnownVisitorDTO'
        labelPosition:
          type: string
          description: Default positioning of labels.
        language:
          type: string
          description: Language of the form
        locale:
          type: string
          description: Locale of the form
        name:
          type: string
          description: Name of the form
        progressiveProfiling:
          type: boolean
          description: Whether progressive profiling is enabled for the form
        theme:
          type: string
          description: CSS theme for the form to use
    LpFormResponse:
      required:
      - buttonLabel
      - buttonLocation
      - folder
      - fontFamily
      - fontSize
      - knownVisitor
      - labelPosition
      - language
      - locale
      - progressiveProfiling
      - status
      - thankYouList
      - theme
      - waitingLabel
      type: object
      properties:
        buttonLabel:
          type: string
          description: Label text of the button
        buttonLocation:
          type: integer
          description: Location in pixels of the button relative to the left of the form
          format: int32
        createdAt:
          type: string
          description: Datetime the asset was created
          format: date-time
        description:
          type: string
          description: Description of the asset
        folder:
          $ref: '#/components/schemas/Folder'
        fontFamily:
          type: string
          description: font-family property for the form
        fontSize:
          type: string
          description: font-size property of the form
        id:
          type: integer
          description: Id of the asset
          format: int64
        knownVisitor:
          $ref: '#/components/schemas/FormKnownVisitorDTO'
        labelPosition:
          type: string
          description: Default positioning of labels.
        language:
          type: string
          description: Language of the form
        locale:
          type: string
          description: Locale of the form
        name:
          type: string
          description: Name of the asset
        progressiveProfiling:
          type: boolean
          description: Whether progressive profiling is enabled for the form
        status:
          type: string
          description: Status filter for draft or approved versions
          enum:
          - approved
          - draft
        thankYouList:
          type: array
          description: List of thank you page behaviors for the form
          items:
            $ref: '#/components/schemas/FormThankYouPageDTO'
        theme:
          type: string
          description: CSS theme for the form to use
        updatedAt:
          type: string
          description: Datetime the asset was most recently updated
          format: date-time
        url:
          type: string
          description: Url of the asset in the Marketo UI
        waitingLabel:
          type: string
          description: Waiting text of the button
    ResponseOfFormUsedByResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
        requestId:
          type: string
        result:
          type: array
          items:
            $ref: '#/components/schemas/FormUsedByResponse'
        success:
          type: boolean
        warnings:
          type: array
          items:
            type: string
    FormVisibilityRuleDTO:
      type: object
      properties:
        altLabel:
          type: string
        operator:
          type: string
        picklistFilterValues:
          type: array
          items:
            $ref: '#/components/schemas/PickListDTO'
        subjectField:
          type: string
        values:
          type: array
          items:
            type: string
    IdResponse:
      required:
      - id
      type: object
      properties:
        id:
          type: integer
          description: Id of the asset
          format: int32
    ResponseOfFormVisibilityRuleResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
        requestId:
          type: string
        result:
          type: array
          items:
            $ref: '#/components/schemas/FormVisibilityRuleResponse'
        success:
          type: boolean
        warnings:
          type: array
          items:
            type: string
x-original-swagger-version: '2.0'