Duda Sites API

Create, read, update, and delete websites

OpenAPI Specification

duda-sites-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Duda Partner Accounts Sites API
  version: '1.0'
  description: The Duda Partner API is a REST API that enables partners and agencies to programmatically create and manage websites, pages, templates, sections, content, widgets, eCommerce stores, blog posts, dynamic collections, memberships, bookings, and white-label client portal access. It supports SSO for seamless user login into the Duda editor and provides webhook integration for event-driven workflows.
  contact:
    name: Duda Developer Documentation
    url: https://developer.duda.co
  termsOfService: https://www.duda.co/terms-of-service
  license:
    name: Proprietary
servers:
- url: https://api.duda.co/api
  description: Duda Production API
security:
- basicAuth: []
tags:
- name: Sites
  description: Create, read, update, and delete websites
paths:
  /sites/multiscreen/create:
    post:
      operationId: sites-create-site
      summary: Create Site
      description: Create a new Site from a Template.
      tags:
      - Sites
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - template_alias
              properties:
                template_alias:
                  type: string
                  description: Required if template_id is not provided. The unique alias of the template to use for the site.
                template_id:
                  type: integer
                  description: The ID of the template. This field is being replaced by template_alias.
                lang:
                  type: string
                default_domain_prefix:
                  type: string
                  description: Must be between 4-44 characters long.
                labels:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                site_data:
                  type: object
                  properties:
                    external_uid:
                      type: string
                    google_tracking_id:
                      type: string
                    googletagmanager_container_id:
                      type: array
                      items:
                        type: string
                      description: Max of three IDs
                    site_domain:
                      type: string
                    site_alternate_domains:
                      type: object
                      properties:
                        domains:
                          type: array
                          items:
                            type: string
                          description: Array of valid domain names. Max 10.
                        is_redirect:
                          type: boolean
                    site_business_info:
                      type: object
                      properties:
                        business_name:
                          type: string
                        email:
                          type: string
                        phone_number:
                          type: string
                        address:
                          type: object
                          properties:
                            street:
                              type: string
                            city:
                              type: string
                            state:
                              type: string
                            country:
                              type: string
                            zip_code:
                              type: string
                    site_seo:
                      type: object
                      properties:
                        description:
                          type: string
                        og_image:
                          type: string
                        title:
                          type: string
      responses:
        '200':
          description: Site created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  site_name:
                    type: string
                    example: 28e1182c
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /sites/multiscreen/{site_name}:
    get:
      operationId: sites-get-site
      summary: Get Site
      description: Get the details of a site by name.
      tags:
      - Sites
      parameters:
      - name: site_name
        in: path
        required: true
        description: The unique identifier of the target site.
        schema:
          type: string
      responses:
        '200':
          description: Site details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteData'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    delete:
      operationId: sites-delete-site
      summary: Delete Site
      description: Permanently delete a site and all associated data.
      tags:
      - Sites
      parameters:
      - name: site_name
        in: path
        required: true
        description: The unique identifier of the target site.
        schema:
          type: string
      responses:
        '204':
          description: Site deleted successfully
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /sites/multiscreen:
    get:
      operationId: sites-list-sites
      summary: List Sites
      description: Get a paginated list of all sites in the partner account.
      tags:
      - Sites
      parameters:
      - name: offset
        in: query
        description: Zero-based offset for elements (0..N).
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        description: The size of the page to be returned (Max 100).
        schema:
          type: integer
          format: int32
          default: 75
      - name: sort
        in: query
        description: One of CREATION_DATE or LAST_PUBLICATION_DATE.
        schema:
          type: string
          default: CREATION_DATE
      - name: direction
        in: query
        description: Sort direction. One of ASC or DESC.
        schema:
          type: string
          default: DESC
      - name: publish_status
        in: query
        description: Filter by publication status. One of PUBLISHED, UNPUBLISHED or NOT_PUBLISHED_YET.
        schema:
          type: string
      - name: label_names
        in: query
        description: Filter by site labels. Multiple values can be passed as a comma separated list.
        schema:
          type: string
      - name: last_published_date.gte
        in: query
        description: Filter by sites published after specified date e.g., 2016-07-09T22:33:44.
        schema:
          type: string
      - name: last_published_date.lte
        in: query
        description: Filter by sites published before specified date.
        schema:
          type: string
      - name: creation_date.gte
        in: query
        description: Filter by sites created after specified date.
        schema:
          type: string
      - name: creation_date.lte
        in: query
        description: Filter by sites created before specified date.
        schema:
          type: string
      responses:
        '200':
          description: Paginated list of sites
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PaginatedResponse'
                - type: object
                  properties:
                    results:
                      type: array
                      items:
                        $ref: '#/components/schemas/SiteData'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /sites/multiscreen/update/{site_name}:
    post:
      operationId: sites-update-site
      summary: Update Site
      description: Update properties of an existing Site.
      tags:
      - Sites
      parameters:
      - name: site_name
        in: path
        required: true
        description: The unique identifier of the target site.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                additionalLanguages:
                  type: array
                  items:
                    type: string
                default_domain_prefix:
                  type: string
                  description: Must be between 4-44 characters long.
                external_uid:
                  type: string
                fav_icon:
                  type: string
                force_https:
                  type: boolean
                google_tracking_id:
                  type: string
                googletagmanager_container_id:
                  type: array
                  items:
                    type: string
                  description: Max of three IDs.
                labels:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                lang:
                  type: string
                schemas:
                  type: object
                  properties:
                    local_business:
                      type: object
                      properties:
                        enabled:
                          type: boolean
                site_alternate_domains:
                  type: object
                  properties:
                    domains:
                      type: array
                      items:
                        type: string
                      description: Array of valid domain names. Max 10.
                    is_redirect:
                      type: boolean
                site_domain:
                  type: string
                site_seo:
                  type: object
                  properties:
                    description:
                      type: string
                    og_image:
                      type: string
                    title:
                      type: string
                    no_index:
                      type: boolean
      responses:
        '204':
          description: Site updated successfully
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    PaginatedResponse:
      type: object
      properties:
        offset:
          type: integer
        limit:
          type: integer
        total_responses:
          type: integer
    ErrorResponse:
      type: object
      properties:
        error_code:
          type: string
        message:
          type: string
    SiteData:
      type: object
      properties:
        site_name:
          type: string
          description: Unique identifier for the site within Duda
        account_name:
          type: string
          description: The account that owns or is associated with the site
        external_uid:
          type: string
          description: External reference ID set by the partner
        site_domain:
          type: string
          description: Custom domain for the site
        lang:
          type: string
          description: Language code for the site
        additionalLanguages:
          type: array
          items:
            type: string
        google_tracking_id:
          type: string
        googletagmanager_container_id:
          type: array
          items:
            type: string
          description: Max of three IDs
        template_id:
          type: integer
        site_default_domain:
          type: string
        preview_site_url:
          type: string
        overview_site_url:
          type: string
        editor_site_url:
          type: string
        last_published_date:
          type: string
          format: date-time
        first_published_date:
          type: string
          format: date-time
        modification_date:
          type: string
          format: date-time
        creation_date:
          type: string
          format: date-time
        publish_status:
          type: string
          enum:
          - PUBLISHED
          - UNPUBLISHED
          - NOT_PUBLISHED_YET
        force_https:
          type: boolean
        thumbnail_url:
          type: string
        canonical_url:
          type: string
        store_status:
          type: string
        store_type:
          type: string
          enum:
          - NATIVE
          - THIRDPARTY
        editor:
          type: string
          enum:
          - ADVANCED
          - ADVANCED-2.0
        fav_icon:
          type: string
        certificate_status:
          type: string
        last_reset_by:
          type: string
        site_business_info:
          type: object
          properties:
            business_name:
              type: string
            email:
              type: string
            phone_number:
              type: string
            address:
              type: object
              properties:
                street:
                  type: string
                city:
                  type: string
                state:
                  type: string
                country:
                  type: string
                zip_code:
                  type: string
        site_alternate_domains:
          type: object
          properties:
            domains:
              type: array
              items:
                type: string
              description: Array of valid domain names. Max 10.
            is_redirect:
              type: boolean
        site_seo:
          type: object
          properties:
            og_image:
              type: string
            title:
              type: string
            description:
              type: string
            no_index:
              type: boolean
        labels:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
        content_collection_form:
          type: object
          properties:
            url:
              type: string
            url_expiration_date:
              type: string
              format: date-time
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic Authentication using API user credentials (base64 encoded user:pass)