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)