---
title: "Create a copy of an internal program and its prerequisites. Roles: admin."
method: POST
path: "/api/certs/{certId}/copy"
tags: ["Programs"]
---

# Create a copy of an internal program and its prerequisites. Roles: admin.

`POST /api/certs/{certId}/copy`

## Path parameters

- `certId` integer, required

## Response `200`

OK

- CertResponseCertFullWithAudience
  - `success` boolean
  - `error` string
  - `cert` CertFullWithAudience
    - `audit` Audit
      - `createdTime` string, date-time
      - `modifiedTime` string, date-time
      - `modifiedBy` string
    - `alternateLocales` object
      - `empty` boolean
    - `certId` integer
    - `membershipId` integer
    - `typeCode` 'CERTIFICATION' | 'CHALLENGE' | 'MEMBERSHIP' | 'PASS'
    - `name` string
    - `shortDescription` string
    - `description` string
    - `external` boolean
    - `required` boolean
    - `audienceId` integer
    - `externalPluginId` integer
    - `externalId` string
    - `externalReferenceId` string
    - `allowAdminEnroll` boolean
    - `allowSelfEnroll` boolean
    - `autoEnrollEnabled` boolean
    - `autoRenewalEnabled` boolean
    - `isOpen` boolean
    - `unlisted` boolean
    - `credits` number
    - `pointsRequired` number, float
    - `renewalPointsRequired` number, float
    - `completionStrategy` 'ALL_PREREQ_COMPLETE' | 'ANY_PREREQ_COMPLETE' | 'EARNED_REQUIRED_POINTS'
    - `renewalStrategy` 'ALL_PREREQ_COMPLETE' | 'ANY_PREREQ_COMPLETE' | 'EARNED_REQUIRED_POINTS'
    - `certificateUuid` string, uuid
    - `certificatesEnabled` boolean
    - `enrollmentNotificationsEnabled` boolean
    - `completionNotificationsEnabled` boolean
    - `imageUuid` string, uuid
    - `openDate` string, date
    - `closeDate` string, date
    - `termIntervalCode` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
    - `termIntervalCount` integer
    - `termStartCode` 'EARN' | 'ENROLL' | 'FIRST_EARN' | 'FIRST_ENROLL' | 'ANCHOR'
    - `expireReminderDays` integer
    - `earlyRenewalDays` integer
    - `renewalGracePeriodDays` integer
    - `renewalAnchorDate` string, date
    - `emailCompletionBody` string
    - `tier` integer
    - `benefitTypeCode` 'PHYSICAL' | 'VIRTUAL' | 'HYBRID'
    - `programCategory` ProgramCategoryCore
      - `audit` Audit
        - `createdTime` string, date-time
        - `modifiedTime` string, date-time
        - `modifiedBy` string
      - `alternateLocales` object
        - `empty` boolean
      - `programCategoryId` integer
      - `membershipId` integer
      - `typeCode` 'CERTIFICATION' | 'CHALLENGE' | 'MEMBERSHIP' | 'PASS'
      - `name` string
      - `description` string
      - `required` boolean
      - `tierBehaviorCode` 'NONE' | 'REPLACE_ON_ENROLL' | 'REPLACE_ON_COMPLETION'
      - `downgradePolicyCode` 'NEVER' | 'DURING_RENEWAL' | 'ALWAYS_NO_REFUND' | 'ALWAYS_REFUND' | 'ALWAYS_REFUND_LESS_FEES'
      - `locale` string
    - `memberCert` MemberCertCore
      - `audit` Audit
        - `createdTime` string, date-time
        - `modifiedTime` string, date-time
        - `modifiedBy` string
      - `token` string, uuid
      - `enrollDate` string, date
      - `firstEnrollDate` string, date
      - `startDate` string, date
      - `earnDate` string, date
      - `firstEarnDate` string, date
      - `renewalEligibleDate` string, date
      - `expireDate` string, date
      - `failDate` string, date
      - `endDate` string, date
      - `creditsEarned` number
      - `pointsEarned` number, float
      - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'EXPIRED'
      - `externalEnrollmentId` string
      - `renewable` boolean
      - `expiresSoon` boolean
    - `prereqs` PrereqFull[]
      - `audit` Audit
        - `createdTime` string, date-time
        - `modifiedTime` string, date-time
        - `modifiedBy` string
      - `alternateLocales` object
        - `empty` boolean
      - `prereqId` integer
      - `name` string
      - `description` string
      - `typeCode` 'ACTIVITY_SUBMISSION' | 'ASSET_COMPLETION' | 'CREDITS_EARNED' | 'EVAL' | 'EVENT_ATTENDANCE' | 'EXTERNAL' | 'OTHER_CERT' | 'SELF_REPORT'
      - `scopeCode` 'PREREQUISITE' | 'RENEWAL'
      - `sequence` integer
      - `required` boolean
      - `expireDate` string, date
      - `expireDays` integer
      - `earlyRenewalDays` integer
      - `lookbackDays` integer
      - `actionLabel` string
      - `points` number, float
      - `creditsMinRequired` number
      - `eventFilters` ContentFilterItem[]
        - `type` 'TAG_CATEGORY' | 'TAG_ID', required
        - `value` string, required
      - `prereqActivityRule` PrereqActivityRuleCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `prereqId` integer
        - `typeCode` 'DAILY_TOTAL' | 'DAILY_TOTAL_STREAK' | 'REVIEWED' | 'TOTAL'
        - `questionId` integer
        - `effectiveDateQuestionId` integer
        - `startDate` string, date
        - `endDate` string, date
        - `minValue` number
        - `maxValue` number
        - `minCount` integer
      - `memberPrereq` MemberPrereqCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `memberPrereqId` integer
        - `startDate` string, date
        - `earliestCompleteDate` string, date
        - `latestCompleteDate` string, date
        - `completeDate` string, date
        - `failDate` string, date
        - `exemptDate` string, date
        - `expireDate` string, date
        - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'EXPIRED'
        - `progress` integer
        - `creditsEarned` number
        - `renewable` boolean
        - `expiresSoon` boolean
        - `actionUrl` string
      - `content` ContentCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `alternateLocales` object
          - `empty` boolean
        - `contentId` integer
        - `contentType` string
        - `membershipId` integer
        - `detail` string
        - `previewing` boolean
        - `subTitle` string
        - `thumbnailImageUuid` string, uuid
        - `title` string
        - `keywords` string
        - `body` string
        - `properties` object
        - `externalPluginId` integer
        - `externalId` string
        - `locale` string
        - `isPublished` boolean
      - `evalForm` EvalFormCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `alternateLocales` object
          - `empty` boolean
        - `evalFormId` integer
        - `membershipId` integer
        - `title` string
        - `description` string
        - `body` string
        - `published` boolean
        - `passTypeCode` 'NONE' | 'PERCENTAGE' | 'POINTS'
        - `passThresholdValue` number
        - `typeCode` 'GROUP_TYPE'
        - `subjectTypeCode` 'GROUP' | 'GROUP_MEMBER' | 'GROUP_MEMBER_SELF'
        - `evaluatorEmailEnabled` boolean
        - `subjectEmailEnabled` boolean
        - `tasksEnabled` boolean
        - `previewEnabled` boolean
        - `descriptionEnabled` boolean
        - `summaryEnabled` boolean
        - `modifyCompletedEvalAllowed` boolean
        - `locale` string
      - `targetCert` CertCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `alternateLocales` object
          - `empty` boolean
        - `certId` integer
        - `membershipId` integer
        - `typeCode` 'CERTIFICATION' | 'CHALLENGE' | 'MEMBERSHIP' | 'PASS'
        - `name` string
        - `shortDescription` string
        - `description` string
        - `external` boolean
        - `required` boolean
        - `audienceId` integer
        - `externalPluginId` integer
        - `externalId` string
        - `externalReferenceId` string
        - `allowAdminEnroll` boolean
        - `allowSelfEnroll` boolean
        - `autoEnrollEnabled` boolean
        - `autoRenewalEnabled` boolean
        - `isOpen` boolean
        - `unlisted` boolean
        - `credits` number
        - `pointsRequired` number, float
        - `renewalPointsRequired` number, float
        - `completionStrategy` 'ALL_PREREQ_COMPLETE' | 'ANY_PREREQ_COMPLETE' | 'EARNED_REQUIRED_POINTS'
        - `renewalStrategy` 'ALL_PREREQ_COMPLETE' | 'ANY_PREREQ_COMPLETE' | 'EARNED_REQUIRED_POINTS'
        - `certificateUuid` string, uuid
        - `certificatesEnabled` boolean
        - `enrollmentNotificationsEnabled` boolean
        - `completionNotificationsEnabled` boolean
        - `imageUuid` string, uuid
        - `openDate` string, date
        - `closeDate` string, date
        - `termIntervalCode` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
        - `termIntervalCount` integer
        - `termStartCode` 'EARN' | 'ENROLL' | 'FIRST_EARN' | 'FIRST_ENROLL' | 'ANCHOR'
        - `expireReminderDays` integer
        - `earlyRenewalDays` integer
        - `renewalGracePeriodDays` integer
        - `renewalAnchorDate` string, date
        - `emailCompletionBody` string
        - `tier` integer
        - `benefitTypeCode` 'PHYSICAL' | 'VIRTUAL' | 'HYBRID'
        - `programCategory` ProgramCategoryCore
          - `audit` Audit
            - `createdTime` string, date-time
            - `modifiedTime` string, date-time
            - `modifiedBy` string
          - `alternateLocales` object
            - `empty` boolean
          - `programCategoryId` integer
          - `membershipId` integer
          - `typeCode` 'CERTIFICATION' | 'CHALLENGE' | 'MEMBERSHIP' | 'PASS'
          - `name` string
          - `description` string
          - `required` boolean
          - `tierBehaviorCode` 'NONE' | 'REPLACE_ON_ENROLL' | 'REPLACE_ON_COMPLETION'
          - `downgradePolicyCode` 'NEVER' | 'DURING_RENEWAL' | 'ALWAYS_NO_REFUND' | 'ALWAYS_REFUND' | 'ALWAYS_REFUND_LESS_FEES'
          - `locale` string
        - `memberCert` MemberCertCore
          - `audit` Audit
            - `createdTime` string, date-time
            - `modifiedTime` string, date-time
            - `modifiedBy` string
          - `token` string, uuid
          - `enrollDate` string, date
          - `firstEnrollDate` string, date
          - `startDate` string, date
          - `earnDate` string, date
          - `firstEarnDate` string, date
          - `renewalEligibleDate` string, date
          - `expireDate` string, date
          - `failDate` string, date
          - `endDate` string, date
          - `creditsEarned` number
          - `pointsEarned` number, float
          - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'EXPIRED'
          - `externalEnrollmentId` string
          - `renewable` boolean
          - `expiresSoon` boolean
        - `locale` string
      - `contentId` integer
      - `evalFormId` integer
      - `completable` boolean
      - `targetCertId` integer
      - `locale` string
    - `renewalPrereqs` PrereqFull[]
      - `audit` Audit
        - `createdTime` string, date-time
        - `modifiedTime` string, date-time
        - `modifiedBy` string
      - `alternateLocales` object
        - `empty` boolean
      - `prereqId` integer
      - `name` string
      - `description` string
      - `typeCode` 'ACTIVITY_SUBMISSION' | 'ASSET_COMPLETION' | 'CREDITS_EARNED' | 'EVAL' | 'EVENT_ATTENDANCE' | 'EXTERNAL' | 'OTHER_CERT' | 'SELF_REPORT'
      - `scopeCode` 'PREREQUISITE' | 'RENEWAL'
      - `sequence` integer
      - `required` boolean
      - `expireDate` string, date
      - `expireDays` integer
      - `earlyRenewalDays` integer
      - `lookbackDays` integer
      - `actionLabel` string
      - `points` number, float
      - `creditsMinRequired` number
      - `eventFilters` ContentFilterItem[]
        - `type` 'TAG_CATEGORY' | 'TAG_ID', required
        - `value` string, required
      - `prereqActivityRule` PrereqActivityRuleCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `prereqId` integer
        - `typeCode` 'DAILY_TOTAL' | 'DAILY_TOTAL_STREAK' | 'REVIEWED' | 'TOTAL'
        - `questionId` integer
        - `effectiveDateQuestionId` integer
        - `startDate` string, date
        - `endDate` string, date
        - `minValue` number
        - `maxValue` number
        - `minCount` integer
      - `memberPrereq` MemberPrereqCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `memberPrereqId` integer
        - `startDate` string, date
        - `earliestCompleteDate` string, date
        - `latestCompleteDate` string, date
        - `completeDate` string, date
        - `failDate` string, date
        - `exemptDate` string, date
        - `expireDate` string, date
        - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'EXPIRED'
        - `progress` integer
        - `creditsEarned` number
        - `renewable` boolean
        - `expiresSoon` boolean
        - `actionUrl` string
      - `content` ContentCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `alternateLocales` object
          - `empty` boolean
        - `contentId` integer
        - `contentType` string
        - `membershipId` integer
        - `detail` string
        - `previewing` boolean
        - `subTitle` string
        - `thumbnailImageUuid` string, uuid
        - `title` string
        - `keywords` string
        - `body` string
        - `properties` object
        - `externalPluginId` integer
        - `externalId` string
        - `locale` string
        - `isPublished` boolean
      - `evalForm` EvalFormCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `alternateLocales` object
          - `empty` boolean
        - `evalFormId` integer
        - `membershipId` integer
        - `title` string
        - `description` string
        - `body` string
        - `published` boolean
        - `passTypeCode` 'NONE' | 'PERCENTAGE' | 'POINTS'
        - `passThresholdValue` number
        - `typeCode` 'GROUP_TYPE'
        - `subjectTypeCode` 'GROUP' | 'GROUP_MEMBER' | 'GROUP_MEMBER_SELF'
        - `evaluatorEmailEnabled` boolean
        - `subjectEmailEnabled` boolean
        - `tasksEnabled` boolean
        - `previewEnabled` boolean
        - `descriptionEnabled` boolean
        - `summaryEnabled` boolean
        - `modifyCompletedEvalAllowed` boolean
        - `locale` string
      - `targetCert` CertCore
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `alternateLocales` object
          - `empty` boolean
        - `certId` integer
        - `membershipId` integer
        - `typeCode` 'CERTIFICATION' | 'CHALLENGE' | 'MEMBERSHIP' | 'PASS'
        - `name` string
        - `shortDescription` string
        - `description` string
        - `external` boolean
        - `required` boolean
        - `audienceId` integer
        - `externalPluginId` integer
        - `externalId` string
        - `externalReferenceId` string
        - `allowAdminEnroll` boolean
        - `allowSelfEnroll` boolean
        - `autoEnrollEnabled` boolean
        - `autoRenewalEnabled` boolean
        - `isOpen` boolean
        - `unlisted` boolean
        - `credits` number
        - `pointsRequired` number, float
        - `renewalPointsRequired` number, float
        - `completionStrategy` 'ALL_PREREQ_COMPLETE' | 'ANY_PREREQ_COMPLETE' | 'EARNED_REQUIRED_POINTS'
        - `renewalStrategy` 'ALL_PREREQ_COMPLETE' | 'ANY_PREREQ_COMPLETE' | 'EARNED_REQUIRED_POINTS'
        - `certificateUuid` string, uuid
        - `certificatesEnabled` boolean
        - `enrollmentNotificationsEnabled` boolean
        - `completionNotificationsEnabled` boolean
        - `imageUuid` string, uuid
        - `openDate` string, date
        - `closeDate` string, date
        - `termIntervalCode` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
        - `termIntervalCount` integer
        - `termStartCode` 'EARN' | 'ENROLL' | 'FIRST_EARN' | 'FIRST_ENROLL' | 'ANCHOR'
        - `expireReminderDays` integer
        - `earlyRenewalDays` integer
        - `renewalGracePeriodDays` integer
        - `renewalAnchorDate` string, date
        - `emailCompletionBody` string
        - `tier` integer
        - `benefitTypeCode` 'PHYSICAL' | 'VIRTUAL' | 'HYBRID'
        - `programCategory` ProgramCategoryCore
          - `audit` Audit
            - `createdTime` string, date-time
            - `modifiedTime` string, date-time
            - `modifiedBy` string
          - `alternateLocales` object
            - `empty` boolean
          - `programCategoryId` integer
          - `membershipId` integer
          - `typeCode` 'CERTIFICATION' | 'CHALLENGE' | 'MEMBERSHIP' | 'PASS'
          - `name` string
          - `description` string
          - `required` boolean
          - `tierBehaviorCode` 'NONE' | 'REPLACE_ON_ENROLL' | 'REPLACE_ON_COMPLETION'
          - `downgradePolicyCode` 'NEVER' | 'DURING_RENEWAL' | 'ALWAYS_NO_REFUND' | 'ALWAYS_REFUND' | 'ALWAYS_REFUND_LESS_FEES'
          - `locale` string
        - `memberCert` MemberCertCore
          - `audit` Audit
            - `createdTime` string, date-time
            - `modifiedTime` string, date-time
            - `modifiedBy` string
          - `token` string, uuid
          - `enrollDate` string, date
          - `firstEnrollDate` string, date
          - `startDate` string, date
          - `earnDate` string, date
          - `firstEarnDate` string, date
          - `renewalEligibleDate` string, date
          - `expireDate` string, date
          - `failDate` string, date
          - `endDate` string, date
          - `creditsEarned` number
          - `pointsEarned` number, float
          - `status` 'NOT_STARTED' | 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'EXPIRED'
          - `externalEnrollmentId` string
          - `renewable` boolean
          - `expiresSoon` boolean
        - `locale` string
      - `contentId` integer
      - `evalFormId` integer
      - `completable` boolean
      - `targetCertId` integer
      - `locale` string
    - `products` ProductCore[]
      - `audit` Audit
        - `createdTime` string, date-time
        - `modifiedTime` string, date-time
        - `modifiedBy` string
      - `productId` integer
      - `membershipId` integer
      - `name` string
      - `detail` string
      - `currency` 'AED' | 'ARS' | 'AUD' | 'CAD' | 'CHF' | 'CLP' | 'CNY' | 'EUR' | 'GBP' | 'INR' | 'JPY' | 'KRW' | 'MYR' | 'NZD' | 'PKR' | 'SGD' | 'USD' | 'ZAR'
      - `price` integer
      - `imageUuid` string, uuid
      - `typeCode` 'CERT' | 'COURSE' | 'EVENT'
      - `salesStartTime` string, date-time
      - `salesEndTime` string, date-time
      - `eventCheckInStartTime` string, date-time
      - `eventCheckInEndTime` string, date-time
      - `availableForSale` boolean
      - `availableForCheckIn` boolean
      - `active` boolean
      - `recurring` boolean
      - `recurringInterval` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
      - `recurringIntervalCount` integer
      - `allowProrate` boolean
      - `taxEnabled` boolean
      - `taxCode` string
      - `enrollmentScopeCode` 'ENROLL' | 'ENROLL_AND_RENEW' | 'RENEW'
      - `audiencePromo` AudiencePromo
        - `contentId` integer
        - `actionText` string
        - `localizedValues` AudiencePromoLocaleValues
          - `actionText` string
      - `previewing` boolean
      - `programScopeCode` 'ENROLL' | 'ENROLL_AND_RENEW' | 'RENEW'
    - `actions` string[]
    - `incompleteReminderIntervalDays` integer
    - `incompleteReminderCountMax` integer
    - `incompleteReminderBody` string
    - `audience` AudienceCore
      - `audit` Audit
        - `createdTime` string, date-time
        - `modifiedTime` string, date-time
        - `modifiedBy` string
      - `audienceId` integer
      - `membershipId` integer
      - `name` string
      - `criterionType` 'COMPOUND' | 'COURSE' | 'GROUP' | 'IDENTITY_PROVIDER' | 'PROFILE_QUESTION' | 'PROGRAM'
      - `criterionOperator` 'AND' | 'OR' | 'EQUALS' | 'NOT_EQUALS'
      - `criterionValue` string
      - `invalidTime` string, date-time
      - `groupDescendantsIncluded` boolean
      - `idpPluginId` integer
    - `contents` ContentFull[]
      - `body` string
      - `keywords` string
      - `contentId` integer
      - `tags` TagFull[]
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `alternateLocales` object
          - `empty` boolean
        - `tagId` integer
        - `title` string
        - `color` string
        - `category` string
        - `membershipId` integer
        - `priority` integer
        - `tagGroup` string
        - `locale` string
      - `title` string
      - `detail` string
      - `thumbnailImageUuid` string, uuid
      - `externalPluginId` integer
      - `externalId` string
      - `subTitle` string
      - `membershipId` integer
      - `assets` AssetCore[]
        - `audit` Audit
          - `createdTime` string, date-time
          - `modifiedTime` string, date-time
          - `modifiedBy` string
        - `alternateLocales` object
        - `assetId` integer
        - `token` string, uuid
        - `membershipId` integer
        - `assetType` string
        - `title` string
        - `detail` string
        - `status` string
        - `numPages` integer
        - `sourceUrl` string
        - `url` string
        - `thumbnailImageUuid` string, uuid
        - `vendor` 'ABUSE_PREVENTION_SYSTEMS' | 'CLASSMARKER' | 'GAMEPLAN' | 'I9_SPORTS' | 'NCGA' | 'SAFESPORT' | 'ULTIMATE' | 'ULTIMATE_SKILLS'
        - `properties` object
        - `locale` string
      - `previewing` boolean
      - `contentType` string
      - `isPublished` boolean
    - `completable` boolean
    - `locale` string

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `500` — Internal server error

---

[API](https://skmtc.dev/mobilecoach/apis/untitled-api.md) · [All operations](https://skmtc.dev/mobilecoach/apis/untitled-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/mobilecoach/untitled-api/revisions/f2568e11c0ab/schema)
