---
title: "Publish a Test task flow for copilot"
method: POST
path: "/api/servicetodo/processes/taskFlows/{taskFlowIdentifier}/publishForCopilot"
tags: ["taskFlows"]
---

# Publish a Test task flow for copilot

`POST /api/servicetodo/processes/taskFlows/{taskFlowIdentifier}/publishForCopilot`

## Request

- Base URL: `https://services.fountain.com`
- URL: `https://services.fountain.com/api/servicetodo/processes/taskFlows/{taskFlowIdentifier}/publishForCopilot`
- Auth: HTTP bearer

## Path parameters

- `taskFlowIdentifier` string, uuid, required

## Response `200`

Published test task flow

- object
  - `data` object
    - `uuid` string, uuid
    - `createdAt` string, date-time
    - `createdBy` string, uuid
    - `lastUpdatedAt` string, date-time
    - `lastUpdatedBy` string, uuid
    - `lastUpdatedByAudience` string
    - `lastUpdatedByAudienceUuid` string, uuid
    - `lastUpdatedByImpersonatedBy` string, uuid
    - `lastUpdatedByCompanyUuid` string, uuid
    - `lastUpdatedByEnterpriseUuid` string, uuid
    - `companyUuid` string, uuid, required
    - `status` 'draft' | 'published' | 'archived', required
    - `title` string, required
    - `internalName` string
    - `description` string
    - `taskUuids` string[]
    - `isTaskFlowSequential` boolean
    - `virtualTasks` object[]
      - `uuid` string, uuid
      - `createdAt` string, date-time
      - `createdBy` string, uuid
      - `lastUpdatedAt` string, date-time
      - `lastUpdatedBy` string, uuid
      - `lastUpdatedByAudience` string
      - `lastUpdatedByAudienceUuid` string, uuid
      - `lastUpdatedByImpersonatedBy` string, uuid
      - `lastUpdatedByCompanyUuid` string, uuid
      - `lastUpdatedByEnterpriseUuid` string, uuid
      - `companyUuid` string, uuid, required
      - `title` string, required
      - `description` string
      - `taskType` 'dataCollection' | 'informationSharing' | 'training' | 'backgroundCheck' | 'tinCheck' | 'i9' | 'w4' | 'documentSigning' | 'universal' | 'partnerTask' | 'video' | 'internalDataReview' | 'internalExternalAction' | 'compliance', required
      - `subType` 'default' | 'iframe' | 'webhook' | 'workato' | 'youtube'
      - `estimatedCompletionMinutes` number
      - `content` object
        - `buttonLabel` string
        - `text` string
        - `attachments` object[]: Optional list of file attachments associated with an information-sharing task. Files are stored in service-media under the ATTACHMENTS storage folder and referenced here by UUID.
          - `storedFileUuid` string, uuid, required
          - `filename` string, required
          - `mimeType` string, required
        - `uuid` string
        - `title` string
        - `subtitle` string
        - `description` string
        - `inputs` object[]
          - `uuid` string
          - `title` string
          - `subtitle` string
          - `description` string
          - `inputType` 'string' | 'select' | 'media' | 'date' | 'number' | 'address' | 'bankAcctNumber' | 'bankRoutingNumber' | 'phone' | 'email'
          - `required` boolean
          - `items` object[]
            - `label` string
            - `value` string
          - `style` 'select' | 'multiSelect' | 'checkbox' | 'radio' | 'default' | 'textarea'
          - `config` object
            - `minSelect` number
            - `maxSelect` number
            - `minValue` number
            - `maxValue` number
            - `hasMaxLength` boolean
            - `minLength` number
            - `maxLength` number
            - `placeholder` string
            - `datePast` boolean
            - `dateFuture` boolean
            - `allowMultiple` boolean: Media input — when true, the worker may upload multiple files; the stored value becomes an array of media objects.
          - `customAttribute` object
            - `label` string
            - `uuid` string, required
            - `key` string
        - `options` object
        - `signDoc` object, nullable
          - `uuid` string, uuid
          - `createdAt` string, date-time
          - `createdBy` string, uuid
          - `lastUpdatedAt` string, date-time
          - `lastUpdatedBy` string, uuid
          - `lastUpdatedByAudience` string
          - `lastUpdatedByAudienceUuid` string, uuid
          - `lastUpdatedByImpersonatedBy` string, uuid
          - `lastUpdatedByCompanyUuid` string, uuid
          - `lastUpdatedByEnterpriseUuid` string, uuid
          - `name` string, required
          - `technicalName` string
          - `fileUrls` string[]
          - `mergeKeys` string[]
          - `templateId` string
          - `editEmbedUrl` string
          - `companyUuid` string, uuid: Owning company. The NIL uuid marks an enterprise-level template, shared with every company in `enterpriseUuid`.
          - `enterpriseUuid` string, uuid: Owning enterprise. Only set when `companyUuid` is the NIL uuid.
          - `technical` boolean
          - `counterSignEnabled` boolean
          - `coSignerRequired` boolean
          - `coSignerEmailCustomAttributeKey` string
          - `editUrl` string: Edit URL for embedded templates created via templateCreateEmbeddedDraft
          - `editUrlExpiresAt` number: Expiration timestamp (milliseconds) for the editUrl. Used to determine if editUrl is still valid.
        - `signDocUuid` string
        - `section2CompletionMethods` object[]
          - `methodName` 'authorizedRepresentative' | 'adminValidation' | 'onSiteVerification' | 'liveVideoVerification', required
          - `requiredDuration` number
          - `calendarGroupUuid` string
          - `eventDescription` string
          - `recommended` boolean
          - `reminder` number
          - `customConferencingEnabled` boolean
          - `customConferencing` object
            - `providerDescription` string
            - `joinUrl` string, url
        - `url` string
        - `bgcProvider` string
        - `bgcPackage` string
        - `tinProvider` string
        - `endEvent` string
        - `hideCompletedButton` boolean
        - `appendWxQueryParams` boolean
        - `displayMode` 'iframe' | 'newTab'
        - `sensitiveData` boolean
        - `useI9C2PayloadFormat` boolean
        - `signingSecret` string: Encrypted HMAC-SHA256 signing secret for webhook deliveries. Obtain via POST /processes/tasks/webhookSigningSecret; the value stored here is the encrypted form and cannot be used to verify signatures. When set, every delivery includes X-Fountain-Signature and X-Fountain-Timestamp headers.
        - `customHeaders` object[]: Custom HTTP headers included in every webhook delivery for this endpoint. Each value must be the encrypted form returned by POST /processes/tasks/webhookCustomHeaderValue — never the clear text; a write carrying any other value is rejected, so a credential is never stored in clear text. Names must follow HTTP naming rules and cannot be a header Fountain already sets (Content-Type, Accept, X-Fountain-*, and transport headers). A delivery with an invalid header set is not sent and is recorded as an error on the assigned task.
          - `name` string, required
          - `value` string, required: encrypted header value
        - `triggerableType` 'flow' | 'task'
        - `triggerableTaskUuid` string
        - `companyAttributeSetUuid` string
        - `companyAttributeSet` object, nullable
          - `uuid` string, uuid
          - `createdAt` string, date-time
          - `createdBy` string, uuid
          - `lastUpdatedAt` string, date-time
          - `lastUpdatedBy` string, uuid
          - `lastUpdatedByAudience` string
          - `lastUpdatedByAudienceUuid` string, uuid
          - `lastUpdatedByImpersonatedBy` string, uuid
          - `lastUpdatedByCompanyUuid` string, uuid
          - `lastUpdatedByEnterpriseUuid` string, uuid
          - `companyUuid` string, required
          - `label` string, required
          - `description` string
          - `companyAttributes` object[]
            - `companyAttributeUuid` string
            - `value` union
              - …
            - `companyAttribute` object
              - …
          - `attachedTo` object
            - `model` 'location' | 'locationGroup' | 'job' | 'opening'
            - `uuid` string
        - `customAttribute` object
          - `label` string
          - `uuid` string, required
          - `key` string
        - `instructionNotes` string
        - `attributesToReview` string[]
        - `requirementUuid` string, uuid: UUID of the compliance requirement from service-compliancev2
      - `requireReview` boolean
      - `reviewerEmployerUuids` string[]: Who reviews this task: employer uuids, or the roles supervisor and opening_owner resolved per worker. Allowed only when requireReview is true. Empty names no specific reviewer.
      - `reuseInRehire` boolean: When true (default), the task completion is carried over to the rehire profile. When false, the task starts incomplete in the rehire profile. Ignored for I-9, W-4, Background Check, and TIN Check tasks (always start incomplete).
      - `rehireReuseMode` 'complete' | 'review': How a reused task is applied on rehire. 'complete' (default when absent) copies the previous answers and marks the task complete. 'review' prefills the previous answers but leaves the task incomplete for the worker to review and submit. Only consulted when reuseInRehire is not false.
      - `signedDocumentEmail` object: Email the signed PDF to the worker and these admins when a document-signing task's request is fully signed. Entries are employer uuids or `supervisor` / `opening_owner`. Document-signing tasks only.
        - `enabled` boolean, required
        - `recipientEmployerUuids` string[]
      - `isInternal` boolean
      - `internalTaskData` object
        - `employerUuids` string[]
        - `trigger` object
          - `type` string
          - `taskUuid` string
    - `segmentUuids` string[]
    - `virtualSegments` object[]
      - `uuid` string, uuid
      - `createdAt` string, date-time
      - `createdBy` string, uuid
      - `lastUpdatedAt` string, date-time
      - `lastUpdatedBy` string, uuid
      - `lastUpdatedByAudience` string
      - `lastUpdatedByAudienceUuid` string, uuid
      - `lastUpdatedByImpersonatedBy` string, uuid
      - `lastUpdatedByCompanyUuid` string, uuid
      - `lastUpdatedByEnterpriseUuid` string, uuid
      - `name` string, required
      - `description` string
      - `filters` string
      - `filterValues` string
      - `pipeline` string
      - `reference` object: For automatic segments, set a reference to make it easier to retrieve/update/delete when that reference changes
      - `companyUuid` string, uuid
      - `subscriptions` object[]
        - `service` 'activity' | 'attendance' | 'authorization' | 'broker' | 'compliance' | 'compliancev2' | 'communicate' | 'doctor' | 'employment' | 'integrations' | 'logger' | 'media' | 'messaging' | 'ocr' | 'occupations-mcp' | 'organizations' | 'pool' | 'pulse' | 'referral' | 'scheduler' | 'security' | 'segmentation' | 'staff' | 'support' | 'todo' | 'workforce'
        - `key` string
      - `segmentType` 'unitary' | 'default' | 'automatic' | 'observer' | 'worker_notification' | 'employer_notification'
      - `forceMatch` boolean: if true, will match worker even if they have the property `segmentEnabled` to true
      - `dynamicFilters` object, nullable
        - `event` string, required
        - `eventOffsetDirection` 'before' | 'after' | 'on', required
        - `offsetDays` number
        - `finalOffsetDirection` 'before' | 'after' | 'on'
      - `observerRecurrence` object, nullable
        - `type` 'annual', required
      - `observerTemplate` boolean: when enabled, this is meant to be a template/blueprint for actual observerSegments
      - `baseObserverSegmentUuids` string[]
      - `timezone` string
    - `autoAssignToNewWorkers` boolean
    - `taskFlowType` 'preboarding' | 'onboarding' | 'test'
    - `messages` object
      - `email` object
        - `enabled` boolean, required
        - `subject` string, required
        - `content` string, required
      - `sms` object
        - `enabled` boolean, required
        - `content` string, required
    - `internalTaskMessages` object
      - `email` object
        - `enabled` boolean, required
        - `subject` string
        - `content` string
    - `deadline` object
      - `enabled` boolean, required
      - `delayInDays` number
      - `triggerProperty` 'hireDate' | 'startDate' | 'assignmentDate'
      - `reminder` boolean
      - `remindBeforeDays` number
    - `reminder` object
      - `enabled` boolean, required
      - `recurringDays` number
      - `messages` object
        - `email` object
          - `enabled` boolean, required
          - `subject` string, required
          - `content` string, required
        - `sms` object
          - `enabled` boolean, required
          - `content` string, required
    - `redirectUrl` string, uri
    - `workerCounts` object
      - `total` number
      - `notStarted` number
      - `inProgress` number
      - `completed` number
      - `overdue` number
      - `error` number
      - `toReview` number
      - `rejected` number
    - `currentVersionUuid` string, uuid
    - `currentVersionNumber` number
    - `currentVersionCreatedAt` string, date-time
  - `meta` ResponsesPartMeta
    - `timestamp` string, date-time, required
    - `verb` 'OPTION' | 'GET' | 'PUT' | 'POST' | 'PATCH' | 'DELETE'
    - `path` string
    - `jti` string
    - `rid` string
    - `count` number
    - `capped` boolean: The server lowered filter[limit] to its ceiling. Page with filter[skip] to read past it.
    - `status` string
    - `duration` number
    - `size` number

---

[API](https://skmtc.dev/fountain/apis/worker-experience-public-api.md) - [All operations](https://skmtc.dev/fountain/apis/worker-experience-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fountain/apis/worker-experience-public-api/revisions/6b9a31f79e22?raw)
