{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/telnyx/main/json-schema/telnyx-telnyx-campaign-csp-schema.json",
  "title": "TelnyxCampaign_CSP",
  "description": "Campaign is generated by the 10DLC registry once the corresponding campaign request is approved. Each campaign is assigned a unique identifier - **campaignId**. Once a campaign is activated, limited information is published to the NetNumber OSR service for consumption by members of the ecosystem. When a campaign is suspended(reversible) or expired(non-reversible), campaign data is deleted from the OSR service. Most attributes of campaignare immutable, including **usecase**, **vertical**, **brandId** and **cspId**.",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/telnyx-campaign-api-openapi.yml#/components/schemas/TelnyxCampaign_CSP",
  "properties": {
    "ageGated": {
      "description": "Age gated content in campaign.",
      "title": "Agegated",
      "type": "boolean"
    },
    "autoRenewal": {
      "description": "Campaign subscription auto-renewal status.",
      "title": "Autorenewal",
      "type": "boolean"
    },
    "billedDate": {
      "description": "Campaign recent billed date.",
      "title": "Billeddate",
      "type": "string"
    },
    "brandDisplayName": {
      "description": "Display or marketing name of the brand.",
      "title": "Branddisplayname",
      "type": "string"
    },
    "brandId": {
      "description": "Unique identifier assigned to the brand.",
      "title": "Brandid",
      "type": "string"
    },
    "campaignId": {
      "description": "Unique identifier for a campaign.",
      "title": "Campaignid",
      "type": "string"
    },
    "campaignStatus": {
      "description": "Campaign status",
      "enum": [
        "TCR_PENDING",
        "TCR_SUSPENDED",
        "TCR_EXPIRED",
        "TCR_ACCEPTED",
        "TCR_FAILED",
        "TELNYX_ACCEPTED",
        "TELNYX_FAILED",
        "MNO_PENDING",
        "MNO_ACCEPTED",
        "MNO_REJECTED",
        "MNO_PROVISIONED",
        "MNO_PROVISIONING_FAILED"
      ],
      "title": "campaignStatus",
      "type": "string"
    },
    "createDate": {
      "description": "Unix timestamp when campaign was created.",
      "title": "Createdate",
      "type": "string"
    },
    "cspId": {
      "description": "Alphanumeric identifier of the CSP associated with this campaign.",
      "title": "Cspid",
      "type": "string"
    },
    "description": {
      "description": "Summary description of this campaign.",
      "title": "Description",
      "type": "string"
    },
    "directLending": {
      "title": "Directlending",
      "type": "boolean"
    },
    "embeddedLink": {
      "description": "Does message generated by the campaign include URL link in SMS?",
      "title": "Embeddedlink",
      "type": "boolean"
    },
    "embeddedLinkSample": {
      "description": "Sample of an embedded link that will be sent to subscribers.",
      "title": "EmbeddedLinkSample",
      "type": "string"
    },
    "embeddedPhone": {
      "description": "Does message generated by the campaign include phone number in SMS?",
      "title": "Embeddedphone",
      "type": "boolean"
    },
    "failureReasons": {
      "description": "Failure reasons if campaign submission failed",
      "title": "failureReasons",
      "type": "string"
    },
    "helpKeywords": {
      "description": "Subscriber help keywords. Multiple keywords are comma separated without space.",
      "title": "Helpkeywords",
      "type": "string"
    },
    "helpMessage": {
      "description": "Help message of the campaign.",
      "title": "Helpmessage",
      "type": "string"
    },
    "isTMobileNumberPoolingEnabled": {
      "description": "Indicates whether the campaign has a T-Mobile number pool ID associated with it.",
      "title": "isTMobileNumberPoolingEnabled",
      "type": "boolean"
    },
    "isTMobileRegistered": {
      "description": "Indicates whether the campaign is registered with T-Mobile.",
      "title": "IsTMobileRegistered",
      "type": "boolean"
    },
    "isTMobileSuspended": {
      "description": "Indicates whether the campaign is suspended with T-Mobile.",
      "title": "isTMobileSuspended",
      "type": "boolean"
    },
    "messageFlow": {
      "description": "Message flow description.",
      "title": "Messageflow",
      "type": "string"
    },
    "mock": {
      "description": "Campaign created from mock brand. Mocked campaign cannot be shared with an upstream CNP.",
      "title": "Mock",
      "type": "boolean"
    },
    "nextRenewalOrExpirationDate": {
      "description": "When the campaign would be due for its next renew/bill date.",
      "title": "Nextrenewalorexpirationdate",
      "type": "string"
    },
    "numberPool": {
      "description": "Does campaign utilize pool of phone numbers?",
      "title": "Numberpool",
      "type": "boolean"
    },
    "optinKeywords": {
      "description": "Subscriber opt-in keywords. Multiple keywords are comma separated without space.",
      "title": "Optinkeywords",
      "type": "string"
    },
    "optinMessage": {
      "description": "Subscriber opt-in message.",
      "title": "Optinmessage",
      "type": "string"
    },
    "optoutKeywords": {
      "description": "Subscriber opt-out keywords. Multiple keywords are comma separated without space.",
      "title": "Optoutkeywords",
      "type": "string"
    },
    "optoutMessage": {
      "description": "Subscriber opt-out message.",
      "title": "Optoutmessage",
      "type": "string"
    },
    "privacyPolicyLink": {
      "description": "Link to the campaign's privacy policy.",
      "title": "PrivacyPolicyLink",
      "type": "string"
    },
    "referenceId": {
      "description": "Caller supplied campaign reference ID. If supplied, the value must be unique across all submitted campaigns. Can be used to prevent duplicate campaign registrations.",
      "title": "Referenceid",
      "type": "string"
    },
    "resellerId": {
      "description": "Alphanumeric identifier of the reseller that you want to associate with this campaign.",
      "title": "Resellerid",
      "type": "string"
    },
    "sample1": {
      "description": "Message sample. Some campaign tiers require 1 or more message samples.",
      "title": "Sample1",
      "type": "string"
    },
    "sample2": {
      "description": "Message sample. Some campaign tiers require 2 or more message samples.",
      "title": "Sample2",
      "type": "string"
    },
    "sample3": {
      "description": "Message sample. Some campaign tiers require 3 or more message samples.",
      "title": "Sample3",
      "type": "string"
    },
    "sample4": {
      "description": "Message sample. Some campaign tiers require 4 or more message samples.",
      "title": "Sample4",
      "type": "string"
    },
    "sample5": {
      "description": "Message sample. Some campaign tiers require 5 or more message samples.",
      "title": "Sample5",
      "type": "string"
    },
    "status": {
      "description": "Current campaign status. Possible values: ACTIVE, EXPIRED. A newly created campaign defaults to ACTIVE status. ",
      "title": "Status",
      "type": "string"
    },
    "subUsecases": {
      "description": "Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation to retrieve list of valid sub-usecases",
      "items": {
        "type": "string"
      },
      "title": "Subusecases",
      "type": "array",
      "uniqueItems": true
    },
    "submissionStatus": {
      "description": "Campaign submission status",
      "enum": [
        "CREATED",
        "FAILED",
        "PENDING"
      ],
      "title": "submissionStatus",
      "type": "string"
    },
    "subscriberHelp": {
      "description": "Does campaign responds to help keyword(s)?",
      "title": "Subscriberhelp",
      "type": "boolean"
    },
    "subscriberOptin": {
      "description": "Does campaign require subscriber to opt-in before SMS is sent to subscriber?",
      "title": "Subscriberoptin",
      "type": "boolean"
    },
    "subscriberOptout": {
      "description": "Does campaign support subscriber opt-out keyword(s)?",
      "title": "Subscriberoptout",
      "type": "boolean"
    },
    "tcrBrandId": {
      "description": "Unique identifier assigned to the brand by the registry.",
      "title": "TcrBrandid",
      "type": "string"
    },
    "tcrCampaignId": {
      "description": "Unique identifier assigned to the campaign by the registry.",
      "title": "TcrCampaignid",
      "type": "string"
    },
    "termsAndConditions": {
      "description": "Is terms & conditions accepted?",
      "title": "Termsandconditions",
      "type": "boolean"
    },
    "termsAndConditionsLink": {
      "description": "Link to the campaign's terms and conditions.",
      "title": "TermsAndConditionsLink",
      "type": "string"
    },
    "usecase": {
      "description": "Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases available for given brand.",
      "title": "Usecase",
      "type": "string"
    },
    "vertical": {
      "deprecated": true,
      "description": "Business/industry segment of this campaign (Deprecated). Must be of defined valid types. Use `/registry/enum/vertical` operation to retrieve verticals available for given brand, vertical combination.\n\nThis field is deprecated.",
      "title": "Vertical",
      "type": "string"
    },
    "webhookFailoverURL": {
      "description": "Failover webhook to which campaign status updates are sent.",
      "title": "WebhookFailoverURL",
      "type": "string"
    },
    "webhookURL": {
      "description": "Webhook to which campaign status updates are sent.",
      "title": "WebhookURL",
      "type": "string"
    }
  },
  "required": [
    "brandId",
    "campaignId",
    "cspId",
    "description",
    "mock",
    "subUsecases",
    "termsAndConditions",
    "usecase"
  ],
  "type": "object"
}