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

# Atualizar horários de postagem

> Substitui o fuso horário, a meta de posts e os horários de postagem do canal. Envie os sete dias, ou `posting_schedule: null` para remover todos os horários. Todos os campos são gravados: omitir `posting_goal` ou `posting_schedule` limpa o campo como `null`, então envie os valores atuais para mantê-los (leia com `GET /channels/{account}/posting-schedule`). Sem horários, os posts da fila do canal viram posts com horário personalizado no horário em que já estavam. Os posts da fila mantêm seu horário. Uma mudança de horários move só os posts cujo horário deixou de existir, para os primeiros horários livres, em ordem. Uma mudança de fuso dá primeiro a cada post da fila o horário com a mesma hora local no novo fuso, depois os primeiros horários livres; pedidos de fila aguardando aprovação seguem a mesma regra. Um post da fila que fica sem horário vira um post com horário personalizado no horário em que já estava. Posts com horário personalizado nunca se movem. Exige ser administrador do workspace.



## OpenAPI

````yaml /openapi.json put /channels/{account}/posting-schedule
openapi: 3.1.0
info:
  title: PostClean API
  version: 2.0.0
  description: >-
    API REST do PostClean. Autentique com uma chave de API do workspace, enviada
    como token Bearer no cabeçalho `Authorization`.
servers:
  - url: https://post.chatclean.com.br/api
    description: PostClean
security:
  - bearerAuth: []
tags:
  - name: Posts
    description: Criar, ler, atualizar, excluir e pré-visualizar posts.
  - name: Post notes
    description: Notas internas de um post, visíveis aos membros do workspace.
  - name: Approvals
    description: Aprovar ou rejeitar posts que aguardam aprovação.
  - name: Recurrence
    description: Fazer um post se repetir numa frequência.
  - name: Media and uploads
    description: Enviar arquivos e anexar mídia aos posts.
  - name: Social accounts
    description: Contas sociais conectadas e as opções de cada rede.
  - name: Channels
    description: Horários de postagem e fila de um canal.
  - name: Ideas
    description: Ideias do quadro Criar.
  - name: Idea stages
    description: As colunas (etapas) do quadro de ideias.
  - name: Analytics
    description: Métricas do workspace e dos canais.
  - name: Labels
    description: Etiquetas para organizar posts e ideias.
  - name: Signatures
    description: Textos reutilizáveis para adicionar aos posts.
  - name: Workspace
    description: O workspace ao qual a chave de API pertence.
  - name: API keys
    description: Chaves de API pessoais deste workspace.
  - name: Webhooks
    description: Webhooks de saída e os registros de entrega.
  - name: Repurposes
    description: Automações que republicam vídeos postados fora do PostClean.
  - name: Platform
    description: Recursos de cada plataforma e tipos de conteúdo.
paths:
  /channels/{account}/posting-schedule:
    parameters:
      - $ref: '#/components/parameters/AccountId'
    put:
      tags:
        - Channels
      summary: Atualizar horários de postagem
      description: >-
        Substitui o fuso horário, a meta de posts e os horários de postagem do
        canal. Envie os sete dias, ou `posting_schedule: null` para remover
        todos os horários. Todos os campos são gravados: omitir `posting_goal`
        ou `posting_schedule` limpa o campo como `null`, então envie os valores
        atuais para mantê-los (leia com `GET
        /channels/{account}/posting-schedule`). Sem horários, os posts da fila
        do canal viram posts com horário personalizado no horário em que já
        estavam. Os posts da fila mantêm seu horário. Uma mudança de horários
        move só os posts cujo horário deixou de existir, para os primeiros
        horários livres, em ordem. Uma mudança de fuso dá primeiro a cada post
        da fila o horário com a mesma hora local no novo fuso, depois os
        primeiros horários livres; pedidos de fila aguardando aprovação seguem a
        mesma regra. Um post da fila que fica sem horário vira um post com
        horário personalizado no horário em que já estava. Posts com horário
        personalizado nunca se movem. Exige ser administrador do workspace.
      operationId: updatePostingSchedule
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - timezone
              properties:
                timezone:
                  type: string
                  description: Fuso horário IANA, por exemplo `America/Sao_Paulo`.
                posting_goal:
                  type:
                    - integer
                    - 'null'
                  minimum: 1
                  maximum: 28
                  description: >-
                    Posts por semana, de 1 a 28. `null` ou omitido limpa o
                    campo: envie o valor atual para mantê-lo.
                posting_schedule:
                  type:
                    - array
                    - 'null'
                  minItems: 7
                  maxItems: 7
                  items:
                    $ref: '#/components/schemas/PostingDay'
                  description: >-
                    Exatamente sete dias, cada `day` uma vez. `null` ou omitido
                    remove os horários (os posts da fila viram posts com horário
                    personalizado): envie os valores atuais para mantê-los.
            example:
              timezone: America/Sao_Paulo
              posting_goal: 5
              posting_schedule:
                - day: 0
                  enabled: true
                  times: []
                - day: 1
                  enabled: true
                  times:
                    - '09:00'
                - day: 2
                  enabled: true
                  times:
                    - '09:00'
                    - '15:00'
                - day: 3
                  enabled: true
                  times:
                    - '12:00'
                - day: 4
                  enabled: true
                  times:
                    - '09:00'
                - day: 5
                  enabled: true
                  times: []
                - day: 6
                  enabled: false
                  times: []
      responses:
        '200':
          description: Os horários de postagem salvos.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelPostingSchedule'
              example:
                id: 9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54
                timezone: America/Sao_Paulo
                posting_goal: 5
                posting_schedule:
                  - day: 0
                    enabled: true
                    times: []
                  - day: 1
                    enabled: true
                    times:
                      - '09:00'
                  - day: 2
                    enabled: true
                    times:
                      - '09:00'
                      - '15:00'
                  - day: 3
                    enabled: true
                    times:
                      - '12:00'
                  - day: 4
                    enabled: true
                    times:
                      - '09:00'
                  - day: 5
                    enabled: true
                    times: []
                  - day: 6
                    enabled: false
                    times: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          description: >-
            A chave de API não pode ser usada, ou o usuário não é administrador
            do workspace (só administradores mudam os horários de postagem).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  parameters:
    AccountId:
      name: account
      in: path
      required: true
      description: Id da conta social (canal). Uma conta de outro workspace devolve `404`.
      schema:
        type: string
        format: uuid
      example: 9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54
  schemas:
    PostingDay:
      type: object
      required:
        - day
        - enabled
        - times
      properties:
        day:
          type: integer
          minimum: 0
          maximum: 6
          description: >-
            Dia da semana: `0` é domingo, `6` é sábado. Envie um inteiro JSON,
            não um texto.
        enabled:
          type: boolean
          description: >-
            Um dia desativado guarda seus horários, mas não oferece horários na
            fila.
        times:
          type: array
          maxItems: 4
          items:
            type: string
            pattern: ^\d{2}:\d{2}$
            examples:
              - '09:00'
          description: >-
            Horários de postagem, `H:i` no fuso do canal, no máximo 4 por dia,
            sem repetição. São gravados em ordem.
    ChannelPostingSchedule:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Id da conta social.
        timezone:
          type: string
          description: >-
            Fuso horário IANA do canal. Os horários de postagem e da fila ficam
            nesse fuso.
        posting_goal:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 28
          description: Meta de posts por semana do canal.
        posting_schedule:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/PostingDay'
          description: >-
            Sete dias, começando no domingo. `null` quando o canal não tem
            horários de postagem (os posts não podem usar `queue`).
    ErrorBody:
      type: object
      properties:
        message:
          type: string
      description: Corpo de erro com uma mensagem.
    ValidationErrorBody:
      type: object
      properties:
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
      description: Corpo de erro de validação. `errors` traz as mensagens por campo.
    RateLimitErrorBody:
      type: object
      properties:
        name:
          type: string
          const: rate_limit_exceeded
        message:
          type: string
          examples:
            - Rate limit exceeded. Please retry after 30 seconds.
      description: Corpo devolvido quando o limite de requisições é excedido.
  responses:
    Unauthorized:
      description: >-
        Chave de API ausente, inválida, revogada ou expirada. Corpos possíveis:
        `Unauthenticated.` (sem chave, ou chave inválida ou revogada), `Token
        expired.` (passou do `expires_at`), `Token not found.` e `No workspace
        selected.` (a chave não está mais ligada a um workspace).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            message: Unauthenticated.
    PaymentRequired:
      description: >-
        A conta do workspace não tem assinatura ativa nem período de teste.
        Corpo: `{"message": "Active subscription required."}`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            message: Active subscription required.
    NotFound:
      description: O recurso não existe neste workspace.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
    Conflict:
      description: >-
        Outra alteração neste post ou na fila do canal está em andamento. Tente
        de novo.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
    ValidationError:
      description: A validação falhou. Cada campo com erro aparece em `errors`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrorBody'
    TooManyRequests:
      description: 'Limite de requisições excedido: 60 por minuto por workspace.'
      headers:
        Retry-After:
          description: Segundos de espera antes de tentar de novo.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitErrorBody'
          example:
            name: rate_limit_exceeded
            message: Rate limit exceeded. Please retry after 30 seconds.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Chave de API do workspace, criada em Configurações > Chaves de API.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.