{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/telnyx/json-schema/telnyx-telnyx-downstream-campaign-record-set-schema.json",
  "title": "TelnyxDownstreamCampaignRecordSet",
  "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/TelnyxDownstreamCampaignRecordSet",
  "properties": {
    "page": {
      "title": "Page",
      "type": "integer"
    },
    "records": {
      "items": {
        "$ref": "#/$defs/TelnyxDownstreamCampaign"
      },
      "title": "Records",
      "type": "array"
    },
    "totalRecords": {
      "title": "Totalrecords",
      "type": "integer"
    }
  },
  "type": "object",
  "$defs": {
    "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.",
      "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"
      ],
      "title": "TelnyxDownstreamCampaign",
      "type": "object"
    }
  }
}