{
  "openapi" : "3.1.0",
  "components" : {
    "schemas" : {
      "AccountWebhookSubscriptionRequestDto" : {
        "type" : "object",
        "properties" : {
          "targetUrl" : {
            "type" : "string"
          },
          "event" : {
            "type" : "string"
          },
          "deliveryContentType" : {
            "type" : "string",
            "description" : "Delivery media type. Omission selects application/json; null is invalid.",
            "default" : "application/json",
            "enum" : [ "application/json", "text/plain" ]
          }
        }
      },
      "AddField" : {
        "description" : "Subscriber field to create. Choice fields require options; non-choice fields must not include options.",
        "type" : "object",
        "properties" : {
          "personalizationTagName" : {
            "type" : "string",
            "description" : "Optional stable lowercase ASCII personalization tag name used in imports, forms, personalization, and subscriber field value updates. Leave empty to let the backend derive an available name from the field label.",
            "examples" : [ "favorite_topics" ]
          },
          "label" : {
            "type" : "string",
            "description" : "Human-readable field label shown in the app.",
            "examples" : [ "Favorite topics" ]
          },
          "fieldType" : {
            "$ref" : "#/components/schemas/FieldType",
            "description" : "Subscriber field type. EMAIL creates an additional validated email-address profile field; the built-in subscriber email field remains system-managed.",
            "type" : "string",
            "examples" : [ "SINGLE_CHOICE" ]
          },
          "required" : {
            "type" : "boolean",
            "description" : "Whether subscribers must provide a value for this field in signup and subscriber edit workflows.",
            "examples" : [ false ]
          },
          "internal" : {
            "type" : "boolean",
            "description" : "Whether this field is hidden from subscriber-facing forms and subscriber profile editing.",
            "examples" : [ false ]
          },
          "options" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "description" : "Option labels for SINGLE_CHOICE and MULTI_CHOICE fields. Must be empty for scalar fields."
          }
        }
      },
      "AddSubscriber" : {
        "description" : "Subscriber to create with typed subscriber field values, tags, and status.",
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string",
            "description" : "Subscriber email address."
          },
          "firstName" : {
            "type" : "string",
            "description" : "Subscriber first name."
          },
          "fields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldValueInput"
            },
            "description" : "Typed field values for the subscriber."
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "List of tag identifiers associated with the subscriber."
          },
          "subscriberStatus" : {
            "$ref" : "#/components/schemas/SubscriberStatus",
            "description" : "Subscriber's status.",
            "type" : "string"
          },
          "topicIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Active topic ids the subscriber joins. Missing means the tenant default topic."
          }
        }
      },
      "AddTag" : {
        "description" : "Customer-created tag that can be assigned to subscribers for segmentation and organization.",
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Tag name shown in the app.",
            "examples" : [ "VIP Customer" ]
          }
        }
      },
      "AddTopic" : {
        "description" : "Creates a topic; existing subscribers join only when explicitly requested.",
        "type" : "object",
        "properties" : {
          "label" : {
            "type" : "string",
            "description" : "Label shown to readers.",
            "examples" : [ "Podcasts" ]
          },
          "description" : {
            "type" : "string",
            "description" : "Optional description shown to readers."
          },
          "enrollExistingSubscribers" : {
            "type" : "boolean",
            "description" : "Enroll all existing subscribers into the new topic. Defaults to false."
          }
        }
      },
      "BooleanFieldValueRequest" : {
        "required" : [ "kind", "booleanValue" ],
        "description" : "Boolean subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Boolean field value kind.",
            "type" : "string",
            "examples" : [ "BOOLEAN" ]
          },
          "booleanValue" : {
            "type" : "boolean",
            "description" : "Boolean value.",
            "examples" : [ false ]
          }
        }
      },
      "BooleanFieldValueResponse" : {
        "required" : [ "kind", "booleanValue" ],
        "description" : "Boolean subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Boolean field value kind.",
            "type" : "string",
            "examples" : [ "BOOLEAN" ]
          },
          "booleanValue" : {
            "type" : "boolean",
            "description" : "Boolean value.",
            "examples" : [ false ]
          }
        }
      },
      "BuiltInField" : {
        "type" : "string",
        "enum" : [ "EMAIL", "FIRST_NAME" ]
      },
      "BuiltInFieldRef" : {
        "description" : "Built-in subscriber field reference. Only type and builtInField are valid properties.",
        "examples" : [ {
          "type" : "BUILT_IN",
          "builtInField" : "EMAIL"
        } ],
        "type" : "object",
        "properties" : {
          "builtInField" : {
            "$ref" : "#/components/schemas/BuiltInField"
          }
        }
      },
      "CustomEventConsentDto" : {
        "type" : "object",
        "properties" : {
          "source" : {
            "type" : "string"
          },
          "givenAt" : {
            "$ref" : "#/components/schemas/Instant"
          }
        }
      },
      "CustomEventRequestDto" : {
        "type" : "object",
        "properties" : {
          "_maildroppaExampleRequest" : {
            "$ref" : "#/components/schemas/JsonNode"
          },
          "eventKey" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          },
          "occurredAt" : {
            "$ref" : "#/components/schemas/Instant"
          },
          "idempotencyKey" : {
            "type" : "string"
          },
          "triggerAutomations" : {
            "type" : "boolean"
          },
          "properties" : {
            "$ref" : "#/components/schemas/JsonNode"
          },
          "consent" : {
            "$ref" : "#/components/schemas/CustomEventConsentDto"
          }
        }
      },
      "CustomFieldRef" : {
        "description" : "Customer-created subscriber field reference. Only type and fieldId are valid properties.",
        "examples" : [ {
          "type" : "CUSTOM",
          "fieldId" : "c851b8a5-a7a4-42be-a2d4-710db3cdd981"
        } ],
        "type" : "object",
        "properties" : {
          "fieldId" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }
      },
      "DateFieldValueRequest" : {
        "required" : [ "kind", "date" ],
        "description" : "Date subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Date field value kind.",
            "type" : "string",
            "examples" : [ "DATE" ]
          },
          "date" : {
            "$ref" : "#/components/schemas/LocalDate",
            "description" : "Date value.",
            "type" : "string",
            "examples" : [ "2026-05-09" ]
          }
        }
      },
      "DateFieldValueResponse" : {
        "required" : [ "kind", "date" ],
        "description" : "Date subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Date field value kind.",
            "type" : "string",
            "examples" : [ "DATE" ]
          },
          "date" : {
            "$ref" : "#/components/schemas/LocalDate",
            "description" : "Date value.",
            "type" : "string",
            "examples" : [ "2026-05-09" ]
          }
        }
      },
      "EmailFieldValueRequest" : {
        "required" : [ "kind", "text" ],
        "description" : "Email subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Email field value kind.",
            "type" : "string",
            "examples" : [ "EMAIL" ]
          },
          "text" : {
            "type" : "string",
            "description" : "Email value.",
            "examples" : [ "ann@example.com" ]
          }
        }
      },
      "EmailFieldValueResponse" : {
        "required" : [ "kind", "text" ],
        "description" : "Email subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Email field value kind.",
            "type" : "string",
            "examples" : [ "EMAIL" ]
          },
          "text" : {
            "type" : "string",
            "description" : "Email value.",
            "examples" : [ "ann@example.com" ]
          }
        }
      },
      "ErrorMessageDto" : {
        "type" : "object",
        "properties" : {
          "errorId" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          }
        }
      },
      "Field" : {
        "type" : "object",
        "description" : "Subscriber field definition.",
        "properties" : {
          "type" : {
            "$ref" : "#/components/schemas/FieldReferenceType",
            "description" : "Whether this item is a built-in subscriber attribute or a customer-created custom field.",
            "type" : "string",
            "examples" : [ "CUSTOM" ]
          },
          "builtInField" : {
            "$ref" : "#/components/schemas/BuiltInField",
            "description" : "Built-in field key. Present only for built-in fields.",
            "type" : "string",
            "examples" : [ "EMAIL" ]
          },
          "fieldId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the custom field. Present only for custom fields.",
            "type" : "string",
            "examples" : [ "c851b8a5-a7a4-42be-a2d4-710db3cdd981" ]
          },
          "personalizationTagName" : {
            "type" : "string",
            "description" : "Stable personalization tag name used in imports, forms, personalization, and subscriber field value updates.",
            "examples" : [ "favorite_topics" ]
          },
          "label" : {
            "type" : "string",
            "description" : "Human-readable field label shown in the app.",
            "examples" : [ "Favorite topics" ]
          },
          "fieldType" : {
            "$ref" : "#/components/schemas/FieldType",
            "description" : "Field type. SINGLE_CHOICE and MULTI_CHOICE are choice fields with options.",
            "type" : "string",
            "examples" : [ "MULTI_CHOICE" ]
          },
          "required" : {
            "type" : "boolean",
            "description" : "Whether subscribers must provide a value for this field in signup and subscriber edit workflows.",
            "examples" : [ false ]
          },
          "internal" : {
            "type" : "boolean",
            "description" : "Whether this field is hidden from subscriber-facing forms and subscriber profile editing.",
            "examples" : [ false ]
          },
          "active" : {
            "type" : "boolean",
            "description" : "False when a customer-created field has been archived.",
            "examples" : [ true ]
          },
          "position" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Ordering position in the field schema.",
            "examples" : [ 3 ]
          },
          "options" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldOption"
            },
            "description" : "Selectable options for SINGLE_CHOICE and MULTI_CHOICE fields."
          }
        }
      },
      "FieldCatalog" : {
        "description" : "Subscriber field schema containing built-in and customer-created fields.",
        "type" : "object",
        "properties" : {
          "fields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Field"
            },
            "description" : "Subscriber fields ordered by position."
          }
        }
      },
      "FieldFormUseDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "name" : {
            "type" : "string"
          }
        }
      },
      "FieldOption" : {
        "type" : "object",
        "description" : "Selectable option for a choice subscriber field.",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique option identifier. Leave null only when adding a new option in an update request.",
            "type" : "string",
            "examples" : [ "d851b8a5-a7a4-42be-a2d4-710db3cdd982" ]
          },
          "label" : {
            "type" : "string",
            "description" : "Human-readable option label.",
            "examples" : [ "Email marketing" ]
          },
          "position" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Ordering position within the field options.",
            "examples" : [ 0 ]
          },
          "active" : {
            "type" : "boolean",
            "description" : "Whether the option can still be selected for new subscriber field values.",
            "examples" : [ true ]
          }
        }
      },
      "FieldRef" : {
        "oneOf" : [ {
          "$ref" : "#/components/schemas/BuiltInFieldRef"
        }, {
          "$ref" : "#/components/schemas/CustomFieldRef"
        } ],
        "description" : "Strict typed field reference. BUILT_IN references use builtInField only; CUSTOM references use fieldId only.",
        "type" : "object"
      },
      "FieldReferenceType" : {
        "type" : "string",
        "enum" : [ "BUILT_IN", "CUSTOM" ]
      },
      "FieldType" : {
        "type" : "string",
        "enum" : [ "TEXT", "LONG_TEXT", "EMAIL", "NUMBER", "DATE", "BOOLEAN", "SINGLE_CHOICE", "MULTI_CHOICE" ]
      },
      "FieldUsage" : {
        "description" : "Stored product reference, content merge-tag finding, or external warning for a subscriber field.",
        "type" : "object",
        "properties" : {
          "category" : {
            "$ref" : "#/components/schemas/FieldUsageCategory",
            "description" : "Product area where the reference exists.",
            "type" : "string",
            "examples" : [ "AUTOMATION" ]
          },
          "area" : {
            "type" : "string",
            "description" : "Customer-facing content or product area.",
            "examples" : [ "Campaign" ]
          },
          "artifactId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Owning artifact ID when the backend has one stable identifier.",
            "type" : "string"
          },
          "artifactName" : {
            "type" : "string",
            "description" : "Owning artifact name when one exists.",
            "examples" : [ "Newsletter Signup" ]
          },
          "status" : {
            "type" : "string",
            "description" : "Owning artifact status when one exists.",
            "examples" : [ "ACTIVE" ]
          },
          "reason" : {
            "type" : "string",
            "description" : "Business reason why this reference blocks, warns, or informs."
          },
          "link" : {
            "type" : "string",
            "description" : "Stable link to the owning area when available."
          },
          "permanentDeleteBlocking" : {
            "type" : "boolean",
            "description" : "True when this usage blocks a future permanent delete check."
          }
        }
      },
      "FieldUsageCategory" : {
        "type" : "string",
        "enum" : [ "FORM", "AUTOMATION", "SEGMENT", "PURCHASE_CONNECTION", "IMPORT", "SEND_FILTER", "CONTENT_MERGE_TAG", "SEND_IN_PROGRESS", "EXTERNAL_HINT" ]
      },
      "FieldUsageReport" : {
        "description" : "Fresh usage report for deciding whether a subscriber field can be archived or permanently deleted later.",
        "type" : "object",
        "properties" : {
          "fieldId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the field.",
            "type" : "string"
          },
          "fieldLabel" : {
            "type" : "string",
            "description" : "Human-readable field label.",
            "examples" : [ "Favorite topics" ]
          },
          "personalizationTagName" : {
            "type" : "string",
            "description" : "Stable subscriber personalization tag name.",
            "examples" : [ "favorite_topics" ]
          },
          "fieldType" : {
            "$ref" : "#/components/schemas/FieldType",
            "description" : "Field type.",
            "type" : "string",
            "examples" : [ "MULTI_CHOICE" ]
          },
          "subscriberValueCount" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Subscriber field value assignments for this field. Multi-option rows count once per subscriber and field.",
            "examples" : [ 42 ]
          },
          "archiveBlocked" : {
            "type" : "boolean",
            "description" : "True when current write references block archival."
          },
          "permanentDeleteBlocked" : {
            "type" : "boolean",
            "description" : "True when current references or running sends block a future permanent delete check."
          },
          "blockingUsages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldUsage"
            },
            "description" : "Known write usages that block archival."
          },
          "warningUsages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldUsage"
            },
            "description" : "Known read or control usages that can continue after archival."
          },
          "contentMergeTagUsages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldUsage"
            },
            "description" : "Live merge-tag findings in sendable content. These do not block archival."
          },
          "permanentDeleteBlockingUsages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldUsage"
            },
            "description" : "Usages that currently block a future permanent delete check."
          },
          "externalHints" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldUsage"
            },
            "description" : "External write-path notices that do not block archival."
          }
        }
      },
      "FieldValueInput" : {
        "description" : "Field value submitted as part of subscriber create and update requests.",
        "type" : "object",
        "properties" : {
          "fieldId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the subscriber field.",
            "type" : "string",
            "examples" : [ "c851b8a5-a7a4-42be-a2d4-710db3cdd981" ]
          },
          "value" : {
            "$ref" : "#/components/schemas/FieldValueRequest",
            "description" : "Typed value for the field.",
            "type" : "object"
          }
        }
      },
      "FieldValueKind" : {
        "description" : "Typed value category used when reading or writing subscriber field values.",
        "type" : "string",
        "enum" : [ "TEXT", "EMAIL", "NUMBER", "DATE", "BOOLEAN", "SINGLE_OPTION", "MULTI_OPTION" ]
      },
      "FieldValueRequest" : {
        "type" : "object",
        "oneOf" : [ {
          "$ref" : "#/components/schemas/TextFieldValueRequest"
        }, {
          "$ref" : "#/components/schemas/EmailFieldValueRequest"
        }, {
          "$ref" : "#/components/schemas/NumberFieldValueRequest"
        }, {
          "$ref" : "#/components/schemas/DateFieldValueRequest"
        }, {
          "$ref" : "#/components/schemas/BooleanFieldValueRequest"
        }, {
          "$ref" : "#/components/schemas/SingleOptionFieldValueRequest"
        }, {
          "$ref" : "#/components/schemas/MultiOptionFieldValueRequest"
        } ],
        "description" : "Strict typed subscriber field value accepted by write endpoints.",
        "discriminator" : {
          "propertyName" : "kind"
        }
      },
      "FieldValueResponse" : {
        "oneOf" : [ {
          "$ref" : "#/components/schemas/TextFieldValueResponse"
        }, {
          "$ref" : "#/components/schemas/EmailFieldValueResponse"
        }, {
          "$ref" : "#/components/schemas/NumberFieldValueResponse"
        }, {
          "$ref" : "#/components/schemas/DateFieldValueResponse"
        }, {
          "$ref" : "#/components/schemas/BooleanFieldValueResponse"
        }, {
          "$ref" : "#/components/schemas/SingleOptionFieldValueResponse"
        }, {
          "$ref" : "#/components/schemas/MultiOptionFieldValueResponse"
        } ],
        "description" : "Strict typed subscriber field value returned by read endpoints.",
        "discriminator" : {
          "propertyName" : "kind"
        },
        "type" : "object"
      },
      "FormEmbedding" : {
        "description" : "Active signup form definition used by trusted website integrations to render subscriber fields.",
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the active form.",
            "type" : "string"
          },
          "type" : {
            "$ref" : "#/components/schemas/FormType",
            "description" : "Form type.",
            "type" : "string"
          },
          "inputFields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FormField"
            },
            "description" : "Subscriber fields in display order."
          }
        }
      },
      "FormField" : {
        "type" : "object",
        "description" : "Subscriber field configured for a signup form.",
        "properties" : {
          "fieldRef" : {
            "$ref" : "#/components/schemas/FieldRef",
            "description" : "Typed subscriber field reference. Built-ins use builtInField; custom fields use fieldId.",
            "type" : "object"
          },
          "personalizationTagName" : {
            "type" : "string",
            "description" : "Stable subscriber personalization tag name selected from the field schema.",
            "examples" : [ "favorite_topics" ]
          },
          "label" : {
            "type" : "string",
            "description" : "Label shown on the form.",
            "examples" : [ "Favorite topics" ]
          },
          "placeholder" : {
            "type" : "string",
            "description" : "Placeholder text shown on the form.",
            "examples" : [ "Choose one or more topics" ]
          },
          "isRequired" : {
            "type" : "boolean",
            "description" : "Whether the form requires this field.",
            "examples" : [ true ]
          },
          "position" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Ordering position within the form.",
            "examples" : [ 2 ]
          },
          "fieldType" : {
            "$ref" : "#/components/schemas/FieldType",
            "description" : "Subscriber field type resolved from the field schema and returned for rendering.",
            "type" : "string",
            "examples" : [ "MULTI_CHOICE" ]
          },
          "inputControl" : {
            "$ref" : "#/components/schemas/FormInputControl",
            "description" : "Configured HTML/input control for this form field.",
            "type" : "string",
            "examples" : [ "CHECKBOX_GROUP" ]
          },
          "optionValues" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "description" : "Choice option labels resolved from the field schema for SINGLE_CHOICE and MULTI_CHOICE rendering.",
            "readOnly" : true
          }
        },
        "required" : [ "optionValues" ]
      },
      "FormInputControl" : {
        "type" : "string",
        "enum" : [ "TEXT_INPUT", "TEXTAREA", "EMAIL_INPUT", "NUMBER_INPUT", "DATE_INPUT", "CHECKBOX", "SELECT", "RADIO_GROUP", "CHECKBOX_GROUP", "SELECT_MULTIPLE" ]
      },
      "FormOverviewDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "name" : {
            "type" : "string"
          },
          "type" : {
            "$ref" : "#/components/schemas/FormType"
          },
          "status" : {
            "$ref" : "#/components/schemas/FormStatus"
          },
          "publishedStatus" : {
            "$ref" : "#/components/schemas/LandingPageStatus"
          },
          "publicUrl" : {
            "type" : "string"
          },
          "lastPublishedAt" : {
            "$ref" : "#/components/schemas/LocalDateTime"
          },
          "routePath" : {
            "type" : "string"
          },
          "domain" : {
            "type" : "string"
          }
        }
      },
      "FormStatus" : {
        "type" : "string",
        "enum" : [ "ACTIVE", "INACTIVE" ]
      },
      "FormType" : {
        "type" : "string",
        "enum" : [ "DEFAULT", "SLIDER", "INLINE", "POPUP", "PAGE" ]
      },
      "Instant" : {
        "type" : "string",
        "format" : "date-time",
        "examples" : [ "2022-03-10T16:15:50Z" ]
      },
      "JsonNode" : {
        "type" : "object",
        "properties" : {
          "empty" : {
            "type" : "boolean"
          },
          "valueNode" : {
            "type" : "boolean"
          },
          "containerNode" : {
            "type" : "boolean"
          },
          "missingNode" : {
            "type" : "boolean"
          },
          "array" : {
            "type" : "boolean"
          },
          "object" : {
            "type" : "boolean"
          },
          "nodeType" : {
            "$ref" : "#/components/schemas/JsonNodeType"
          },
          "pojo" : {
            "type" : "boolean"
          },
          "number" : {
            "type" : "boolean"
          },
          "integralNumber" : {
            "type" : "boolean"
          },
          "floatingPointNumber" : {
            "type" : "boolean"
          },
          "short" : {
            "type" : "boolean"
          },
          "int" : {
            "type" : "boolean"
          },
          "long" : {
            "type" : "boolean"
          },
          "float" : {
            "type" : "boolean"
          },
          "double" : {
            "type" : "boolean"
          },
          "bigDecimal" : {
            "type" : "boolean"
          },
          "bigInteger" : {
            "type" : "boolean"
          },
          "textual" : {
            "type" : "boolean"
          },
          "boolean" : {
            "type" : "boolean"
          },
          "null" : {
            "type" : "boolean"
          },
          "binary" : {
            "type" : "boolean"
          }
        }
      },
      "JsonNodeType" : {
        "type" : "string",
        "enum" : [ "ARRAY", "BINARY", "BOOLEAN", "MISSING", "NULL", "NUMBER", "OBJECT", "POJO", "STRING" ]
      },
      "LandingPageStatus" : {
        "type" : "string",
        "enum" : [ "DRAFT", "PUBLISHED", "UNPUBLISHED" ]
      },
      "LocalDate" : {
        "type" : "string",
        "format" : "date",
        "examples" : [ "2022-03-10" ]
      },
      "LocalDateTime" : {
        "type" : "string",
        "format" : "date-time",
        "examples" : [ "2022-03-10T12:15:50" ]
      },
      "MultiOptionFieldValueRequest" : {
        "required" : [ "kind", "optionIds" ],
        "description" : "Multi-option subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Multi-option field value kind.",
            "type" : "string",
            "examples" : [ "MULTI_OPTION" ]
          },
          "optionIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Selected option IDs.",
            "examples" : [ [ "d851b8a5-a7a4-42be-a2d4-710db3cdd982" ] ]
          }
        }
      },
      "MultiOptionFieldValueResponse" : {
        "required" : [ "kind", "optionIds", "labels" ],
        "description" : "Multi-option subscriber field value with display labels.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Multi-option field value kind.",
            "type" : "string",
            "examples" : [ "MULTI_OPTION" ]
          },
          "optionIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Selected option IDs.",
            "examples" : [ [ "d851b8a5-a7a4-42be-a2d4-710db3cdd982" ] ]
          },
          "labels" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "description" : "Human-readable selected option labels."
          }
        }
      },
      "Number" : {
        "description" : "Holds a numeric value along with a formatted representation. This record is used to encapsulate a number and its corresponding formatted string.",
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "The numeric value.",
            "examples" : [ 12345 ]
          },
          "formattedValue" : {
            "type" : "string",
            "description" : "A formatted string representation of the numeric value. This might include locale-specific formatting like commas or currency symbols.",
            "examples" : [ "12,345" ]
          }
        }
      },
      "NumberFieldValueRequest" : {
        "required" : [ "kind", "number" ],
        "description" : "Number subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Number field value kind.",
            "type" : "string",
            "examples" : [ "NUMBER" ]
          },
          "number" : {
            "type" : "number",
            "description" : "Number value.",
            "examples" : [ 42.5 ]
          }
        }
      },
      "NumberFieldValueResponse" : {
        "required" : [ "kind", "number" ],
        "description" : "Number subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Number field value kind.",
            "type" : "string",
            "examples" : [ "NUMBER" ]
          },
          "number" : {
            "type" : "number",
            "description" : "Number value.",
            "examples" : [ 42.5 ]
          }
        }
      },
      "PaginatedSubscribersDto" : {
        "description" : "Paginated response containing SubscriberDto items.",
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriberOverview"
            },
            "description" : "The items on the current page."
          },
          "pageNumber" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Which page is this (1-based index)?"
          },
          "pageSize" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Number of items per page."
          },
          "totalItems" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Total number of items matching the query."
          },
          "totalPages" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Total number of pages based on page size."
          },
          "statusCounts" : {
            "$ref" : "#/components/schemas/SubscriberStatusCountsDto"
          }
        }
      },
      "PurchaseCaptureScopeDto" : {
        "type" : "object",
        "properties" : {
          "sourceId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "sourceName" : {
            "type" : "string"
          },
          "timeZone" : {
            "type" : "string"
          },
          "capturedOrdersFromUtc" : {
            "$ref" : "#/components/schemas/Instant"
          },
          "capturedOrdersToUtc" : {
            "$ref" : "#/components/schemas/Instant"
          },
          "baselineOpen" : {
            "type" : "boolean"
          },
          "attributionStartedAtUtc" : {
            "$ref" : "#/components/schemas/Instant"
          }
        }
      },
      "PurchasePeriodKind" : {
        "type" : "string",
        "enum" : [ "LAST_DAYS", "DATE_RANGE" ]
      },
      "PurchaseScopeKind" : {
        "type" : "string",
        "enum" : [ "ALL_PRODUCTS", "PRODUCTS", "VARIANTS", "GROUP" ]
      },
      "PurchaseSegmentCondition" : {
        "type" : "object",
        "properties" : {
          "sourceId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "scopeKind" : {
            "$ref" : "#/components/schemas/PurchaseScopeKind"
          },
          "products" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PurchaseSegmentProduct"
            }
          },
          "groupId" : {
            "type" : "string"
          },
          "period" : {
            "$ref" : "#/components/schemas/PurchaseSegmentPeriod"
          },
          "count" : {
            "type" : "integer",
            "format" : "int32"
          },
          "currency" : {
            "type" : "string"
          },
          "amount" : {
            "type" : "number"
          },
          "couponCode" : {
            "type" : "string"
          },
          "timeZoneId" : {
            "type" : "string"
          }
        }
      },
      "PurchaseSegmentPeriod" : {
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/PurchasePeriodKind"
          },
          "days" : {
            "type" : "integer",
            "format" : "int32"
          },
          "from" : {
            "$ref" : "#/components/schemas/LocalDate"
          },
          "to" : {
            "$ref" : "#/components/schemas/LocalDate"
          }
        }
      },
      "PurchaseSegmentProduct" : {
        "type" : "object",
        "properties" : {
          "productId" : {
            "type" : "string"
          },
          "variantId" : {
            "type" : "string"
          }
        }
      },
      "ReplaceSubscriberData" : {
        "required" : [ "email", "firstName", "subscriberStatus", "fields", "tags" ],
        "description" : "Atomic full replacement of all publicly replaceable subscriber data.",
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string",
            "description" : "Canonicalizable subscriber email address."
          },
          "firstName" : {
            "type" : "string",
            "description" : "Subscriber first name. Null clears it."
          },
          "subscriberStatus" : {
            "$ref" : "#/components/schemas/SubscriberStatus",
            "description" : "Manually set subscriber status.",
            "type" : "string"
          },
          "fields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldValueInput"
            },
            "description" : "Complete custom field value set."
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Complete customer tag assignment set."
          }
        }
      },
      "ReplaceSubscriberEmail" : {
        "required" : [ "email" ],
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string",
            "description" : "New subscriber email address.",
            "examples" : [ "alice@example.com" ]
          }
        }
      },
      "ReplaceSubscriberFirstName" : {
        "required" : [ "firstName" ],
        "type" : "object",
        "properties" : {
          "firstName" : {
            "type" : "string",
            "description" : "New first name. Null clears it."
          }
        }
      },
      "ReplaceSubscriberStatus" : {
        "required" : [ "subscriberStatus" ],
        "type" : "object",
        "properties" : {
          "subscriberStatus" : {
            "$ref" : "#/components/schemas/SubscriberStatus",
            "description" : "New manually selected subscriber status.",
            "type" : "string"
          }
        }
      },
      "ReplaceSubscriberTopics" : {
        "description" : "Complete set of active topics the subscriber should be subscribed to.",
        "type" : "object",
        "properties" : {
          "topicIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Active topic identifiers; topics left out are unsubscribed."
          },
          "overrideOptOuts" : {
            "type" : "boolean",
            "description" : "Reactivate topics the subscriber opted out of personally. Defaults to false."
          }
        }
      },
      "ReportInterval" : {
        "type" : "string",
        "enum" : [ "DAY", "WEEK", "MONTH", "QUARTER", "YEAR" ]
      },
      "ReportPeriodDto" : {
        "type" : "object",
        "properties" : {
          "fromDate" : {
            "type" : "string"
          },
          "toDate" : {
            "type" : "string"
          },
          "interval" : {
            "$ref" : "#/components/schemas/ReportInterval"
          }
        }
      },
      "RequestMessageDto" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string"
          }
        }
      },
      "RssNewsletterPreviewRequestDto" : {
        "type" : "object",
        "properties" : {
          "url" : {
            "type" : "string"
          }
        }
      },
      "RssNewsletterRequestDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "name" : {
            "type" : "string"
          },
          "sourceUrl" : {
            "type" : "string"
          },
          "siteUrl" : {
            "type" : "string"
          },
          "feedUrl" : {
            "type" : "string"
          },
          "feedTitle" : {
            "type" : "string"
          },
          "triggerMode" : {
            "$ref" : "#/components/schemas/RssTriggerMode"
          },
          "schedule" : {
            "type" : "string"
          },
          "minItems" : {
            "type" : "integer",
            "format" : "int32"
          },
          "thresholdMaxAgeDays" : {
            "type" : "integer",
            "format" : "int32"
          },
          "releasePolicy" : {
            "$ref" : "#/components/schemas/RssReleasePolicy"
          },
          "reviewAutoReleaseMinutes" : {
            "type" : "integer",
            "format" : "int32"
          },
          "segmentId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "senderProfileId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "topicId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "subjectPattern" : {
            "type" : "string"
          },
          "htmlContent" : {
            "type" : "string"
          },
          "cssContent" : {
            "type" : "string"
          },
          "maxItemsPerIssue" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "RssReleasePolicy" : {
        "type" : "string",
        "enum" : [ "AUTO", "REVIEW" ]
      },
      "RssResumeRequestDto" : {
        "type" : "object",
        "properties" : {
          "rebaseline" : {
            "type" : "boolean"
          }
        }
      },
      "RssTriggerMode" : {
        "type" : "string",
        "enum" : [ "INSTANT", "SCHEDULE", "THRESHOLD" ]
      },
      "Segment" : {
        "description" : "Stored subscriber segment.",
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the segment.",
            "type" : "string",
            "examples" : [ "cc4f239e-756d-4073-bd9c-f3fb8fc60a25" ]
          },
          "name" : {
            "type" : "string",
            "description" : "Segment name shown in the app.",
            "examples" : [ "DACH VIP subscribers" ]
          },
          "expression" : {
            "type" : "object",
            "properties" : {
              "conditionGroups" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/SegmentConditionGroup"
                }
              }
            },
            "description" : "Segment expression with condition groups. Conditions inside one group use AND; groups use OR."
          }
        }
      },
      "SegmentCondition" : {
        "type" : "object",
        "properties" : {
          "subjectType" : {
            "$ref" : "#/components/schemas/SegmentSubjectType"
          },
          "fieldRef" : {
            "$ref" : "#/components/schemas/SubscriberFilterFieldRef"
          },
          "operator" : {
            "$ref" : "#/components/schemas/SegmentOperator"
          },
          "operand" : {
            "$ref" : "#/components/schemas/SegmentOperand"
          }
        }
      },
      "SegmentConditionGroup" : {
        "type" : "object",
        "properties" : {
          "conditions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SegmentCondition"
            }
          }
        }
      },
      "SegmentCount" : {
        "description" : "Number of subscribers matching a segment.",
        "type" : "object",
        "properties" : {
          "subscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "SegmentExpression" : {
        "type" : "object",
        "properties" : {
          "conditionGroups" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SegmentConditionGroup"
            }
          }
        }
      },
      "SegmentOperand" : {
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/SegmentOperandType"
          },
          "text" : {
            "type" : "string"
          },
          "number" : {
            "type" : "number"
          },
          "date" : {
            "$ref" : "#/components/schemas/LocalDate"
          },
          "optionIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            }
          },
          "segmentId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "purchase" : {
            "$ref" : "#/components/schemas/PurchaseSegmentCondition"
          }
        }
      },
      "SegmentOperandType" : {
        "type" : "string",
        "enum" : [ "NONE", "TEXT", "NUMBER", "DATE", "OPTIONS", "SEGMENT", "PURCHASE" ]
      },
      "SegmentOperator" : {
        "type" : "string",
        "enum" : [ "RESPONDED_WITHIN_DAYS", "NO_RESPONSE_FOR_DAYS", "DELIVERED_WITHOUT_RESPONSE_AT_LEAST", "TEXT_EQUALS", "TEXT_NOT_EQUALS", "TEXT_EQUALS_IGNORE_CASE", "TEXT_STARTS_WITH", "TEXT_ENDS_WITH", "TEXT_CONTAINS", "NUMBER_EQUALS", "NUMBER_NOT_EQUALS", "NUMBER_GREATER_THAN", "NUMBER_LESS_THAN", "NUMBER_GREATER_OR_EQUAL", "NUMBER_LESS_OR_EQUAL", "DATE_EQUALS", "DATE_NOT_EQUALS", "DATE_BEFORE", "DATE_AFTER", "DATE_BEFORE_OR_EQUAL", "DATE_EQUAL_OR_AFTER", "BOOLEAN_IS_TRUE", "BOOLEAN_IS_FALSE", "OPTION_IS_ANY_OF", "OPTION_IS_NONE_OF", "OPTION_CONTAINS_ANY", "OPTION_CONTAINS_NONE", "TOPIC_OPTED_OUT", "CONTAINED_IN", "NOT_CONTAINED_IN", "IS_EMPTY", "IS_NOT_EMPTY", "PURCHASED", "NOT_PURCHASED", "PURCHASE_COUNT_AT_LEAST", "PURCHASE_COUNT_AT_MOST", "PURCHASE_COUNT_EQUALS", "FIRST_PURCHASE_IN_PERIOD", "LAST_PURCHASE_IN_PERIOD", "LAST_PURCHASE_BEFORE_PERIOD", "ORDER_VALUE_AT_LEAST", "ORDER_VALUE_AT_MOST", "COUPON_USED" ]
      },
      "SegmentPreview" : {
        "description" : "Matches, unknown results, reachable contacts and capture scope of an expression.",
        "type" : "object",
        "properties" : {
          "matchingCount" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Contacts proven to match the expression."
          },
          "unknownCount" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Contacts whose purchase facts are still unknown for this expression."
          },
          "reachableCount" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Matching contacts that are confirmed and, if a topic is given, subscribed to it."
          },
          "contacts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SegmentPreviewContactDto"
            },
            "description" : "The first 25 matching contacts."
          },
          "captureScopes" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PurchaseCaptureScopeDto"
            },
            "description" : "Captured order periods of the purchase sources the expression reads."
          }
        }
      },
      "SegmentPreviewContactDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "email" : {
            "type" : "string"
          },
          "firstName" : {
            "type" : "string"
          },
          "subscriberStatus" : {
            "type" : "string"
          }
        }
      },
      "SegmentRequest" : {
        "description" : "Segment definition based on subscriber field, tag, and nested segment conditions.",
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Segment name shown in the app.",
            "examples" : [ "DACH VIP subscribers" ]
          },
          "expression" : {
            "type" : "object",
            "properties" : {
              "conditionGroups" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/SegmentConditionGroup"
                }
              }
            },
            "description" : "Segment expression with condition groups. Conditions inside one group use AND; groups use OR. TOPICS conditions use fieldRef null and selected topic IDs in an OPTIONS operand. TOPIC_OPTED_OUT matches a current explicit reader opt-out from any selected active topic. PURCHASES conditions use fieldRef null, a purchase operator (PURCHASED, NOT_PURCHASED, PURCHASE_COUNT_AT_LEAST/AT_MOST/EQUALS, FIRST_PURCHASE_IN_PERIOD, LAST_PURCHASE_IN_PERIOD, LAST_PURCHASE_BEFORE_PERIOD, ORDER_VALUE_AT_LEAST/AT_MOST, COUPON_USED) and an operand of kind PURCHASE whose purchase object carries sourceId (null = all sources), scopeKind (ALL_PRODUCTS, PRODUCTS, VARIANTS, GROUP), products, groupId, period (LAST_DAYS or DATE_RANGE in the source zone, else the stored timeZoneId), count, currency plus amount, couponCode. Results follow SQL three-valued logic: proven facts are true, missing facts stay unknown. Legacy filterGroups are not part of this contract."
          }
        }
      },
      "SegmentSubjectType" : {
        "type" : "string",
        "enum" : [ "FIELD", "TAGS", "TOPICS", "SEGMENT", "PURCHASES" ]
      },
      "SelectedSubscriberTaggingAddResult" : {
        "description" : "Execution result for adding tags to selected subscribers.",
        "type" : "object",
        "properties" : {
          "selectedSubscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "taggedSubscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "alreadyTaggedSubscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "skippedSubscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "skippedByStatus" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "integer",
              "format" : "int32"
            }
          }
        }
      },
      "SelectedSubscriberTaggingRemovalResult" : {
        "description" : "Execution result for removing tags from selected subscribers.",
        "type" : "object",
        "properties" : {
          "selectedSubscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "updatedSubscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "withoutSelectedTagsSubscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "skippedSubscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "skippedByStatus" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "integer",
              "format" : "int32"
            }
          }
        }
      },
      "SelectedSubscriberTaggingRequest" : {
        "description" : "Bulk tag mutation request for explicitly selected subscribers.",
        "type" : "object",
        "properties" : {
          "subscriberIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Subscriber IDs to update."
          },
          "tagIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Tag IDs to add or remove."
          }
        }
      },
      "SendEmailMessageRequestDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          },
          "substitutionData" : {
            "type" : "object",
            "additionalProperties" : { }
          },
          "eventProperties" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "SignupDoubleOptInMailDecision" : {
        "type" : "string",
        "enum" : [ "QUEUED", "CONFIRMATION_MAIL_ALREADY_SENT", "SUPPRESSED_ALREADY_SUBSCRIBED", "SUPPRESSED_COOLDOWN", "SUPPRESSED_SUBSCRIBER_LIMIT", "SUPPRESSED_CUSTOMER_LIMIT", "SUPPRESSED_SUBSCRIBER_POLICY" ]
      },
      "SingleOptionFieldValueRequest" : {
        "required" : [ "kind", "optionId" ],
        "description" : "Single-option subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Single-option field value kind.",
            "type" : "string",
            "examples" : [ "SINGLE_OPTION" ]
          },
          "optionId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Selected option ID.",
            "type" : "string",
            "examples" : [ "d851b8a5-a7a4-42be-a2d4-710db3cdd982" ]
          }
        }
      },
      "SingleOptionFieldValueResponse" : {
        "required" : [ "kind", "optionId", "labels" ],
        "description" : "Single-option subscriber field value with its display label.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Single-option field value kind.",
            "type" : "string",
            "examples" : [ "SINGLE_OPTION" ]
          },
          "optionId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Selected option ID.",
            "type" : "string",
            "examples" : [ "d851b8a5-a7a4-42be-a2d4-710db3cdd982" ]
          },
          "labels" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "description" : "Human-readable selected option label."
          }
        }
      },
      "Subscriber" : {
        "description" : "Represents subscriber information including fields, tags, and status.",
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the subscriber.",
            "type" : "string"
          },
          "values" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriberFieldValue"
            },
            "description" : "Subscriber field display values for the subscriber. Use subscriber field value endpoints for typed values and option IDs."
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "List of tag identifiers associated with the subscriber."
          },
          "subscriberStatus" : {
            "$ref" : "#/components/schemas/SubscriberStatus",
            "description" : "Subscriber's status.",
            "type" : "string"
          },
          "registeredAt" : {
            "type" : "string",
            "description" : "Registration date/time of the subscriber."
          },
          "lastImportedAtUtc" : {
            "$ref" : "#/components/schemas/Instant",
            "description" : "UTC timestamp of the subscriber's latest successful import participation, if recorded.",
            "type" : "string"
          },
          "gdprAgreement" : {
            "type" : "string",
            "description" : "Text of GDPR agreement if applicable."
          }
        }
      },
      "SubscriberData" : {
        "description" : "Canonical replaceable subscriber data representation.",
        "type" : "object",
        "properties" : {
          "subscriberId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Stable subscriber identifier.",
            "type" : "string"
          },
          "email" : {
            "type" : "string",
            "description" : "Canonical lowercase email address."
          },
          "firstName" : {
            "type" : "string",
            "description" : "Subscriber first name. Null means no first name."
          },
          "subscriberStatus" : {
            "$ref" : "#/components/schemas/SubscriberStatus",
            "description" : "Current subscriber status.",
            "type" : "string"
          },
          "fields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldValueInput"
            },
            "description" : "Complete typed custom field value set, sorted by fieldId."
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Complete customer tag assignment set, sorted by tag ID."
          }
        }
      },
      "SubscriberFieldFormConflictDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "fieldId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "forms" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldFormUseDto"
            }
          }
        }
      },
      "SubscriberFieldValue" : {
        "type" : "object",
        "description" : "Represents an individual field value in a subscriber record.",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique custom field identifier. Built-in fields do not have an id.",
            "type" : "string"
          },
          "personalizationTagName" : {
            "type" : "string",
            "description" : "Stable subscriber personalization tag name returned in the personalizationTagName property."
          },
          "value" : {
            "type" : "string",
            "description" : "Display value for this field. Choice and multi-select values are returned as labels for display; use subscriber field value endpoints for typed option IDs."
          }
        }
      },
      "SubscriberFieldValues" : {
        "description" : "Typed subscriber field values for a subscriber.",
        "type" : "object",
        "properties" : {
          "subscriberId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the subscriber.",
            "type" : "string",
            "examples" : [ "3d9eec03-a0d5-410e-9f91-05e14915ec10" ]
          },
          "email" : {
            "type" : "string",
            "description" : "Subscriber email address.",
            "examples" : [ "ann@example.com" ]
          },
          "subscriberStatus" : {
            "$ref" : "#/components/schemas/SubscriberStatus",
            "description" : "Current subscriber status.",
            "type" : "string",
            "examples" : [ "CONFIRMED" ]
          },
          "fields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriberFieldView"
            },
            "description" : "Subscriber fields with their current typed values."
          }
        }
      },
      "SubscriberFieldView" : {
        "type" : "object",
        "description" : "A subscriber field and the subscriber's current value for it.",
        "properties" : {
          "fieldId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the subscriber field.",
            "type" : "string",
            "examples" : [ "c851b8a5-a7a4-42be-a2d4-710db3cdd981" ]
          },
          "personalizationTagName" : {
            "type" : "string",
            "description" : "Stable subscriber personalization tag name.",
            "examples" : [ "favorite_topics" ]
          },
          "value" : {
            "$ref" : "#/components/schemas/FieldValueResponse",
            "description" : "Typed field value, or null when the subscriber has no value for this field.",
            "type" : "object"
          }
        }
      },
      "SubscriberFilterFieldRef" : {
        "type" : "object"
      },
      "SubscriberImportErrorDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "requestId" : {
            "type" : "string"
          },
          "issues" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriberImportIssueDto"
            }
          },
          "totalIssueCount" : {
            "type" : "integer",
            "format" : "int64"
          },
          "issuesComplete" : {
            "type" : "boolean"
          },
          "issueCountsByCode" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "integer",
              "format" : "int64"
            }
          },
          "parameters" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "SubscriberImportIssueDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "rowNumber" : {
            "type" : "integer",
            "format" : "int32"
          },
          "columnIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "sourceName" : {
            "type" : "string"
          },
          "sourceValueId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "affectedRowCount" : {
            "type" : "integer",
            "format" : "int64"
          },
          "sampleRowNumbers" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32"
            }
          },
          "parameters" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "SubscriberOptInRequest" : {
        "description" : "Starts double opt-in without mutating subscriber profile before confirmation.",
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string"
          },
          "firstName" : {
            "type" : "string"
          },
          "fields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldValueInput"
            }
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            }
          },
          "gdprAgreement" : {
            "type" : "string"
          },
          "consentSource" : {
            "type" : "string"
          },
          "topicIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Active topic ids the confirmed subscriber joins. Missing means the tenant default topic."
          }
        }
      },
      "SubscriberOptInResponse" : {
        "description" : "Double opt-in attempt result.",
        "type" : "object",
        "properties" : {
          "signupAttemptId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "subscriberId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "doubleOptInMailDecision" : {
            "$ref" : "#/components/schemas/SignupDoubleOptInMailDecision"
          },
          "confirmationExpiresAtUtc" : {
            "$ref" : "#/components/schemas/Instant"
          }
        }
      },
      "SubscriberOverview" : {
        "type" : "object",
        "description" : "Subscriber list entry with only overview data.",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the subscriber.",
            "type" : "string"
          },
          "email" : {
            "type" : "string",
            "description" : "Subscriber email address."
          },
          "firstName" : {
            "type" : "string",
            "description" : "Subscriber first name, if present."
          },
          "subscriberStatus" : {
            "$ref" : "#/components/schemas/SubscriberStatus",
            "description" : "Subscriber's status.",
            "type" : "string"
          },
          "registeredAt" : {
            "type" : "string",
            "description" : "Registration date/time of the subscriber."
          },
          "lastImportedAtUtc" : {
            "$ref" : "#/components/schemas/Instant",
            "description" : "UTC timestamp of the subscriber's latest successful import participation, if recorded.",
            "type" : "string"
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "List of tag identifiers associated with the subscriber."
          },
          "visibleFieldValues" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriberFieldValue"
            },
            "description" : "Visible subscriber field display values for the list view."
          }
        }
      },
      "SubscriberStatus" : {
        "type" : "string",
        "enum" : [ "PENDING", "CONFIRMED", "UNSUBSCRIBED", "COLD", "BOUNCED", "SOFT_BOUNCED", "BLOCKED", "DELETED" ]
      },
      "SubscriberStatusChangeReportDto" : {
        "type" : "object",
        "properties" : {
          "reportPeriod" : {
            "$ref" : "#/components/schemas/ReportPeriodDto"
          },
          "entries" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubscriberStatusChangeSnapshotDto"
            }
          }
        }
      },
      "SubscriberStatusChangeSnapshotDto" : {
        "type" : "object",
        "properties" : {
          "pending" : {
            "type" : "integer",
            "format" : "int32"
          },
          "confirmed" : {
            "type" : "integer",
            "format" : "int32"
          },
          "unsubscribed" : {
            "type" : "integer",
            "format" : "int32"
          },
          "bounced" : {
            "type" : "integer",
            "format" : "int32"
          },
          "blocked" : {
            "type" : "integer",
            "format" : "int32"
          },
          "deleted" : {
            "type" : "integer",
            "format" : "int32"
          },
          "logDateTime" : {
            "type" : "string"
          }
        }
      },
      "SubscriberStatusCountsDto" : {
        "type" : "object",
        "description" : "Account-wide counts, independent of search, status filter and pagination. All includes every subscriber status.",
        "properties" : {
          "all" : {
            "type" : "integer",
            "format" : "int64"
          },
          "confirmed" : {
            "type" : "integer",
            "format" : "int64"
          },
          "pending" : {
            "type" : "integer",
            "format" : "int64"
          },
          "unsubscribed" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "SubscriberTopic" : {
        "description" : "Topic of the tenant together with the subscriber's subscription row, if any.",
        "type" : "object",
        "properties" : {
          "topicId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "label" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "topicStatus" : {
            "$ref" : "#/components/schemas/TopicStatus"
          },
          "subscriptionStatus" : {
            "$ref" : "#/components/schemas/TopicSubscriptionStatus",
            "description" : "Null when the subscriber was never assigned to the topic.",
            "type" : "string"
          },
          "source" : {
            "$ref" : "#/components/schemas/TopicSubscriptionSource"
          },
          "changedAtUtc" : {
            "$ref" : "#/components/schemas/Instant"
          },
          "optedOutBySubscriber" : {
            "type" : "boolean",
            "description" : "True when the subscriber opted out personally; bulk paths never override this."
          }
        }
      },
      "Tag" : {
        "description" : "Tag that can be assigned to subscribers for segmentation and organization.",
        "type" : "object",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the tag.",
            "type" : "string",
            "examples" : [ "78a4bde9-92f1-45d8-aba8-ef3f1bc2c234" ]
          },
          "name" : {
            "type" : "string",
            "description" : "Tag name shown in the app.",
            "examples" : [ "VIP Customer" ]
          },
          "origin" : {
            "$ref" : "#/components/schemas/TagOrigin",
            "description" : "Tag origin. CUSTOMER tags can be managed by customers; SYSTEM tags are managed by the application.",
            "type" : "string",
            "examples" : [ "CUSTOMER" ]
          },
          "active" : {
            "type" : "boolean",
            "description" : "Whether the tag can currently be assigned to subscribers.",
            "examples" : [ true ]
          },
          "archivedAt" : {
            "$ref" : "#/components/schemas/Instant",
            "description" : "When the tag was archived, or null for active tags.",
            "type" : "string"
          }
        }
      },
      "TagName" : {
        "description" : "Tag name submitted when renaming a customer-created tag.",
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Tag name shown in the app.",
            "examples" : [ "VIP Customer" ]
          }
        }
      },
      "TagOrigin" : {
        "type" : "string",
        "enum" : [ "CUSTOMER", "SYSTEM" ]
      },
      "TagPermanentDelete" : {
        "description" : "Exact tag-name confirmation for permanent tag deletion.",
        "type" : "object",
        "properties" : {
          "confirmationName" : {
            "type" : "string",
            "description" : "Current tag name that must match exactly.",
            "examples" : [ "VIP Customer" ]
          }
        }
      },
      "TagUsage" : {
        "description" : "Known usage of a tag.",
        "type" : "object",
        "properties" : {
          "category" : {
            "$ref" : "#/components/schemas/TagUsageCategory"
          },
          "area" : {
            "type" : "string"
          },
          "artifactId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "artifactName" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string"
          },
          "reason" : {
            "type" : "string"
          },
          "link" : {
            "type" : "string"
          },
          "permanentDeleteBlocking" : {
            "type" : "boolean"
          }
        }
      },
      "TagUsageCategory" : {
        "type" : "string",
        "enum" : [ "FORM_TAG_ASSIGN", "LINK_TAG_ASSIGN", "LINK_TAG_REMOVE", "AUTOMATION_TAG_ASSIGN", "AUTOMATION_TAG_REMOVE", "AUTOMATION_TAG_ADDED_TRIGGER", "AUTOMATION_TAG_REMOVED_TRIGGER", "AUTOMATION_TAG_CONDITION", "IMPORT_TAG_ASSIGN", "PURCHASE_TAG_ASSIGN", "SEGMENT_TAG_CONDITION", "SYSTEM_SEGMENT_TAG_CONDITION", "RUNNING_SEND_SEGMENT_TAG", "SUBSCRIBER_ASSIGNMENT", "EXTERNAL_HINT" ]
      },
      "TagUsageReport" : {
        "description" : "Fresh usage report for deciding whether a tag can be archived or permanently deleted.",
        "type" : "object",
        "properties" : {
          "tagId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "tagName" : {
            "type" : "string"
          },
          "tagOrigin" : {
            "$ref" : "#/components/schemas/TagOrigin"
          },
          "active" : {
            "type" : "boolean"
          },
          "subscriberAssignmentCount" : {
            "type" : "integer",
            "format" : "int64"
          },
          "archiveBlocked" : {
            "type" : "boolean"
          },
          "permanentDeleteBlocked" : {
            "type" : "boolean"
          },
          "archiveBlockingUsages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TagUsage"
            }
          },
          "archiveWarningUsages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TagUsage"
            }
          },
          "permanentDeleteBlockingUsages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TagUsage"
            }
          },
          "externalHints" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TagUsage"
            }
          }
        }
      },
      "TextFieldValueRequest" : {
        "required" : [ "kind", "text" ],
        "description" : "Text subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Text field value kind.",
            "type" : "string",
            "examples" : [ "TEXT" ]
          },
          "text" : {
            "type" : "string",
            "description" : "Text value.",
            "examples" : [ "Ann" ]
          }
        }
      },
      "TextFieldValueResponse" : {
        "required" : [ "kind", "text" ],
        "description" : "Text subscriber field value.",
        "type" : "object",
        "properties" : {
          "kind" : {
            "$ref" : "#/components/schemas/FieldValueKind",
            "description" : "Text field value kind.",
            "type" : "string",
            "examples" : [ "TEXT" ]
          },
          "text" : {
            "type" : "string",
            "description" : "Text value.",
            "examples" : [ "Ann" ]
          }
        }
      },
      "Topic" : {
        "type" : "object",
        "description" : "Subscription topic that readers can subscribe to and unsubscribe from individually.",
        "properties" : {
          "id" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Unique identifier of the topic.",
            "type" : "string"
          },
          "label" : {
            "type" : "string",
            "description" : "Label shown to readers on forms and the preference page.",
            "examples" : [ "Podcasts" ]
          },
          "description" : {
            "type" : "string",
            "description" : "Optional description shown to readers."
          },
          "position" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Catalog position; gaps are allowed."
          },
          "status" : {
            "$ref" : "#/components/schemas/TopicStatus",
            "description" : "ACTIVE topics can be offered and assigned; ARCHIVED topics keep their history only.",
            "type" : "string"
          },
          "archivedAtUtc" : {
            "$ref" : "#/components/schemas/Instant",
            "description" : "When the topic was archived.",
            "type" : "string"
          },
          "defaultTopic" : {
            "type" : "boolean",
            "description" : "Whether this is the tenant default topic."
          },
          "subscribedCount" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Subscribers currently subscribed to the topic."
          },
          "optedOutCount" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Subscribers who opted out of the topic themselves."
          },
          "enrollmentRunning" : {
            "type" : "boolean",
            "description" : "Whether existing subscribers are currently being enrolled into the topic."
          },
          "enrollment" : {
            "$ref" : "#/components/schemas/TopicEnrollmentDto",
            "description" : "Last enrollment outcome and additions committed across retries.",
            "type" : "object"
          }
        }
      },
      "TopicCatalog" : {
        "description" : "Topic catalog of the tenant in catalog order.",
        "type" : "object",
        "properties" : {
          "defaultTopicId" : {
            "$ref" : "#/components/schemas/UUID",
            "description" : "Topic every subscriber and message gets when nothing else is chosen.",
            "type" : "string"
          },
          "subscriberFacing" : {
            "type" : "boolean",
            "description" : "True once readers see topics, i.e. at least two topics are active."
          },
          "topics" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Topic"
            }
          }
        }
      },
      "TopicEnrollmentDto" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "$ref" : "#/components/schemas/TopicEnrollmentStatus"
          },
          "startedAtUtc" : {
            "$ref" : "#/components/schemas/Instant"
          },
          "addedSubscriberCount" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "TopicEnrollmentStatus" : {
        "type" : "string",
        "enum" : [ "RUNNING", "COMPLETED", "FAILED" ]
      },
      "TopicOrder" : {
        "description" : "Every active topic exactly once, in the desired catalog order.",
        "type" : "object",
        "properties" : {
          "topicIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Ordered active topic IDs; archived topics retain their positions."
          }
        }
      },
      "TopicRequestErrorDto" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          },
          "details" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "TopicRestore" : {
        "description" : "Restored topic with the number of subscriptions that became effective again.",
        "type" : "object",
        "properties" : {
          "topic" : {
            "$ref" : "#/components/schemas/Topic"
          },
          "reactivatedSubscriptionCount" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "TopicStatus" : {
        "type" : "string",
        "enum" : [ "ACTIVE", "ARCHIVED" ]
      },
      "TopicSubscriptionSource" : {
        "type" : "string",
        "enum" : [ "SIGNUP", "PREFERENCE_CENTER", "EMAIL_TOPIC_UNSUBSCRIBE", "CUSTOMER", "API", "IMPORT", "ENROLLMENT", "DEFAULT", "MIGRATION", "GLOBAL_UNSUBSCRIBE" ]
      },
      "TopicSubscriptionStatus" : {
        "type" : "string",
        "enum" : [ "SUBSCRIBED", "UNSUBSCRIBED" ]
      },
      "TopicUpdate" : {
        "description" : "Label and description of an active topic.",
        "type" : "object",
        "properties" : {
          "label" : {
            "type" : "string",
            "description" : "Label shown to readers."
          },
          "description" : {
            "type" : "string",
            "description" : "Optional description shown to readers."
          }
        }
      },
      "TopicUsageCategory" : {
        "type" : "string",
        "enum" : [ "DEFAULT_TOPIC", "FORM", "EMAIL_CAMPAIGN", "RSS_NEWSLETTER", "AUTOMATION_MESSAGE", "AUTOMATION_CONDITION", "AUTOMATION_TRIGGER", "SEGMENT_CONDITION", "RUNNING_IMPORT", "RUNNING_ENROLLMENT", "OPEN_SIGNUP_ATTEMPT" ]
      },
      "TopicUsageDto" : {
        "type" : "object",
        "properties" : {
          "category" : {
            "$ref" : "#/components/schemas/TopicUsageCategory"
          },
          "artifactId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "artifactName" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string"
          },
          "count" : {
            "type" : "integer",
            "format" : "int64"
          },
          "reason" : {
            "type" : "string"
          }
        }
      },
      "TopicUsageReport" : {
        "description" : "Why a topic cannot be archived right now, with areas and counts.",
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "topicId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "usages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TopicUsageDto"
            }
          }
        }
      },
      "UUID" : {
        "type" : "string",
        "format" : "uuid",
        "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
      },
      "UpdateField" : {
        "description" : "Editable subscriber field properties. Personalization tag name and field type are immutable.",
        "type" : "object",
        "properties" : {
          "label" : {
            "type" : "string",
            "description" : "Updated human-readable field label.",
            "examples" : [ "Favorite topics" ]
          },
          "required" : {
            "type" : "boolean",
            "description" : "Whether subscribers must provide a value for this field in signup and subscriber edit workflows.",
            "examples" : [ false ]
          },
          "internal" : {
            "type" : "boolean",
            "description" : "Whether this field is hidden from subscriber-facing forms and subscriber profile editing.",
            "examples" : [ false ]
          },
          "position" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Updated ordering position in the field schema.",
            "examples" : [ 3 ]
          },
          "options" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FieldOption"
            },
            "description" : "Complete option list for choice fields. Existing options must be included with their IDs; new options use a null ID. Non-choice fields must submit an empty list."
          },
          "removedOptionIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid",
              "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
            },
            "description" : "Choice option IDs to remove atomically with this field update. Omit when no options are removed."
          }
        }
      },
      "UpdateFieldValue" : {
        "description" : "Replacement value for a single subscriber field.",
        "type" : "object",
        "properties" : {
          "value" : {
            "$ref" : "#/components/schemas/FieldValueRequest"
          }
        }
      },
      "WebsiteDto" : {
        "type" : "object",
        "properties" : {
          "url" : {
            "type" : "string"
          }
        }
      },
      "WebsitePlacementDto" : {
        "type" : "object",
        "properties" : {
          "formId" : {
            "$ref" : "#/components/schemas/UUID"
          },
          "integration" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          }
        }
      },
      "WooCommercePluginPairingRequestDto" : {
        "type" : "object",
        "properties" : {
          "pairingCode" : {
            "type" : "string"
          },
          "siteUrl" : {
            "type" : "string"
          },
          "pluginVersion" : {
            "type" : "string"
          },
          "protocolVersion" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "WordPressSignupRequestDto" : {
        "description" : "A WordPress visitor signup after a successful contact-form submission. Replay the same request ID and body for up to 24 hours.",
        "type" : "object",
        "properties" : {
          "submittedAtUtc" : {
            "$ref" : "#/components/schemas/Instant"
          },
          "signup" : {
            "$ref" : "#/components/schemas/SubscriberOptInRequest"
          }
        }
      },
      "WordPressStandardFormDto" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          }
        }
      }
    },
    "securitySchemes" : {
      "SecurityScheme" : {
        "type" : "openIdConnect",
        "description" : "Authentication",
        "openIdConnectUrl" : "https://maildroppa.eu.auth0.com/.well-known/openid-configuration"
      },
      "ApiUser" : {
        "type" : "apiKey",
        "in" : "header",
        "name" : "X-API-Key",
        "description" : "Authenticate using your API token. Obtain your token from your UserProfile in the Maildroppa App and include it in the X-API-Key header."
      }
    }
  },
  "paths" : {
    "/account" : {
      "get" : {
        "summary" : "Identify the connected account",
        "description" : "The account ID remains stable when its API key is rotated. Includes the account owner name and email for identifying the connected account. No billing data is returned.",
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "tags" : [ "Account Resource" ]
      }
    },
    "/events" : {
      "post" : {
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CustomEventRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "summary" : "Accept",
        "tags" : [ "Custom Event Resource" ]
      }
    },
    "/events/sources/{sourceId}/cart" : {
      "post" : {
        "parameters" : [ {
          "name" : "sourceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "format" : "binary"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Accept",
        "tags" : [ "Cart Report Resource" ]
      }
    },
    "/events/sources/{sourceId}/order" : {
      "post" : {
        "parameters" : [ {
          "name" : "sourceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "format" : "binary"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Accept",
        "tags" : [ "Order Report Resource" ]
      }
    },
    "/events/sources/{sourceId}/orders/import" : {
      "post" : {
        "parameters" : [ {
          "name" : "sourceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "format" : "binary"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Accept",
        "tags" : [ "Order History Resource" ]
      }
    },
    "/events/sources/{sourceId}/tests/{testId}/cart" : {
      "post" : {
        "parameters" : [ {
          "name" : "sourceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "testId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "format" : "binary"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Cart",
        "tags" : [ "Purchase Connection Test Event Resource" ]
      }
    },
    "/events/sources/{sourceId}/tests/{testId}/order" : {
      "post" : {
        "parameters" : [ {
          "name" : "sourceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "testId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string",
                "format" : "binary"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Order",
        "tags" : [ "Purchase Connection Test Event Resource" ]
      }
    },
    "/fields" : {
      "get" : {
        "summary" : "Retrieve subscriber field schema.",
        "description" : "Returns built-in and customer-created subscriber fields. Choice fields include option IDs and labels.",
        "tags" : [ "Fields" ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscriber field schema retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FieldCatalog"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "post" : {
        "summary" : "Create a customer-created subscriber field.",
        "description" : "Creates a non-built-in subscriber field. If no personalization tag name is provided, the backend derives an available lowercase ASCII personalization tag name from the field label. SINGLE_CHOICE and MULTI_CHOICE require options; scalar fields must not include options.",
        "tags" : [ "Fields" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddField"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Field created.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Field"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid field data, duplicate personalization tag name, or field limit reached."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/fields/archive" : {
      "get" : {
        "summary" : "Retrieve active and archived subscriber field schema.",
        "description" : "Returns built-in, active, and archived subscriber fields for explicit archive contexts.",
        "tags" : [ "Fields" ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Archive field schema retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FieldCatalog"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/fields/{fieldId}" : {
      "put" : {
        "summary" : "Update a customer-created subscriber field.",
        "description" : "Updates label, required flag, internal visibility, position, and option metadata. Internal fields remain usable for email personalization. Setting internal to true is rejected with SUBSCRIBER_FIELD_USED_IN_FORMS and a form list while the field is used in subscriber forms. Personalization tag name and field type cannot be changed.",
        "tags" : [ "Fields" ],
        "parameters" : [ {
          "description" : "Unique identifier of the field to update.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateField"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Field updated.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Field"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid field update or option list."
          },
          "409" : {
            "description" : "Field is still used in subscriber forms.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberFieldFormConflictDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Field not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "delete" : {
        "summary" : "Archive a customer-created subscriber field.",
        "description" : "Archives a customer-created field so it is no longer active. Built-in fields cannot be archived.",
        "tags" : [ "Fields" ],
        "parameters" : [ {
          "description" : "Unique identifier of the field to archive.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Field archived."
          },
          "409" : {
            "description" : "Field archive blocked by write usages.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FieldUsageReport"
                }
              }
            }
          },
          "400" : {
            "description" : "Field cannot be archived."
          },
          "404" : {
            "description" : "Field not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/fields/{fieldId}/options/{optionId}" : {
      "delete" : {
        "summary" : "Delete an unused field option.",
        "description" : "Physically removes an option only when it is not used by subscriber values, segments, automations, or forms.",
        "tags" : [ "Fields" ],
        "parameters" : [ {
          "description" : "Unique identifier of the field.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "description" : "Unique identifier of the option to delete.",
          "in" : "path",
          "name" : "optionId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Field option deleted."
          },
          "400" : {
            "description" : "Field option is still in use or cannot be deleted."
          },
          "404" : {
            "description" : "Field or option not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/fields/{fieldId}/permanent-delete-check" : {
      "get" : {
        "summary" : "Check whether a subscriber field can be permanently deleted.",
        "description" : "Returns a fresh report for a future permanent-delete flow. This endpoint does not delete the field.",
        "tags" : [ "Fields" ],
        "parameters" : [ {
          "description" : "Unique identifier of the field.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Field permanent-delete check retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FieldUsageReport"
                }
              }
            }
          },
          "404" : {
            "description" : "Field not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/fields/{fieldId}/restore" : {
      "post" : {
        "summary" : "Restore an archived customer-created subscriber field.",
        "description" : "Restores an archived customer-created field when field limits and personalization tag name reservation rules allow it.",
        "tags" : [ "Fields" ],
        "parameters" : [ {
          "description" : "Unique identifier of the field to restore.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Field restored.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Field"
                }
              }
            }
          },
          "400" : {
            "description" : "Field cannot be restored."
          },
          "404" : {
            "description" : "Field not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/fields/{fieldId}/usage" : {
      "get" : {
        "summary" : "Retrieve subscriber field usage report.",
        "description" : "Returns a fresh usage report with subscriber value counts, archival blockers, warnings, and external write-path hints.",
        "tags" : [ "Fields" ],
        "parameters" : [ {
          "description" : "Unique identifier of the field.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Field usage report retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FieldUsageReport"
                }
              }
            }
          },
          "404" : {
            "description" : "Field not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/form-builder" : {
      "get" : {
        "summary" : "Retrieve form overviews.",
        "description" : "Returns signup form overviews.",
        "tags" : [ "Forms" ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Form overviews retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/FormOverviewDto"
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/form-builder/wordpress-standard/{requestId}" : {
      "put" : {
        "parameters" : [ {
          "name" : "requestId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WordPressStandardFormDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "summary" : "Create",
        "tags" : [ "Word Press Standard Form Resource" ]
      }
    },
    "/form-builder/{formId}/embedding" : {
      "get" : {
        "summary" : "Retrieve an active form for embedding.",
        "description" : "Returns the active form type and subscriber fields required by a trusted website integration.",
        "tags" : [ "Forms" ],
        "parameters" : [ {
          "description" : "Unique identifier of the form.",
          "in" : "path",
          "name" : "formId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Active form embedding retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FormEmbedding"
                }
              }
            }
          },
          "404" : {
            "description" : "Active form not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/form-builder/{formId}/preview" : {
      "get" : {
        "summary" : "Preview an owned embedded signup form",
        "description" : "Returns a transient runtime definition for the preview renderer, without publishing, recording a view or submitting a signup. Supports INLINE, POPUP and SLIDER.",
        "parameters" : [ {
          "name" : "formId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "tags" : [ "Signup Form Preview Resource" ]
      }
    },
    "/integrations/woocommerce/plugin/pairing" : {
      "post" : {
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WooCommercePluginPairingRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "summary" : "Pairing",
        "tags" : [ "Woo Commerce Plugin Public Resource" ]
      }
    },
    "/internal/subscriber-bulk-tagging/selected/add-tags" : {
      "post" : {
        "summary" : "Add tags to selected subscribers.",
        "description" : "Adds tag IDs to explicitly selected subscribers.",
        "tags" : [ "Subscriber Bulk Tagging" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SelectedSubscriberTaggingRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Selected subscriber tag add executed.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SelectedSubscriberTaggingAddResult"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid subscriber IDs or tag IDs."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/internal/subscriber-bulk-tagging/selected/remove-tags" : {
      "post" : {
        "summary" : "Remove tags from selected subscribers.",
        "description" : "Removes tag IDs from explicitly selected subscribers.",
        "tags" : [ "Subscriber Bulk Tagging" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SelectedSubscriberTaggingRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Selected subscriber tag removal executed.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SelectedSubscriberTaggingRemovalResult"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid subscriber IDs or tag IDs."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/internal/subscriber-system-fields" : {
      "get" : {
        "summary" : "Retrieve read-only subscriber system fields available for filtering.",
        "tags" : [ "Subscriber system fields" ],
        "responses" : {
          "200" : {
            "description" : "System field catalog returned.",
            "content" : {
              "application/json" : {
                "schema" : { }
              }
            }
          },
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/internal/subscribers/{subscriberId}/activity" : {
      "get" : {
        "parameters" : [ {
          "name" : "subscriberId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "category",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "cursor",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        }, {
          "name" : "outcome",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Get Activity",
        "tags" : [ "Subscriber Activity Resource" ]
      }
    },
    "/report/form" : {
      "get" : {
        "parameters" : [ {
          "name" : "fromDate",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "interval",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "default" : "DAY"
          }
        }, {
          "name" : "toDate",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Get Forms Reports",
        "tags" : [ "Form Report Resource" ]
      }
    },
    "/report/form/total" : {
      "get" : {
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Get Totals",
        "tags" : [ "Form Report Resource" ]
      }
    },
    "/report/subscriber-status-change" : {
      "get" : {
        "summary" : "Get subscriber growth",
        "description" : "Entries contain net changes per status, including negative values; confirmed changes are not a count of new signup submissions. Larger intervals sum daily changes. Reports cover the authenticated account across all websites and sources. Dates are inclusive and normalized to the available account period. logDateTime is a display label localized using the account locale.",
        "tags" : [ "Subscriber reports" ],
        "parameters" : [ {
          "description" : "Inclusive first date, yyyy-MM-dd",
          "required" : true,
          "name" : "fromDate",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "DAY, WEEK, MONTH, QUARTER or YEAR; defaults to DAY",
          "name" : "interval",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "default" : "DAY"
          }
        }, {
          "description" : "Inclusive last date, yyyy-MM-dd",
          "required" : true,
          "name" : "toDate",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscriber report",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberStatusChangeReportDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/report/subscriber-status-total" : {
      "get" : {
        "summary" : "Get subscriber totals",
        "description" : "Daily entries contain the subscriber count for each status. Larger intervals contain average counts. Reports cover the authenticated account across all websites and sources. Dates are inclusive and normalized to the available account period. logDateTime is a display label localized using the account locale.",
        "tags" : [ "Subscriber reports" ],
        "parameters" : [ {
          "description" : "Inclusive first date, yyyy-MM-dd",
          "required" : true,
          "name" : "fromDate",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "DAY, WEEK, MONTH, QUARTER or YEAR; defaults to DAY",
          "name" : "interval",
          "in" : "query",
          "schema" : {
            "type" : "string",
            "default" : "DAY"
          }
        }, {
          "description" : "Inclusive last date, yyyy-MM-dd",
          "required" : true,
          "name" : "toDate",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscriber report",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberStatusChangeReportDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/rss-newsletters" : {
      "get" : {
        "summary" : "List RSS newsletters",
        "description" : "Returns the authenticated account's non-archived newsletters by default. With archived=true, returns only archived newsletters.",
        "parameters" : [ {
          "name" : "archived",
          "in" : "query",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "tags" : [ "Rss Newsletter Resource" ]
      },
      "post" : {
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RssNewsletterRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "summary" : "Add",
        "tags" : [ "Rss Newsletter Resource" ]
      }
    },
    "/rss-newsletters/attention" : {
      "get" : {
        "summary" : "RSS newsletters requiring attention",
        "description" : "Account-scoped pending issue and last retained feed error, in one list. A deadline does not schedule sending while a newsletter is paused.",
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "tags" : [ "Rss Newsletter Review Resource" ]
      }
    },
    "/rss-newsletters/preview" : {
      "post" : {
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RssNewsletterPreviewRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "summary" : "Preview",
        "tags" : [ "Rss Newsletter Feed Resource" ]
      }
    },
    "/rss-newsletters/sender-profiles" : {
      "get" : {
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "List",
        "tags" : [ "Rss Newsletter Sender Profile Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}" : {
      "put" : {
        "summary" : "Update an RSS newsletter",
        "description" : "Requires the ETag returned when opening the newsletter in If-Match. Returns 412 if editable content has changed, or 428 if If-Match is missing. Feed-check and delivery progress do not invalidate the editing revision.",
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "If-Match",
          "in" : "header",
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RssNewsletterRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "If-Match or customer agreement acceptance is required."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "tags" : [ "Rss Newsletter Resource" ]
      },
      "get" : {
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Get",
        "tags" : [ "Rss Newsletter Resource" ]
      },
      "delete" : {
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Archive",
        "tags" : [ "Rss Newsletter Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/activate" : {
      "post" : {
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Activate",
        "tags" : [ "Rss Newsletter Feed Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/check-now" : {
      "post" : {
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Check Now",
        "tags" : [ "Rss Newsletter Feed Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/checks" : {
      "get" : {
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "pageNumber",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 10
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Checks",
        "tags" : [ "Rss Newsletter Feed Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/issues" : {
      "get" : {
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "pageNumber",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 10
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Issues",
        "tags" : [ "Rss Newsletter Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/issues/{issueId}/cancel" : {
      "post" : {
        "parameters" : [ {
          "name" : "issueId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Cancel Issue",
        "tags" : [ "Rss Newsletter Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/issues/{issueId}/preview" : {
      "get" : {
        "summary" : "Preview an RSS issue",
        "description" : "Returns account-owned issue content and delivery status without sending or releasing it. Personalization is not recipient-specific. Historical release metadata may be unavailable.",
        "parameters" : [ {
          "name" : "issueId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "tags" : [ "Rss Newsletter Review Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/issues/{issueId}/release" : {
      "post" : {
        "parameters" : [ {
          "name" : "issueId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Release Issue",
        "tags" : [ "Rss Newsletter Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/pause" : {
      "post" : {
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Pause",
        "tags" : [ "Rss Newsletter Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/restore" : {
      "post" : {
        "summary" : "Restore an archived RSS newsletter",
        "description" : "Available to AppUser and ApiUser. Restores an owned archived newsletter as PAUSED with USER reason and no next feed check. Does not fetch the feed, activate delivery or release an issue. Existing configuration and retained history are preserved. Returns 400 for a non-archived newsletter and 404 for an unknown or other account's newsletter.",
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "tags" : [ "Rss Newsletter Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/resume" : {
      "post" : {
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RssResumeRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "summary" : "Resume",
        "tags" : [ "Rss Newsletter Resource" ]
      }
    },
    "/rss-newsletters/{newsletterId}/test-email" : {
      "post" : {
        "parameters" : [ {
          "name" : "newsletterId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Send Test Email",
        "tags" : [ "Rss Newsletter Resource" ]
      }
    },
    "/segments" : {
      "get" : {
        "summary" : "Retrieve all segments.",
        "description" : "Returns stored segments with their current SegmentExpression. Subscriber counts are available through the count endpoint.",
        "tags" : [ "Segments" ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Segments retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Segment"
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "post" : {
        "summary" : "Create a segment.",
        "description" : "Creates a reusable segment from condition groups. Conditions inside one group use AND; groups use OR. Field conditions use subjectType FIELD with fieldRef. Tag conditions use subjectType TAGS without fieldRef. Nested segment conditions use subjectType SEGMENT with operand.segmentId.",
        "tags" : [ "Segments" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "examples" : {
                "SegmentExample" : {
                  "summary" : "Subscribers whose first name contains Ann and who have the VIP tag",
                  "value" : "{\n  \"name\": \"VIP Ann subscribers\",\n  \"expression\": {\n    \"conditionGroups\": [\n      {\n        \"conditions\": [\n          {\n            \"subjectType\": \"FIELD\",\n            \"fieldRef\": {\n              \"type\": \"BUILT_IN\",\n              \"builtInField\": \"FIRST_NAME\"\n            },\n            \"operator\": \"TEXT_CONTAINS\",\n            \"operand\": {\n              \"kind\": \"TEXT\",\n              \"text\": \"Ann\",\n              \"number\": null,\n              \"date\": null,\n              \"optionIds\": []\n            }\n          },\n          {\n            \"subjectType\": \"TAGS\",\n            \"operator\": \"OPTION_CONTAINS_ANY\",\n            \"operand\": {\n              \"kind\": \"OPTIONS\",\n              \"text\": null,\n              \"number\": null,\n              \"date\": null,\n              \"optionIds\": [\n                \"c851b8a5-a7a4-42be-a2d4-710db3cdd983\"\n              ]\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n"
                }
              },
              "schema" : {
                "$ref" : "#/components/schemas/SegmentRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Segment created.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Segment"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid segment name or expression."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/segments/preview" : {
      "post" : {
        "summary" : "Preview a segment expression.",
        "description" : "Counts proven matches and unknown results, lists the first 25 matching contacts and the contacts currently reachable (confirmed; subscribed to the optional topic). Purchase conditions report the captured order period of every source they read. Preview and stored evaluation share the same compiled predicate.",
        "tags" : [ "Segments" ],
        "parameters" : [ {
          "name" : "topicId",
          "in" : "query",
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SegmentExpression"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Preview computed.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SegmentPreview"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        }
      }
    },
    "/segments/subscriber-counts" : {
      "get" : {
        "summary" : "Count subscribers for all segments",
        "description" : "Account scoped. Confirmed subscribers matching each stored segment. Topic eligibility is evaluated separately when sending.",
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "tags" : [ "Segment Subscriber Count Resource" ]
      }
    },
    "/segments/{segmentId}" : {
      "put" : {
        "summary" : "Update a segment.",
        "description" : "Replaces the segment name and expression. The expression must use the current condition-group model.",
        "tags" : [ "Segments" ],
        "parameters" : [ {
          "description" : "Unique identifier of the segment to update.",
          "in" : "path",
          "name" : "segmentId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SegmentRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Segment updated.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Segment"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid segment name or expression."
          },
          "404" : {
            "description" : "Segment not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "get" : {
        "summary" : "Retrieve a segment.",
        "description" : "Returns one stored segment by ID.",
        "tags" : [ "Segments" ],
        "parameters" : [ {
          "description" : "Unique identifier of the segment.",
          "in" : "path",
          "name" : "segmentId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Segment retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Segment"
                }
              }
            }
          },
          "404" : {
            "description" : "Segment not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "delete" : {
        "summary" : "Delete a segment.",
        "description" : "Deletes a customer segment when current usage rules allow it.",
        "tags" : [ "Segments" ],
        "parameters" : [ {
          "description" : "Unique identifier of the segment to delete.",
          "in" : "path",
          "name" : "segmentId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Segment deleted."
          },
          "400" : {
            "description" : "Segment cannot be deleted because it is in use."
          },
          "404" : {
            "description" : "Segment not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/segments/{segmentId}/count" : {
      "get" : {
        "summary" : "Count segment subscribers.",
        "description" : "Counts subscribers matching a stored segment expression.",
        "tags" : [ "Segments" ],
        "parameters" : [ {
          "description" : "Unique identifier of the segment to count.",
          "in" : "path",
          "name" : "segmentId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Segment subscriber count returned.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SegmentCount"
                }
              }
            }
          },
          "404" : {
            "description" : "Segment not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers" : {
      "get" : {
        "summary" : "Retrieve paginated subscribers",
        "description" : "Returns a list of subscribers filtered by status and query, with pagination.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "Page number.",
          "in" : "query",
          "name" : "pageNumber",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "description" : "Number of items per page.",
          "in" : "query",
          "name" : "pageSize",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 100
          }
        }, {
          "description" : "Case-insensitive email or first-name prefix.",
          "in" : "query",
          "name" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Subscriber status filter.",
          "in" : "query",
          "name" : "status",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Successful retrieval.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedSubscribersDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid request parameters."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "delete" : {
        "summary" : "Delete subscribers in bulk",
        "description" : "Removes multiple subscribers by providing a list of UUIDs.",
        "tags" : [ "Subscribers" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/UUID"
                }
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Subscribers deleted."
          },
          "400" : {
            "description" : "Bulk deletion not allowed in the current context."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "post" : {
        "summary" : "Add a new subscriber (direct add)",
        "description" : "Creates a subscriber entry immediately, without double opt-in.\nWhen the daily direct-add quota is exceeded, the request fails with a guidance message\nto use CSV import or the /subscribers/opt-in endpoint.\n",
        "tags" : [ "Subscribers" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddSubscriber"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscriber created.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Subscriber"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid subscriber data or quota exceeded."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/all" : {
      "delete" : {
        "summary" : "Delete all subscribers of a status",
        "description" : "Removes all subscribers optionally filtered by status. Performs async deletion.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "Subscriber status filter.",
          "in" : "query",
          "name" : "status",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Bulk deletion request accepted."
          },
          "400" : {
            "description" : "Bulk deletion not allowed in the current context."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/by-email/{email}" : {
      "delete" : {
        "summary" : "Remove a single subscriber by email",
        "description" : "Removes a subscriber record by email.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "name" : "email",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/by-email/{email}/field-values" : {
      "get" : {
        "summary" : "Retrieve subscriber field values by email.",
        "description" : "Returns typed field values for the subscriber identified by email.",
        "tags" : [ "Subscriber Field Values" ],
        "parameters" : [ {
          "description" : "Email address of the subscriber.",
          "in" : "path",
          "name" : "email",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscriber field values retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberFieldValues"
                }
              }
            }
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/by-email/{email}/field-values/{fieldId}" : {
      "put" : {
        "summary" : "Replace a subscriber field value by email.",
        "description" : "Replaces one active typed subscriber field value for the subscriber identified by email. Blank TEXT and EMAIL values clear an optional field; required and archived fields cannot be cleared or changed.",
        "tags" : [ "Subscriber Field Values" ],
        "parameters" : [ {
          "description" : "Email address of the subscriber.",
          "in" : "path",
          "name" : "email",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Unique identifier of the subscriber field.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateFieldValue"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Field value replaced or cleared."
          },
          "400" : {
            "description" : "Invalid value kind or field/value mismatch."
          },
          "404" : {
            "description" : "Subscriber or field not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "delete" : {
        "summary" : "Clear a subscriber field value by email.",
        "description" : "Removes the current value for one active or archived subscriber field identified by email.",
        "tags" : [ "Subscriber Field Values" ],
        "parameters" : [ {
          "description" : "Email address of the subscriber.",
          "in" : "path",
          "name" : "email",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Unique identifier of the subscriber field.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Field value cleared."
          },
          "400" : {
            "description" : "Required field values cannot be removed."
          },
          "404" : {
            "description" : "Subscriber or field not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/count" : {
      "get" : {
        "summary" : "Count subscribers",
        "description" : "Returns the number of subscribers for a given status.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "Subscriber status filter.",
          "in" : "query",
          "name" : "status",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Count returned.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Number"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/filtered" : {
      "post" : {
        "summary" : "Retrieve subscribers matching a segment expression",
        "description" : "Applies the current SegmentExpression condition-group model with status and pagination options. Conditions inside one group use AND; groups use OR. Field conditions use subjectType FIELD with fieldRef. Tag conditions use subjectType TAGS and tag IDs in operand.optionIds. Nested segment conditions use subjectType SEGMENT and operand.segmentId.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "Page number.",
          "in" : "query",
          "name" : "pageNumber",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "description" : "Number of items per page.",
          "in" : "query",
          "name" : "pageSize",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 100
          }
        }, {
          "description" : "Subscriber status filter.",
          "in" : "query",
          "name" : "status",
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "examples" : {
                "FilterExample" : {
                  "summary" : "Subscribers whose first name contains \"Ann\", selected DACH as country, and assigned the VIP tag",
                  "value" : {
                    "conditionGroups" : [ {
                      "conditions" : [ {
                        "subjectType" : "FIELD",
                        "fieldRef" : {
                          "type" : "BUILT_IN",
                          "builtInField" : "FIRST_NAME"
                        },
                        "operator" : "TEXT_CONTAINS",
                        "operand" : {
                          "kind" : "TEXT",
                          "text" : "Ann",
                          "number" : null,
                          "date" : null,
                          "optionIds" : [ ]
                        }
                      }, {
                        "subjectType" : "FIELD",
                        "fieldRef" : {
                          "type" : "CUSTOM",
                          "fieldId" : "c851b8a5-a7a4-42be-a2d4-710db3cdd982"
                        },
                        "operator" : "OPTION_CONTAINS_ANY",
                        "operand" : {
                          "kind" : "OPTIONS",
                          "text" : null,
                          "number" : null,
                          "date" : null,
                          "optionIds" : [ "d851b8a5-a7a4-42be-a2d4-710db3cdd982", "d851b8a5-a7a4-42be-a2d4-710db3cdd983", "d851b8a5-a7a4-42be-a2d4-710db3cdd984" ]
                        }
                      }, {
                        "subjectType" : "TAGS",
                        "operator" : "OPTION_CONTAINS_ANY",
                        "operand" : {
                          "kind" : "OPTIONS",
                          "text" : null,
                          "number" : null,
                          "date" : null,
                          "optionIds" : [ "c851b8a5-a7a4-42be-a2d4-710db3cdd983" ]
                        }
                      } ]
                    } ]
                  }
                }
              },
              "schema" : {
                "type" : "object",
                "properties" : {
                  "conditionGroups" : {
                    "type" : "array",
                    "items" : {
                      "$ref" : "#/components/schemas/SegmentConditionGroup"
                    }
                  }
                },
                "description" : "SegmentExpression to apply directly to subscribers."
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscribers retrieved successfully.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedSubscribersDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        }
      }
    },
    "/subscribers/filtered-count" : {
      "post" : {
        "summary" : "Count subscribers matching a segment expression",
        "description" : "Counts subscribers matching the current SegmentExpression condition-group model.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "Subscriber status filter.",
          "in" : "query",
          "name" : "status",
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "conditionGroups" : {
                    "type" : "array",
                    "items" : {
                      "$ref" : "#/components/schemas/SegmentConditionGroup"
                    }
                  }
                },
                "description" : "SegmentExpression to apply directly to subscribers."
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Count returned.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Number"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        }
      }
    },
    "/subscribers/opt-in" : {
      "post" : {
        "summary" : "Start double opt-in for a new subscriber",
        "description" : "Creates an immutable signup attempt and queues double opt-in mail delivery.\nSubscriber profile, tags, consent, automations and webhooks are deferred until confirmation.\n",
        "tags" : [ "Subscribers" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubscriberOptInRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "202" : {
            "description" : "Opt-in attempt recorded.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberOptInResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid subscriber data."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/wordpress-signup-requests" : {
      "get" : {
        "summary" : "Check WordPress signup support",
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "tags" : [ "Word Press Signup Request Resource" ]
      }
    },
    "/subscribers/wordpress-signup-requests/{requestId}" : {
      "put" : {
        "summary" : "Record a WordPress signup once",
        "description" : "Same account, request ID and body return the original result. Changed data returns 409; submissions older than 24 hours return 410. Uses the account default signup flow.",
        "parameters" : [ {
          "name" : "requestId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "placementId",
          "in" : "query",
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "X-Maildroppa-Credential-Id",
          "in" : "header",
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WordPressSignupRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "tags" : [ "Word Press Signup Request Resource" ]
      }
    },
    "/subscribers/{subscriberId}" : {
      "get" : {
        "summary" : "Retrieve a subscriber by ID",
        "description" : "Fetches a specific subscriber using its UUID.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "UUID of the subscriber.",
          "in" : "path",
          "name" : "subscriberId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscriber retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Subscriber"
                }
              }
            }
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "delete" : {
        "summary" : "Remove a single subscriber by ID",
        "description" : "Removes a subscriber record by UUID.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "UUID of the subscriber.",
          "in" : "path",
          "name" : "subscriberId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Subscriber deleted."
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/{subscriberId}/data" : {
      "put" : {
        "summary" : "Replace subscriber data",
        "description" : "Atomically replaces email, first name, manual status, the complete custom-field value set, and the complete customer-tag set. If-Match must contain exactly the strong ETag from the corresponding subscriber-data GET. Required active fields cannot be omitted. Assigned archived fields and customer tags may only be retained unchanged or removed by omission. System tags are rejected in the request and preserved server-side.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "UUID of the subscriber.",
          "in" : "path",
          "name" : "subscriberId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "description" : "Strong ETag from GET /subscribers/{subscriberId}/data.",
          "in" : "header",
          "name" : "If-Match",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ReplaceSubscriberData"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "204" : {
            "description" : "Subscriber data replaced."
          },
          "400" : {
            "description" : "Invalid subscriber data or If-Match header."
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "409" : {
            "description" : "Email address is already assigned."
          },
          "412" : {
            "description" : "Subscriber data changed since it was read."
          },
          "428" : {
            "description" : "If-Match is required, or the customer agreements must be accepted before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "get" : {
        "summary" : "Retrieve canonical subscriber data",
        "description" : "Returns email, first name, manual status, active and assigned archived custom-field values, and active or assigned archived customer tags. System tags are excluded. Arrays are canonically sorted, and the strong ETag hashes the exact uncompressed JSON response bytes.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "name" : "subscriberId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscriber data retrieved.",
            "headers" : {
              "ETag" : {
                "description" : "Strong opaque subscriber-data concurrency token."
              },
              "Cache-Control" : {
                "description" : "Always no-store."
              }
            },
            "content" : {
              "application/vnd.maildroppa.subscriber-data+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberData"
                }
              }
            }
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/{subscriberId}/email" : {
      "put" : {
        "summary" : "Update subscriber email",
        "description" : "Changes only the email address of a subscriber.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "UUID of the subscriber.",
          "in" : "path",
          "name" : "subscriberId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ReplaceSubscriberEmail"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Email replaced."
          },
          "400" : {
            "description" : "Invalid email."
          },
          "409" : {
            "description" : "Email address is already assigned."
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/{subscriberId}/field-values" : {
      "get" : {
        "summary" : "Retrieve subscriber field values.",
        "description" : "Returns the subscriber's typed field values for all active and built-in fields.",
        "tags" : [ "Subscriber Field Values" ],
        "parameters" : [ {
          "description" : "Unique identifier of the subscriber.",
          "in" : "path",
          "name" : "subscriberId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscriber field values retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberFieldValues"
                }
              }
            }
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/{subscriberId}/field-values/{fieldId}" : {
      "put" : {
        "summary" : "Replace a subscriber field value.",
        "description" : "Replaces one active typed subscriber field value. Blank TEXT and EMAIL values clear an optional field; required and archived fields cannot be cleared or changed.",
        "tags" : [ "Subscriber Field Values" ],
        "parameters" : [ {
          "description" : "Unique identifier of the subscriber field.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "description" : "Unique identifier of the subscriber.",
          "in" : "path",
          "name" : "subscriberId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateFieldValue"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Field value replaced or cleared."
          },
          "400" : {
            "description" : "Invalid value kind or field/value mismatch."
          },
          "404" : {
            "description" : "Subscriber or field not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "delete" : {
        "summary" : "Clear a subscriber field value.",
        "description" : "Removes the current value for one active or archived subscriber field.",
        "tags" : [ "Subscriber Field Values" ],
        "parameters" : [ {
          "description" : "Unique identifier of the subscriber field.",
          "in" : "path",
          "name" : "fieldId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "description" : "Unique identifier of the subscriber.",
          "in" : "path",
          "name" : "subscriberId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Field value cleared."
          },
          "400" : {
            "description" : "Required field values cannot be removed."
          },
          "404" : {
            "description" : "Subscriber or field not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/{subscriberId}/first-name" : {
      "put" : {
        "summary" : "Update subscriber first name",
        "description" : "Changes only the first name. A null value clears it.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "UUID of the subscriber.",
          "in" : "path",
          "name" : "subscriberId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ReplaceSubscriberFirstName"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "First name replaced."
          },
          "400" : {
            "description" : "Invalid first name request."
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/{subscriberId}/status" : {
      "put" : {
        "summary" : "Update subscriber status",
        "description" : "Changes only the subscriber status.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "description" : "UUID of the subscriber.",
          "in" : "path",
          "name" : "subscriberId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ReplaceSubscriberStatus"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Status replaced."
          },
          "400" : {
            "description" : "Invalid subscriber status request."
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/{subscriberId}/tags/{tagId}" : {
      "delete" : {
        "summary" : "Remove a customer tag from a subscriber",
        "description" : "Removes an active or archived customer-tag assignment. System tags are rejected and preserved.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "name" : "subscriberId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "tagId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Tag removed or already absent."
          },
          "400" : {
            "description" : "Tag is system-managed or otherwise not removable."
          },
          "404" : {
            "description" : "Subscriber or tag not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "put" : {
        "summary" : "Assign a customer tag to a subscriber",
        "description" : "Assigns an active customer tag. An already assigned archived customer tag is an idempotent no-op; new archived assignments and system tags are rejected.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "name" : "subscriberId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "tagId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Tag assigned or already present."
          },
          "400" : {
            "description" : "Tag is archived, system-managed, or otherwise not assignable."
          },
          "404" : {
            "description" : "Subscriber or tag not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/subscribers/{subscriberId}/topics" : {
      "put" : {
        "summary" : "Replace the subscriber's active topics.",
        "description" : "Topics left out are unsubscribed. Topics the subscriber opted out of personally are only reactivated with overrideOptOuts.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "name" : "subscriberId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ReplaceSubscriberTopics"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Subscriber topics replaced."
          },
          "400" : {
            "description" : "Invalid topic set or subscriber status cannot hold topics."
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "409" : {
            "description" : "TOPIC_OPT_OUT_PROTECTED: the subscriber opted out of listed topics."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "get" : {
        "summary" : "Retrieve the subscriber's topics.",
        "description" : "Active topics plus archived topics the subscriber still has a row for, each with status, source and change time.",
        "tags" : [ "Subscribers" ],
        "parameters" : [ {
          "name" : "subscriberId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Subscriber topics.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/SubscriberTopic"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Subscriber not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/tags" : {
      "get" : {
        "summary" : "Retrieve tags.",
        "description" : "Returns customer-created and system-managed tags. Archived tags are excluded unless includeArchived is true.",
        "tags" : [ "Tags" ],
        "parameters" : [ {
          "name" : "includeArchived",
          "in" : "query",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "List of tags retrieved.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Tag"
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "post" : {
        "summary" : "Create a customer tag.",
        "description" : "Creates a CUSTOMER tag that can be assigned to subscribers and used in segment conditions.",
        "tags" : [ "Tags" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddTag"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Tag created.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Tag"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        }
      }
    },
    "/tags/subscriber-counts" : {
      "get" : {
        "summary" : "Count subscribers for all tags",
        "description" : "Account scoped. All non-deleted subscribers assigned to each active tag.",
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "tags" : [ "Tag Subscriber Count Resource" ]
      }
    },
    "/tags/{tagId}" : {
      "put" : {
        "summary" : "Rename a customer tag.",
        "description" : "Updates the name of an active CUSTOMER tag. Tag origin cannot be changed by this endpoint.",
        "tags" : [ "Tags" ],
        "parameters" : [ {
          "description" : "Unique identifier of the tag to rename.",
          "in" : "path",
          "name" : "tagId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TagName"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Tag updated.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Tag"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid input data."
          },
          "404" : {
            "description" : "Tag not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/tags/{tagId}/archive" : {
      "post" : {
        "summary" : "Archive a customer tag.",
        "description" : "Archives a CUSTOMER tag when no active assignment path blocks archival. Existing subscriber assignments remain.",
        "tags" : [ "Tags" ],
        "parameters" : [ {
          "description" : "Unique identifier of the tag to archive.",
          "in" : "path",
          "name" : "tagId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Tag archived."
          },
          "400" : {
            "description" : "Tag cannot be archived."
          },
          "409" : {
            "description" : "Archive blocked by current assignment references.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TagUsageReport"
                }
              }
            }
          },
          "404" : {
            "description" : "Tag not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/tags/{tagId}/permanent-delete" : {
      "post" : {
        "summary" : "Permanently delete an archived customer tag.",
        "description" : "Marks an archived CUSTOMER tag permanently deleted after a fresh blocker check and exact name confirmation. Subscriber assignments are deleted.",
        "tags" : [ "Tags" ],
        "parameters" : [ {
          "description" : "Unique identifier of the archived tag to permanently delete.",
          "in" : "path",
          "name" : "tagId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TagPermanentDelete"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Tag permanently deleted."
          },
          "400" : {
            "description" : "Tag is active, system-owned, or confirmation is invalid."
          },
          "409" : {
            "description" : "Permanent delete blocked by current references.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TagUsageReport"
                }
              }
            }
          },
          "404" : {
            "description" : "Tag not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/tags/{tagId}/restore" : {
      "post" : {
        "summary" : "Restore an archived customer tag.",
        "description" : "Restores an archived CUSTOMER tag so it can be assigned again.",
        "tags" : [ "Tags" ],
        "parameters" : [ {
          "description" : "Unique identifier of the tag to restore.",
          "in" : "path",
          "name" : "tagId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Tag restored.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Tag"
                }
              }
            }
          },
          "400" : {
            "description" : "Tag cannot be restored."
          },
          "404" : {
            "description" : "Tag not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/tags/{tagId}/usage" : {
      "get" : {
        "summary" : "Get tag usage.",
        "description" : "Returns archive blockers, archive warnings, permanent-delete blockers, and external hints for a tag.",
        "tags" : [ "Tags" ],
        "parameters" : [ {
          "description" : "Unique identifier of the tag.",
          "in" : "path",
          "name" : "tagId",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Tag usage report.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TagUsageReport"
                }
              }
            }
          },
          "404" : {
            "description" : "Tag not found."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/topics" : {
      "get" : {
        "summary" : "Retrieve the topic catalog.",
        "description" : "Returns topics in catalog order with the default topic, subscriber counts and running enrollments.",
        "tags" : [ "Topics" ],
        "parameters" : [ {
          "name" : "includeArchived",
          "in" : "query",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Topic catalog.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TopicCatalog"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      },
      "post" : {
        "summary" : "Create a topic.",
        "description" : "Creates an active topic appended to the catalog; optionally enrolls all existing subscribers.",
        "tags" : [ "Topics" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddTopic"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Topic created.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Topic"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid topic, duplicate label or active topic limit reached.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessageDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Subscriber bulk operation prevents catalog changes or enrollment.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/SubscriberImportErrorDto"
                  }, {
                    "$ref" : "#/components/schemas/TopicRequestErrorDto"
                  } ]
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/topics/order" : {
      "put" : {
        "summary" : "Change the active topic catalog order.",
        "description" : "Updates the order used on subscriber preference pages. Form-specific order and the default topic remain unchanged.",
        "tags" : [ "Topics" ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TopicOrder"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Topic order saved."
          },
          "400" : {
            "description" : "The order must include every active topic in this account exactly once.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessageDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Subscriber bulk operation prevents catalog changes.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberImportErrorDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/topics/{topicId}" : {
      "put" : {
        "summary" : "Update label and description of a topic.",
        "tags" : [ "Topics" ],
        "parameters" : [ {
          "name" : "topicId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TopicUpdate"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Topic updated.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Topic"
                }
              }
            }
          },
          "404" : {
            "description" : "Topic not found in this account.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RequestMessageDto"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid topic label or archived topic.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessageDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Subscriber bulk operation prevents catalog changes.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberImportErrorDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/topics/{topicId}/archive" : {
      "post" : {
        "summary" : "Archive a topic.",
        "description" : "Archives a topic that is not the default and not referenced by forms, messages, segments, imports, enrollments or open signups.",
        "tags" : [ "Topics" ],
        "parameters" : [ {
          "name" : "topicId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "204" : {
            "description" : "Topic archived."
          },
          "400" : {
            "description" : "Topic already archived.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessageDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Topic not found in this account.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RequestMessageDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Topic is in use or a subscriber bulk operation prevents archiving.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/TopicUsageReport"
                  }, {
                    "$ref" : "#/components/schemas/SubscriberImportErrorDto"
                  } ]
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/topics/{topicId}/default" : {
      "post" : {
        "summary" : "Make a topic the tenant default.",
        "description" : "Only active topics can become the default; existing assignments stay unchanged.",
        "tags" : [ "Topics" ],
        "parameters" : [ {
          "name" : "topicId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Default topic changed.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Topic"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid topic state or active topic limit reached.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessageDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Topic not found in this account.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RequestMessageDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Subscriber bulk operation prevents catalog changes.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberImportErrorDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/topics/{topicId}/restore" : {
      "post" : {
        "summary" : "Restore an archived topic.",
        "description" : "Reactivates the topic; the response names how many subscriptions become effective again.",
        "tags" : [ "Topics" ],
        "parameters" : [ {
          "name" : "topicId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "200" : {
            "description" : "Topic restored.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TopicRestore"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid topic state or active topic limit reached.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessageDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Topic not found in this account.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RequestMessageDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Subscriber bulk operation prevents catalog changes.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubscriberImportErrorDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/topics/{topicId}/subscribe-existing-subscribers" : {
      "post" : {
        "summary" : "Enroll existing subscribers into a topic.",
        "description" : "Starts a background enrollment of all subscribers who can hold topic rows; reader opt-outs are never overridden.",
        "tags" : [ "Topics" ],
        "parameters" : [ {
          "name" : "topicId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "202" : {
            "description" : "Enrollment started or already running."
          },
          "400" : {
            "description" : "Archived topic cannot be enrolled.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessageDto"
                }
              }
            }
          },
          "404" : {
            "description" : "Topic not found in this account.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RequestMessageDto"
                }
              }
            }
          },
          "409" : {
            "description" : "Another subscriber bulk operation is running.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TopicRequestErrorDto"
                }
              }
            }
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        }
      }
    },
    "/transactional-emails/{transactionalEmailId}/send" : {
      "post" : {
        "summary" : "Send a transactional email.",
        "description" : "Sends one transactional email to the provided recipient.",
        "tags" : [ "Transactional Emails" ],
        "parameters" : [ {
          "name" : "transactionalEmailId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SendEmailMessageRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        }
      }
    },
    "/webhook-subscriptions" : {
      "post" : {
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AccountWebhookSubscriptionRequestDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "summary" : "Create",
        "tags" : [ "Account Webhook Subscription Resource" ]
      }
    },
    "/webhook-subscriptions/{subscriptionId}" : {
      "delete" : {
        "parameters" : [ {
          "name" : "subscriptionId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Delete",
        "tags" : [ "Account Webhook Subscription Resource" ]
      }
    },
    "/wordpress-sites/{siteId}" : {
      "put" : {
        "parameters" : [ {
          "name" : "siteId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WebsiteDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "summary" : "Register",
        "tags" : [ "Website Signup Resource" ]
      }
    },
    "/wordpress-sites/{siteId}/placements/{placementId}" : {
      "put" : {
        "parameters" : [ {
          "name" : "placementId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "siteId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WebsitePlacementDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          },
          "400" : {
            "description" : "Bad Request"
          }
        },
        "summary" : "Placement",
        "tags" : [ "Website Signup Resource" ]
      }
    },
    "/wordpress-sites/{siteId}/signups" : {
      "get" : {
        "parameters" : [ {
          "name" : "siteId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "$ref" : "#/components/schemas/UUID"
          }
        }, {
          "name" : "days",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 7
          }
        }, {
          "name" : "page",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        } ],
        "responses" : {
          "428" : {
            "description" : "Accept the customer agreements in the app before using API keys."
          },
          "401" : {
            "description" : "Not Authorized"
          },
          "403" : {
            "description" : "Not Allowed"
          }
        },
        "summary" : "Report",
        "tags" : [ "Website Signup Resource" ]
      }
    }
  },
  "tags" : [ {
    "name" : "Fields",
    "description" : "Manage subscriber fields and their selectable options."
  }, {
    "name" : "Forms",
    "description" : "Manage signup forms that collect subscriber fields and assign tags."
  }, {
    "name" : "Segments",
    "description" : "Manage reusable subscriber segments built from subscriber field, tag, and nested segment conditions."
  }, {
    "name" : "Subscriber Bulk Tagging",
    "description" : "Add or remove tags for subscribers selected by email list or explicit subscriber IDs."
  }, {
    "name" : "Subscriber Field Values",
    "description" : "Read and update typed subscriber field values."
  }, {
    "name" : "Subscriber reports",
    "description" : "Account-wide subscriber history, shared with the Maildroppa app."
  }, {
    "name" : "Subscriber system fields"
  }, {
    "name" : "Subscribers",
    "description" : "Manage subscriber data, including retrieval, filtering, counting, creation, deletion, and double opt-in."
  }, {
    "name" : "Tags",
    "description" : "Manages tags that can be assigned to subscribers for categorization."
  }, {
    "name" : "Topics",
    "description" : "Manages subscription topics that readers can subscribe to individually."
  }, {
    "name" : "Transactional Emails",
    "description" : "Send transactional emails through the API."
  } ],
  "info" : {
    "title" : "Maildroppa API (Beta)",
    "version" : "1.2.0",
    "description" : "**Authentication:** Use your API token (found in your UserProfile) by including it in the `X-API-Key` header.\n\n**Rate Limiting:** Default API key limit is 300 requests per minute and 2000 requests per hour. `/events` allows 100 requests per second with burst capacity 500. Requests beyond these limits may be throttled.",
    "x-authentication" : "API key authentication: Obtain your token from your UserProfile in the Maildroppa App and include it in the X-API-Key header.",
    "contact" : {
      "name" : "Maildroppa",
      "url" : "https://api.maildroppa.com/"
    }
  },
  "security" : [ {
    "ApiUser" : [ "ApiUser" ]
  } ],
  "x-rate-limit" : {
    "customEvents" : {
      "path" : "/events",
      "burstCapacity" : 500,
      "requestsPerSecond" : 100
    },
    "timeoutDuration" : "0 seconds",
    "defaultApi" : {
      "requestsPerMinute" : 300,
      "requestsPerHour" : 2000
    }
  }
}