Zavu 10DLC API

The 10DLC API from Zavu — 11 operation(s) for 10dlc.

OpenAPI Specification

zavu-10dlc-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Zavu Unified Messaging Layer 10DLC API
  version: 0.2.0
  description: 'Unified multi-channel messaging API for Zavu.


    Supported channels:

    - **SMS**: Simple text messages

    - **WhatsApp**: Rich messaging with media, buttons, lists, CTA URL buttons, and templates

    - **Telegram**: Bot messaging with text, media, and interactive elements

    - **Email**: Transactional emails via Amazon SES


    Design goals:

    - Simple `send()` entrypoint for developers

    - Project-level authentication via Bearer token

    - Support for all WhatsApp message types (text, image, video, audio, document, sticker, location, contact, buttons, list, cta_url, reaction, template)

    - If a non-text message type is sent, WhatsApp channel is used automatically

    - 24-hour WhatsApp conversation window enforcement

    - Universal `to` field accepts phone numbers (E.164), email addresses, or numeric chat IDs (Telegram/Instagram/Messenger)

    '
servers:
- url: https://api.zavu.dev
security:
- bearerAuth: []
tags:
- name: 10DLC
paths:
  /v1/10dlc/brands:
    get:
      summary: List 10DLC brands
      description: List 10DLC brand registrations for this project.
      operationId: listTenDlcBrands
      tags:
      - 10DLC
      parameters:
      - name: limit
        in: query
        schema:
          type: integer
          default: 50
          maximum: 100
      - name: cursor
        in: query
        schema:
          type: string
      responses:
        '200':
          description: List of brands.
          content:
            application/json:
              schema:
                type: object
                required:
                - items
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/TenDlcBrand'
                  nextCursor:
                    type: string
                    nullable: true
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
    post:
      summary: Create 10DLC brand
      description: Create a 10DLC brand registration. The brand starts in draft status. Submit it for review using the submit endpoint.
      operationId: createTenDlcBrand
      tags:
      - 10DLC
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenDlcBrandCreateRequest'
            example:
              entityType: PRIVATE_PROFIT
              displayName: Acme Corp
              companyName: Acme Corporation
              ein: 12-3456789
              email: compliance@acme.com
              phone: '+14155551234'
              street: 123 Main St
              city: San Francisco
              state: CA
              postalCode: '94102'
              country: US
              website: https://acme.com
              vertical: Technology
      responses:
        '201':
          description: Brand created in draft status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcBrandResponse'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/brands/use-cases:
    get:
      summary: List 10DLC use cases
      description: List available use cases for 10DLC campaign registration.
      operationId: listTenDlcUseCases
      tags:
      - 10DLC
      responses:
        '200':
          description: List of available use cases.
          content:
            application/json:
              schema:
                type: object
                required:
                - useCases
                properties:
                  useCases:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        description:
                          type: string
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/brands/{brandId}:
    get:
      summary: Get 10DLC brand
      operationId: getTenDlcBrand
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcBrandIdParam'
      responses:
        '200':
          description: Brand details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcBrandResponse'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Brand not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
    patch:
      summary: Update 10DLC brand
      description: Update a 10DLC brand in draft status. Cannot update after submission.
      operationId: updateTenDlcBrand
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcBrandIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenDlcBrandUpdateRequest'
      responses:
        '200':
          description: Brand updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcBrandResponse'
        '400':
          description: Invalid request or brand already submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Brand not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
    delete:
      summary: Delete 10DLC brand
      operationId: deleteTenDlcBrand
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcBrandIdParam'
      responses:
        '204':
          description: Brand deleted.
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Brand not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/brands/{brandId}/submit:
    post:
      summary: Submit 10DLC brand for review
      description: Submit a draft brand to The Campaign Registry (TCR) for vetting. The brand must be in draft status. A $35 registration fee is charged from your balance.
      operationId: submitTenDlcBrand
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcBrandIdParam'
      responses:
        '200':
          description: Brand submitted for review.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcBrandResponse'
        '400':
          description: Brand already submitted or invalid status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Brand not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/brands/{brandId}/sync:
    post:
      summary: Sync 10DLC brand status
      description: Sync the brand status with the registration provider. Use this to check for approval updates after submission.
      operationId: syncTenDlcBrand
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcBrandIdParam'
      responses:
        '200':
          description: Brand status synced.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcBrandResponse'
        '400':
          description: Brand has not been submitted yet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Brand not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/campaigns:
    get:
      summary: List 10DLC campaigns
      description: List 10DLC campaign registrations for this project.
      operationId: listTenDlcCampaigns
      tags:
      - 10DLC
      parameters:
      - name: brandId
        in: query
        description: Filter campaigns by brand ID.
        schema:
          type: string
      - name: limit
        in: query
        schema:
          type: integer
          default: 50
          maximum: 100
      - name: cursor
        in: query
        schema:
          type: string
      responses:
        '200':
          description: List of campaigns.
          content:
            application/json:
              schema:
                type: object
                required:
                - items
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/TenDlcCampaign'
                  nextCursor:
                    type: string
                    nullable: true
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
    post:
      summary: Create 10DLC campaign
      description: Create a 10DLC campaign under an existing brand. The campaign starts in draft status. Submit it for carrier review using the submit endpoint.
      operationId: createTenDlcCampaign
      tags:
      - 10DLC
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenDlcCampaignCreateRequest'
            example:
              brandId: brand_abc123
              name: Order Notifications
              useCase: ACCOUNT_NOTIFICATION
              description: Send order status updates and shipping notifications to customers who opted in.
              sampleMessages:
              - 'Hi {{name}}, your order #{{order_id}} has shipped! Track it at {{url}}'
              - 'Your order #{{order_id}} has been delivered. Thank you for your purchase!'
              subscriberOptIn: true
              subscriberOptOut: true
              subscriberHelp: true
              numberPooling: false
              directLending: false
              embeddedLink: true
              embeddedPhone: false
              affiliateMarketing: false
              ageGated: false
      responses:
        '201':
          description: Campaign created in draft status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcCampaignResponse'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Brand not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/campaigns/{campaignId}:
    get:
      summary: Get 10DLC campaign
      operationId: getTenDlcCampaign
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcCampaignIdParam'
      responses:
        '200':
          description: Campaign details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcCampaignResponse'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
    patch:
      summary: Update 10DLC campaign
      description: Update a 10DLC campaign in draft status. Cannot update after submission.
      operationId: updateTenDlcCampaign
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcCampaignIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenDlcCampaignUpdateRequest'
      responses:
        '200':
          description: Campaign updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcCampaignResponse'
        '400':
          description: Invalid request or campaign already submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
    delete:
      summary: Delete 10DLC campaign
      operationId: deleteTenDlcCampaign
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcCampaignIdParam'
      responses:
        '204':
          description: Campaign deleted.
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/campaigns/{campaignId}/submit:
    post:
      summary: Submit 10DLC campaign for review
      description: Submit a draft campaign for carrier review. The campaign must be in draft status and its brand must be verified.
      operationId: submitTenDlcCampaign
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcCampaignIdParam'
      responses:
        '200':
          description: Campaign submitted for review.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcCampaignResponse'
        '400':
          description: Campaign already submitted or invalid status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/campaigns/{campaignId}/sync:
    post:
      summary: Sync 10DLC campaign status
      description: Sync the campaign status with the registration provider. Use this to check for approval updates after submission.
      operationId: syncTenDlcCampaign
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcCampaignIdParam'
      responses:
        '200':
          description: Campaign status synced.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcCampaignResponse'
        '400':
          description: Campaign has not been submitted yet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/campaigns/{campaignId}/phone-numbers:
    get:
      summary: List campaign phone number assignments
      description: List phone numbers assigned to a 10DLC campaign.
      operationId: listTenDlcCampaignPhoneNumbers
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcCampaignIdParam'
      responses:
        '200':
          description: List of phone number assignments.
          content:
            application/json:
              schema:
                type: object
                required:
                - items
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/TenDlcPhoneNumberAssignment'
                  nextCursor:
                    type: string
                    nullable: true
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
    post:
      summary: Assign phone number to campaign
      description: Assign a US phone number to an approved 10DLC campaign. The campaign must be in approved status.
      operationId: assignTenDlcPhoneNumber
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcCampaignIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenDlcPhoneNumberAssignRequest'
            example:
              phoneNumberId: pn_abc123
      responses:
        '201':
          description: Phone number assigned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDlcAssignmentResponse'
        '400':
          description: Campaign not approved or invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign or phone number not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
  /v1/10dlc/campaigns/{campaignId}/phone-numbers/{assignmentId}:
    delete:
      summary: Unassign phone number from campaign
      description: Remove a phone number assignment from a 10DLC campaign.
      operationId: unassignTenDlcPhoneNumber
      tags:
      - 10DLC
      parameters:
      - $ref: '#/components/parameters/TenDlcCampaignIdParam'
      - $ref: '#/components/parameters/TenDlcAssignmentIdParam'
      responses:
        '204':
          description: Phone number unassigned.
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign or assignment not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - bearerAuth: []
components:
  schemas:
    TenDlcPhoneNumberAssignment:
      type: object
      required:
      - id
      - campaignId
      - phoneNumberId
      - status
      - createdAt
      - updatedAt
      properties:
        id:
          type: string
        campaignId:
          type: string
        phoneNumberId:
          type: string
        status:
          type: string
          description: Assignment status.
          enum:
          - pending
          - active
          - failed
        failureReason:
          type: string
          nullable: true
        assignedAt:
          type: string
          format: date-time
          nullable: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    TenDlcCampaignStatus:
      type: string
      description: Status of a 10DLC campaign registration.
      enum:
      - draft
      - pending
      - approved
      - rejected
    TenDlcBrand:
      type: object
      required:
      - id
      - entityType
      - displayName
      - email
      - phone
      - street
      - city
      - state
      - postalCode
      - country
      - vertical
      - status
      - createdAt
      - updatedAt
      properties:
        id:
          type: string
        entityType:
          $ref: '#/components/schemas/TenDlcEntityType'
        displayName:
          type: string
          description: Display name of the brand.
          example: Acme Corp
        companyName:
          type: string
          nullable: true
          description: Legal company name.
        ein:
          type: string
          nullable: true
          description: Employer Identification Number (EIN).
          example: 12-3456789
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        email:
          type: string
          format: email
        phone:
          type: string
          description: Contact phone number in E.164 format.
          example: '+14155551234'
        street:
          type: string
        city:
          type: string
        state:
          type: string
        postalCode:
          type: string
        country:
          type: string
          description: Two-letter ISO country code.
          example: US
        website:
          type: string
          nullable: true
          format: uri
        vertical:
          type: string
          description: Industry vertical.
          example: Technology
        stockSymbol:
          type: string
          nullable: true
        stockExchange:
          type: string
          nullable: true
        status:
          $ref: '#/components/schemas/TenDlcBrandStatus'
        brandScore:
          type: integer
          nullable: true
          description: Trust score assigned by TCR after vetting.
        brandRelationship:
          type: string
          nullable: true
        failureReason:
          type: string
          nullable: true
          description: Reason for rejection, if applicable.
        submittedAt:
          type: string
          format: date-time
          nullable: true
        verifiedAt:
          type: string
          format: date-time
          nullable: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    TenDlcPhoneNumberAssignRequest:
      type: object
      required:
      - phoneNumberId
      properties:
        phoneNumberId:
          type: string
          description: ID of the phone number to assign.
    TenDlcBrandUpdateRequest:
      type: object
      properties:
        entityType:
          $ref: '#/components/schemas/TenDlcEntityType'
        displayName:
          type: string
          maxLength: 100
        companyName:
          type: string
          maxLength: 200
        ein:
          type: string
        firstName:
          type: string
          maxLength: 50
        lastName:
          type: string
          maxLength: 50
        email:
          type: string
          format: email
        phone:
          type: string
        street:
          type: string
          maxLength: 200
        city:
          type: string
          maxLength: 100
        state:
          type: string
          maxLength: 50
        postalCode:
          type: string
          maxLength: 20
        country:
          type: string
          minLength: 2
          maxLength: 2
        website:
          type: string
          format: uri
        vertical:
          type: string
          maxLength: 50
        stockSymbol:
          type: string
          maxLength: 10
        stockExchange:
          type: string
          maxLength: 50
    TenDlcAssignmentResponse:
      type: object
      required:
      - assignment
      properties:
        assignment:
          $ref: '#/components/schemas/TenDlcPhoneNumberAssignment'
    TenDlcCampaignResponse:
      type: object
      required:
      - campaign
      properties:
        campaign:
          $ref: '#/components/schemas/TenDlcCampaign'
    TenDlcBrandResponse:
      type: object
      required:
      - brand
      properties:
        brand:
          $ref: '#/components/schemas/TenDlcBrand'
    TenDlcCampaignCreateRequest:
      type: object
      required:
      - brandId
      - name
      - useCase
      - description
      - sampleMessages
      - subscriberOptIn
      - subscriberOptOut
      - subscriberHelp
      - numberPooling
      - directLending
      - embeddedLink
      - embeddedPhone
      - affiliateMarketing
      - ageGated
      properties:
        brandId:
          type: string
          description: ID of the brand to create this campaign under.
        name:
          type: string
          maxLength: 100
        useCase:
          type: string
          maxLength: 50
          description: Campaign use case (e.g., ACCOUNT_NOTIFICATION, MARKETING, 2FA).
        subUseCases:
          type: array
          items:
            type: string
        description:
          type: string
          maxLength: 4096
        sampleMessages:
          type: array
          items:
            type: string
            maxLength: 1024
          minItems: 1
          maxItems: 5
        subscriberOptIn:
          type: boolean
        subscriberOptOut:
          type: boolean
        subscriberHelp:
          type: boolean
        numberPooling:
          type: boolean
        directLending:
          type: boolean
        embeddedLink:
          type: boolean
        embeddedPhone:
          type: boolean
        affiliateMarketing:
          type: boolean
        ageGated:
          type: boolean
        messageFlow:
          type: string
          maxLength: 2048
        helpMessage:
          type: string
          maxLength: 500
        optInKeywords:
          type: array
          items:
            type: string
            maxLength: 50
        optOutKeywords:
          type: array
          items:
            type: string
            maxLength: 50
    Error:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          example: invalid_request
        message:
          type: string
          example: Phone number is invalid
        details:
          type: object
          additionalProperties: true
    TenDlcBrandStatus:
      type: string
      description: Status of a 10DLC brand registration.
      enum:
      - draft
      - pending
      - verified
      - rejected
    TenDlcCampaign:
      type: object
      required:
      - id
      - brandId
      - name
      - useCase
      - description
      - sampleMessages
      - subscriberOptIn
      - subscriberOptOut
      - subscriberHelp
      - numberPooling
      - directLending
      - embeddedLink
      - embeddedPhone
      - affiliateMarketing
      - ageGated
      - status
      - createdAt
      - updatedAt
      properties:
        id:
          type: string
        brandId:
          type: string
          description: ID of the brand this campaign belongs to.
        name:
          type: string
          example: Order Notifications
        useCase:
          type: string
          description: Campaign use case type.
          example: ACCOUNT_NOTIFICATION
        subUseCases:
          type: array
          items:
            type: string
          nullable: true
        description:
          type: string
          description: Description of the messaging campaign.
        sampleMessages:
          type: array
          items:
            type: string
          description: Sample messages representative of campaign content.
        subscriberOptIn:
          type: boolean
        subscriberOptOut:
          type: boolean
        subscriberHelp:
          type: boolean
        numberPooling:
          type: boolean
        directLending:
          type: boolean
        embeddedLink:
          type: boolean
        embeddedPhone:
          type: boolean
        affiliateMarketing:
          type: boolean
        ageGated:
          type: boolean
        messageFlow:
          type: string
          nullable: true
        helpMessage:
          type: string
          nullable: true
        optInKeywords:
          type: array
          items:
            type: string
          nullable: true
        optOutKeywords:
          type: array
          items:
            type: string
          nullable: true
        status:
          $ref: '#/components/schemas/TenDlcCampaignStatus'
        dailyLimit:
          type: integer
          nullable: true
          description: Daily message limit based on brand trust score.
        failureReason:
          type: string
          nullable: true
        registrationCostCents:
          type: integer
          nullable: true
          description: One-time registration cost in cents.
        monthlyFeeCents:
          type: integer
          nullable: true
          description: Recurring monthly fee in cents.
        submittedAt:
          type: string
          format: date-time
          nullable: true
        approvedAt:
          type: string
          format: date-time
          nullable: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    TenDlcBrandCreateRequest:
      type: object
      required:
      - entityType
      - displayName
      - email
      - phone
      - street
      - city
      - state
      - postalCode
      - country
      - vertical
      properties:
        entityType:
          $ref: '#/components/schemas/TenDlcEntityType'
        displayName:
          type: string
          maxLength: 100
          description: Display name of the brand.
          example: Acme Corp
        companyName:
          type: string
          maxLength: 200
   

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zavu/refs/heads/main/openapi/zavu-10dlc-api-openapi.yml