> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topsort.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create or update campaign timetables (dayparting).

> Create or update dayparting configuration for a campaign.

Dayparting allows you to control when your campaign is active during the week.
You can specify active hours for each day of the week (1=Monday, 7=Sunday).

HOUR SEMANTICS:
- start_hour: Campaign starts at this hour (inclusive, 0-23)
- end_hour: Campaign stops at this hour (exclusive, 1-24)
- Example: start_hour=9, end_hour=17 runs from 9:00 AM to 5:00 PM
- For all-day: start_hour=0, end_hour=24

This endpoint performs an upsert operation - it will create new timetables or
update existing ones based on the day_of_week. Days not in the request remain
unchanged.



## OpenAPI

````yaml /openapi.json put /public/v1/campaign-service/campaigns/{campaign-id}/timetables
openapi: 3.1.0
info:
  title: Topsort Endpoints v2 API Reference
  description: >
    In order for a storefront to be able to run auctions in Topsort and report
    auction-related events back to Topsort,

    both the `/v2/auctions` and `/v2/events` endpoints must be integrated.

    Below are the endpoint and model definitions for each.
  contact:
    email: wicha@topsort.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  x-logo:
    url: https://assets.topsort.com/Topsort_logo_icon_dark.svg
    backgroundColor: '#fff'
    altText: Topsort
  version: 2.0.0
servers:
  - url: https://api.topsort.com
    description: Base API URL
security: []
tags:
  - name: Auctions
    description: >-
      An auction determines which products should be promoted based on the
      vendors' bids.
  - name: Events
    description: >-
      Events are sent to Topsort as part of the attribution and reporting
      journey.
  - name: Toptimize
    description: >
      An out-of-the-box solution for prediction, ranking, retrieval, and other
      elements of ad selection.
  - name: Toppie API
    description: Toppie management API.
  - name: Campaign API
    description: Full-featured campaign management API for banners and sponsored listings.
  - name: Catalog API
    description: Products catalog management API.
  - name: Billing API
    description: Marketplace and Vendor Billing management API.
  - name: Reporting API
    description: Marketplace, Vendor, Campaign, and product reporting API.
  - name: Invitation API
    description: Vendor invitations management API.
  - name: User API
    description: User management API.
  - name: Webhooks API
    description: Webhooks API that allows event-driven automation.
  - name: Assets API
    description: Assets management API.
  - name: Segments Service
    description: Segments Service.
  - name: Forecasting Service
    description: Toptimize Forecasting Service.
  - name: Offsite Ads API
    description: Offsite Ads API that allows to manage offsite ads campaigns.
  - name: Media API
    description: Ad configuration API.
paths:
  /public/v1/campaign-service/campaigns/{campaign-id}/timetables:
    put:
      tags:
        - Campaign API
      summary: Create or update campaign timetables (dayparting).
      description: >-
        Create or update dayparting configuration for a campaign.


        Dayparting allows you to control when your campaign is active during the
        week.

        You can specify active hours for each day of the week (1=Monday,
        7=Sunday).


        HOUR SEMANTICS:

        - start_hour: Campaign starts at this hour (inclusive, 0-23)

        - end_hour: Campaign stops at this hour (exclusive, 1-24)

        - Example: start_hour=9, end_hour=17 runs from 9:00 AM to 5:00 PM

        - For all-day: start_hour=0, end_hour=24


        This endpoint performs an upsert operation - it will create new
        timetables or

        update existing ones based on the day_of_week. Days not in the request
        remain

        unchanged.
      operationId: upsert_campaign_timetables
      parameters:
        - name: campaign-id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The ID of the campaign.
          description: The ID of the campaign.
        - name: vendor_id
          in: query
          required: true
          schema:
            type: string
            minLength: 1
            description: The ID of the vendor.
          description: The ID of the vendor.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Advanced_APIs_PublicUpsertTimeTablesRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Advanced_APIs_PublicCampaignTimetablesResponse
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Advanced_APIs_HTTPValidationError'
      security:
        - Advanced_APIs_HTTPBearer: []
components:
  schemas:
    Advanced_APIs_PublicUpsertTimeTablesRequest:
      properties:
        timetables:
          items:
            $ref: '#/components/schemas/Advanced_APIs_PublicCampaignTimeTable'
          type: array
          maxItems: 7
          minItems: 1
          title: Timetables
          description: The schedule for the campaign.
      type: object
      required:
        - timetables
      title: PublicUpsertTimeTablesRequest
    Advanced_APIs_PublicCampaignTimetablesResponse:
      properties:
        campaignId:
          type: string
          format: uuid
          title: Campaignid
          description: The ID of the campaign.
        timetables:
          items:
            $ref: '#/components/schemas/Advanced_APIs_PublicCampaignTimeTableResponse'
          type: array
          title: Timetables
          description: The schedule for the campaign.
      type: object
      required:
        - campaignId
        - timetables
      title: PublicCampaignTimetablesResponse
      description: The schedule for the campaign.
    Advanced_APIs_HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/Advanced_APIs_ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    Advanced_APIs_PublicCampaignTimeTable:
      properties:
        isActive:
          type: boolean
          title: Isactive
          description: Whether the campaign will be active or not in the given period.
        startHour:
          type: integer
          maximum: 23
          minimum: 0
          title: Starthour
          description: >-
            The start time of the schedule (inclusive). Hour when the campaign
            starts (0-23). Example: start_hour=9 means campaign starts at 9:00
            AM.
          default: 0
        endHour:
          type: integer
          maximum: 24
          minimum: 1
          title: Endhour
          description: >-
            The end time of the schedule (exclusive). Hour when the campaign
            stops (1-24). Campaign runs until this hour but NOT during it.
            Example: end_hour=17 means campaign stops at 17:00 (5 PM). Use
            end_hour=24 for campaigns running until midnight.
          default: 24
        dayOfWeek:
          $ref: '#/components/schemas/Advanced_APIs_PublicDayOfWeek'
          description: The day of the week for the schedule.
      type: object
      required:
        - isActive
        - dayOfWeek
      title: PublicCampaignTimeTable
      description: The schedule for the campaign.
    Advanced_APIs_PublicCampaignTimeTableResponse:
      properties:
        isActive:
          type: boolean
          title: Isactive
          description: Whether the campaign will be active or not in the given period.
        startHour:
          type: integer
          maximum: 23
          minimum: 0
          title: Starthour
          description: >-
            The start time of the schedule (inclusive). Hour when the campaign
            starts (0-23). Example: start_hour=9 means campaign starts at 9:00
            AM.
          default: 0
        endHour:
          type: integer
          maximum: 24
          minimum: 1
          title: Endhour
          description: >-
            The end time of the schedule (exclusive). Hour when the campaign
            stops (1-24). Campaign runs until this hour but NOT during it.
            Example: end_hour=17 means campaign stops at 17:00 (5 PM). Use
            end_hour=24 for campaigns running until midnight.
          default: 24
        dayOfWeek:
          $ref: '#/components/schemas/Advanced_APIs_PublicDayOfWeek'
          description: The day of the week for the schedule.
        updatedAt:
          type: string
          format: date-time
          title: Updatedat
          description: When was this campaign timetable last updated.
      type: object
      required:
        - isActive
        - dayOfWeek
        - updatedAt
      title: PublicCampaignTimeTableResponse
      description: The schedule for the campaign.
    Advanced_APIs_ValidationError:
      properties:
        loc:
          items:
            oneOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    Advanced_APIs_PublicDayOfWeek:
      type: integer
      enum:
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
      title: PublicDayOfWeek
      description: The day of the week.
  securitySchemes:
    Advanced_APIs_HTTPBearer:
      type: http
      description: >-
        A valid API key generated in Topsort's UI. Use the TSE API key if
        calling auctions or events API, otherwise use the TSC API key.
      scheme: bearer

````