{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/telnyx/json-schema/telnyx-telnyx-downstream-campaign-schema.json",
  "title": "TelnyxDownstreamCampaign",
  "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.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/telnyx-shared-campaigns-api-openapi.yml#/components/schemas/TelnyxDownstreamCampaign",
  "properties": {
    "ageGated": {
      "description": "Age gated content in campaign.",
      "title": "AgeGated",
      "type": "boolean"
    },
    "assignedPhoneNumbersCount": {
      "description": "Number of phone numbers associated with the campaign",
      "title": "AssignedPhoneNumbersCount",
      "type": "number"
    },
    "brandDisplayName": {
      "description": "Display or marketing name of the brand.",
      "title": "Branddisplayname",
      "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"
    },
    "createdAt": {
      "description": "Date and time that the brand was created at.",
      "type": "string"
    },
    "description": {
      "description": "Summary description of this campaign.",
      "title": "Description",
      "type": "string"
    },
    "directLending": {
      "description": "Direct lending or loan arrangement.",
      "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"
    },
    "isNumberPoolingEnabled": {
      "description": "Indicates whether the campaign has a T-Mobile number pool ID associated with it.",
      "title": "isNumberPoolingEnabled",
      "type": "boolean"
    },
    "messageFlow": {
      "description": "Message flow description.",
      "title": "Messageflow",
      "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"
    },
    "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"
    },
    "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
    },
    "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"
    },
    "updatedAt": {
      "description": "Date and time that the brand was last updated at.",
      "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"
    },
    "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": [
    "tcrBrandId",
    "tcrCampaignId"
  ],
  "type": "object"
}