

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Ads Unified Platform Advertiser Public API",
    "description": "Ads Unified Platform - Public API for advertisers",
    "version": "1.0.0",
    "contact": {
      "name": "Ads Unified Platform Team"
    },
    "x-slack-channel": "#ads-unified-platform"
  },
  "servers": [
    {
      "url": "https://services.api.unity.com/ads/advertiser"
    }
  ],
  "paths": {
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/creatives": {
      "get": {
        "operationId": "publicGetCreatives",
        "summary": "Get creatives by organization and application",
        "description": "Returns a paginated list of creatives for the specified organization and application",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of items to return",
            "schema": {
              "default": 100,
              "example": 100,
              "type": "number"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "Number of items to skip",
            "schema": {
              "default": 0,
              "example": 0,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved creatives",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreativePublicListResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          }
        },
        "tags": [
          "creatives"
        ]
      },
      "post": {
        "operationId": "publicCreateCreative",
        "summary": "Create creative",
        "description": "Creates a new creative by uploading files and associated metadata. Accepts multipart/form-data with a `creativeInfo` JSON field and one or more file fields. `creativeInfo` must be the first field in the request body.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Multipart form with creativeInfo JSON and file(s). Exactly one creative type variant must be used.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Square End Card",
                    "type": "object",
                    "required": [
                      "creativeInfo",
                      "squareEndCardFile"
                    ],
                    "properties": {
                      "creativeInfo": {
                        "type": "object",
                        "required": [
                          "name",
                          "language",
                          "squareEndCard"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "Spring Campaign Creative",
                            "description": "Creative name"
                          },
                          "language": {
                            "type": "string",
                            "enum": [
                              "zxx",
                              "und",
                              "af",
                              "ar",
                              "as",
                              "az",
                              "be",
                              "bn",
                              "bg",
                              "ca",
                              "zh",
                              "hr",
                              "cs",
                              "da",
                              "nl",
                              "en",
                              "et",
                              "fil",
                              "fi",
                              "fr",
                              "de",
                              "el",
                              "he",
                              "hi",
                              "hu",
                              "is",
                              "id",
                              "it",
                              "ja",
                              "kk",
                              "ko",
                              "ky",
                              "lv",
                              "lt",
                              "mk",
                              "ms",
                              "mr",
                              "mn",
                              "ne",
                              "no",
                              "ps",
                              "fa",
                              "pl",
                              "pt",
                              "ro",
                              "ru",
                              "sa",
                              "sr",
                              "sk",
                              "sl",
                              "es",
                              "sv",
                              "ta",
                              "th",
                              "tr",
                              "uk",
                              "ur",
                              "uz",
                              "vi"
                            ],
                            "example": "en",
                            "description": "IANA language code"
                          },
                          "squareEndCard": {
                            "type": "object",
                            "required": [
                              "fileName"
                            ],
                            "properties": {
                              "fileName": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "description": "Original file name used as display name",
                                "pattern": "^.*\\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF)$",
                                "example": "my-creative.jpg"
                              }
                            }
                          }
                        }
                      },
                      "squareEndCardFile": {
                        "type": "string",
                        "format": "binary",
                        "description": "image/*. Must be 800×800 px, max 20 MB."
                      }
                    }
                  },
                  {
                    "title": "Pair End Card",
                    "type": "object",
                    "required": [
                      "creativeInfo",
                      "portraitEndCardFile",
                      "landscapeEndCardFile"
                    ],
                    "properties": {
                      "creativeInfo": {
                        "type": "object",
                        "required": [
                          "name",
                          "language",
                          "portraitEndCard",
                          "landscapeEndCard"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "Spring Campaign Creative",
                            "description": "Creative name"
                          },
                          "language": {
                            "type": "string",
                            "enum": [
                              "zxx",
                              "und",
                              "af",
                              "ar",
                              "as",
                              "az",
                              "be",
                              "bn",
                              "bg",
                              "ca",
                              "zh",
                              "hr",
                              "cs",
                              "da",
                              "nl",
                              "en",
                              "et",
                              "fil",
                              "fi",
                              "fr",
                              "de",
                              "el",
                              "he",
                              "hi",
                              "hu",
                              "is",
                              "id",
                              "it",
                              "ja",
                              "kk",
                              "ko",
                              "ky",
                              "lv",
                              "lt",
                              "mk",
                              "ms",
                              "mr",
                              "mn",
                              "ne",
                              "no",
                              "ps",
                              "fa",
                              "pl",
                              "pt",
                              "ro",
                              "ru",
                              "sa",
                              "sr",
                              "sk",
                              "sl",
                              "es",
                              "sv",
                              "ta",
                              "th",
                              "tr",
                              "uk",
                              "ur",
                              "uz",
                              "vi"
                            ],
                            "example": "en",
                            "description": "IANA language code"
                          },
                          "portraitEndCard": {
                            "type": "object",
                            "required": [
                              "fileName"
                            ],
                            "properties": {
                              "fileName": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "description": "Original file name used as display name",
                                "pattern": "^.*\\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF)$",
                                "example": "my-creative.jpg"
                              }
                            }
                          },
                          "landscapeEndCard": {
                            "type": "object",
                            "required": [
                              "fileName"
                            ],
                            "properties": {
                              "fileName": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "description": "Original file name used as display name",
                                "pattern": "^.*\\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF)$",
                                "example": "my-creative.jpg"
                              }
                            }
                          }
                        }
                      },
                      "portraitEndCardFile": {
                        "type": "string",
                        "format": "binary",
                        "description": "image/*. Must be 600×800 px, max 20 MB."
                      },
                      "landscapeEndCardFile": {
                        "type": "string",
                        "format": "binary",
                        "description": "image/*. Must be 800×600 px, max 20 MB."
                      }
                    }
                  },
                  {
                    "title": "Playable",
                    "type": "object",
                    "required": [
                      "creativeInfo",
                      "playableFile"
                    ],
                    "properties": {
                      "creativeInfo": {
                        "type": "object",
                        "required": [
                          "name",
                          "language",
                          "playable"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "Spring Campaign Playable",
                            "description": "Creative name"
                          },
                          "language": {
                            "type": "string",
                            "enum": [
                              "zxx",
                              "und",
                              "af",
                              "ar",
                              "as",
                              "az",
                              "be",
                              "bn",
                              "bg",
                              "ca",
                              "zh",
                              "hr",
                              "cs",
                              "da",
                              "nl",
                              "en",
                              "et",
                              "fil",
                              "fi",
                              "fr",
                              "de",
                              "el",
                              "he",
                              "hi",
                              "hu",
                              "is",
                              "id",
                              "it",
                              "ja",
                              "kk",
                              "ko",
                              "ky",
                              "lv",
                              "lt",
                              "mk",
                              "ms",
                              "mr",
                              "mn",
                              "ne",
                              "no",
                              "ps",
                              "fa",
                              "pl",
                              "pt",
                              "ro",
                              "ru",
                              "sa",
                              "sr",
                              "sk",
                              "sl",
                              "es",
                              "sv",
                              "ta",
                              "th",
                              "tr",
                              "uk",
                              "ur",
                              "uz",
                              "vi"
                            ],
                            "example": "en",
                            "description": "IANA language code"
                          },
                          "playable": {
                            "type": "object",
                            "required": [
                              "fileName",
                              "orientation"
                            ],
                            "properties": {
                              "fileName": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "description": "Original file name used as display name",
                                "pattern": "^.*\\.(html|HTML|htm|HTM)$",
                                "example": "playable.html"
                              },
                              "orientation": {
                                "type": "string",
                                "enum": [
                                  "landscape",
                                  "portrait",
                                  "both"
                                ],
                                "description": "Playable orientation"
                              }
                            }
                          }
                        }
                      },
                      "playableFile": {
                        "type": "string",
                        "format": "binary",
                        "description": "HTML5 playable file (.html/.htm). Max 10 MB."
                      }
                    }
                  },
                  {
                    "title": "Video",
                    "type": "object",
                    "required": [
                      "creativeInfo",
                      "videoFile"
                    ],
                    "properties": {
                      "creativeInfo": {
                        "type": "object",
                        "required": [
                          "name",
                          "language",
                          "video"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "Spring Campaign Video",
                            "description": "Creative name"
                          },
                          "language": {
                            "type": "string",
                            "enum": [
                              "zxx",
                              "und",
                              "af",
                              "ar",
                              "as",
                              "az",
                              "be",
                              "bn",
                              "bg",
                              "ca",
                              "zh",
                              "hr",
                              "cs",
                              "da",
                              "nl",
                              "en",
                              "et",
                              "fil",
                              "fi",
                              "fr",
                              "de",
                              "el",
                              "he",
                              "hi",
                              "hu",
                              "is",
                              "id",
                              "it",
                              "ja",
                              "kk",
                              "ko",
                              "ky",
                              "lv",
                              "lt",
                              "mk",
                              "ms",
                              "mr",
                              "mn",
                              "ne",
                              "no",
                              "ps",
                              "fa",
                              "pl",
                              "pt",
                              "ro",
                              "ru",
                              "sa",
                              "sr",
                              "sk",
                              "sl",
                              "es",
                              "sv",
                              "ta",
                              "th",
                              "tr",
                              "uk",
                              "ur",
                              "uz",
                              "vi"
                            ],
                            "example": "en",
                            "description": "IANA language code"
                          },
                          "video": {
                            "type": "object",
                            "required": [
                              "fileName"
                            ],
                            "properties": {
                              "fileName": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "description": "Original file name used as display name",
                                "pattern": "^.*\\.(mp4|MP4)$",
                                "example": "my-creative.mp4"
                              }
                            }
                          }
                        }
                      },
                      "videoFile": {
                        "type": "string",
                        "format": "binary",
                        "description": "video/* (.mp4). Aspect ratio 16:9 or 9:16, max 100 MB."
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully created creative",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreativePublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          }
        },
        "tags": [
          "creatives"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/creatives/{creativeId}": {
      "get": {
        "operationId": "publicGetCreativeById",
        "summary": "Get creative by ID",
        "description": "Returns a single creative for the specified organization and application",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "creativeId",
            "required": true,
            "in": "path",
            "description": "The Creative Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved creative",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreativePublicResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "creatives"
        ]
      },
      "patch": {
        "operationId": "publicUpdateCreativeById",
        "summary": "Update creative by ID",
        "description": "Updates the name of a creative for the specified organization and application",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "creativeId",
            "required": true,
            "in": "path",
            "description": "The Creative Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreativePublicUpdateRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated creative",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreativePublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "creatives"
        ]
      },
      "delete": {
        "operationId": "publicDeleteCreativeById",
        "summary": "Delete creative by ID",
        "description": "Deletes a single creative for the specified organization and application. Creative must not be assigned to a creative pack in order to be deleted.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "creativeId",
            "required": true,
            "in": "path",
            "description": "The Creative Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          },
          "409": {
            "description": "Resource conflict"
          }
        },
        "tags": [
          "creatives"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns": {
      "post": {
        "operationId": "publicCreateCampaign",
        "summary": "Create a campaign",
        "description": "Creates a new campaign for the specified application",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCampaignDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully created campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignPublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaigns"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}": {
      "get": {
        "operationId": "publicGetCampaignById",
        "summary": "Get a campaign by ID",
        "description": "Returns a single campaign for the specified application. The `application`, `budget`, `bids`, and `creativePacks` fields are included in the response only when listed in the `includeFields` query parameter; any not listed are omitted from the response entirely.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "required": true,
            "in": "path",
            "description": "The Campaign Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          },
          {
            "name": "includeFields",
            "required": false,
            "in": "query",
            "description": "Extended fields to include in the response. Supported values: bids, budget, creativePacks, application. When omitted, only base campaign fields are returned.",
            "schema": {
              "example": [
                "bids",
                "budget"
              ],
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "bids",
                  "budget",
                  "creativePacks",
                  "application"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignPublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "patch": {
        "operationId": "publicUpdateCampaign",
        "summary": "Update a campaign by ID",
        "description": "Updates the campaign details (name, scheduling, auto-start), liveness (paused) and attribution links.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "required": true,
            "in": "path",
            "description": "The Campaign Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCampaignPublicDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignPublicDetailsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "delete": {
        "operationId": "publicDeleteCampaignById",
        "summary": "Delete a campaign by ID",
        "description": "Deletes a single campaign for the specified application.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "required": true,
            "in": "path",
            "description": "The Campaign Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaigns"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/budget-cap": {
      "patch": {
        "operationId": "publicPatchCampaignBudgetCap",
        "summary": "Update a campaign budget cap",
        "description": "Creates or updates the budget cap for the specified campaign.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "required": true,
            "in": "path",
            "description": "The Campaign Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBudgetCapDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated campaign budget cap",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignPublicBudgetCapResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaigns"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/bids": {
      "patch": {
        "operationId": "publicUpdateBids",
        "summary": "Update campaign bids",
        "description": "Updates the bid configuration for the specified campaign. Provide the bid type in the request body; the bid type must match the campaign optimization type. Exactly one bid type may be sent, except that `manualBids` and `manualSourceBids` may be sent together.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "required": true,
            "in": "path",
            "description": "The Campaign Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCampaignPublicBidDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated campaign bids",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignPublicBidResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaigns"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/targeting": {
      "patch": {
        "operationId": "publicPatchCampaignTargeting",
        "summary": "Update campaign targeting",
        "description": "Modifies the targeting configuration of the specified campaign.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "required": true,
            "in": "path",
            "description": "The Campaign Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCampaignPublicTargetingDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated campaign targeting",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignPublicTargetingResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaigns"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/assign-creative-pack": {
      "patch": {
        "operationId": "publicAssignCreativePacks",
        "summary": "Assign creative packs to a campaign",
        "description": "Replaces the campaign creative packs with the provided list. Duplicate IDs are removed. Returns the full list of assigned creative pack IDs.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "required": true,
            "in": "path",
            "description": "The Campaign Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CampaignPublicAssignCreativePacksRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully assigned creative packs to campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignPublicAssignCreativePacksResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaigns"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/campaigns/{campaignId}/unassign-creative-pack": {
      "delete": {
        "operationId": "publicUnassignCreativePacks",
        "summary": "Unassign creative packs from a campaign",
        "description": "Removes the provided creative packs from the campaign. IDs that are not currently assigned are ignored. Returns the full list of creative pack IDs that remain assigned.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "campaignId",
            "required": true,
            "in": "path",
            "description": "The Campaign Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CampaignPublicUnassignCreativePacksRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully unassigned creative packs from campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignPublicUnassignCreativePacksResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaigns"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/campaigns": {
      "get": {
        "operationId": "publicGetCampaigns",
        "summary": "Get campaigns for an organization",
        "description": "Returns a paginated list of campaigns for the specified organization. The `application`, `budget`, `bids`, and `creativePacks` fields are included for each campaign only when listed in the `includeFields` query parameter; any not listed are omitted from the response entirely.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of items to return",
            "schema": {
              "default": 100,
              "example": 100,
              "type": "number"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "Number of items to skip",
            "schema": {
              "default": 0,
              "example": 0,
              "type": "number"
            }
          },
          {
            "description": "Filter by application IDs.",
            "required": false,
            "name": "appIds",
            "in": "query",
            "schema": {
              "example": [
                "550e8400-e29b-41d4-a716-446655440000"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "description": "Filter by live status. When true, only live (not paused) campaigns are returned; when false, only paused campaigns.",
            "required": false,
            "name": "live",
            "in": "query",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "description": "Filter by optimization type.",
            "required": false,
            "name": "optimizationType",
            "in": "query",
            "schema": {
              "example": [
                "cpi",
                "roas"
              ],
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "cpi",
                  "roas",
                  "appEventConversion"
                ]
              }
            }
          },
          {
            "name": "includeFields",
            "required": false,
            "in": "query",
            "description": "Extended fields to include in each campaign. Supported values: bids, budget, creativePacks, application. When omitted, only base campaign fields are returned.",
            "schema": {
              "example": [
                "bids",
                "budget"
              ],
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "bids",
                  "budget",
                  "creativePacks",
                  "application"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved campaigns",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignPublicListResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          }
        },
        "tags": [
          "campaigns"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/eligibility": {
      "get": {
        "operationId": "publicGetCampaignManagementEligibility",
        "summary": "Get app event eligibility for an organization",
        "description": "Returns eligible app events and their post-install windows for the specified organization",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved eligibility data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagementEligibilityResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaign-management"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/sdk-event-names": {
      "get": {
        "operationId": "publicGetSdkEventNames",
        "summary": "Get SDK event names for applications",
        "description": "Returns available SDK event names for specified application",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved SDK event names",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SdkEventNamesResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "campaign-management"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/creative-packs": {
      "get": {
        "operationId": "publicGetCreativePacks",
        "summary": "Get creative packs",
        "description": "Returns a paginated list of creative packs for the specified application",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "Number of results to skip",
            "schema": {
              "default": 0,
              "example": 0,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Maximum number of results to return",
            "schema": {
              "default": 100,
              "example": 100,
              "type": "number"
            }
          },
          {
            "description": "Filter by creative pack name (case-insensitive, partial match)",
            "required": false,
            "name": "name",
            "in": "query",
            "schema": {
              "example": "Summer Campaign",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved creative packs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreativePackPublicListResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          }
        },
        "tags": [
          "creative-packs"
        ]
      },
      "post": {
        "operationId": "publicCreateCreativePack",
        "summary": "Create a creative pack",
        "description": "Creates a new creative pack for the specified application. Each pack type requires a specific combination of creatives:\n- `video`: 1-2 video creatives and exactly 1 end card creative\n- `playable`: 1-2 playable creatives\n- `video+playable`: 1-2 video creatives and exactly 1 responsive playable creative\n- `banner`: 1-10 banner creatives\n\nWhen a pack includes 2 video or 2 playable creatives, one must be landscape and one portrait.",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCreativePackPublicDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully created creative pack",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreativePackPublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "creative-packs"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/creative-packs/{creativePackId}": {
      "get": {
        "operationId": "publicGetCreativePackById",
        "summary": "Get a creative pack by ID",
        "description": "Returns detailed information about a specific creative pack",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "creativePackId",
            "required": true,
            "in": "path",
            "description": "The Creative Pack Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved creative pack",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreativePackPublicResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "creative-packs"
        ]
      },
      "patch": {
        "operationId": "publicUpdateCreativePack",
        "summary": "Update a creative pack",
        "description": "Updates the name and store page info for the specified creative pack",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "creativePackId",
            "required": true,
            "in": "path",
            "description": "The Creative Pack Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCreativePackPublicDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated creative pack",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreativePackPublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "creative-packs"
        ]
      },
      "delete": {
        "operationId": "publicDeleteCreativePack",
        "summary": "Delete a creative pack",
        "description": "Deletes the specified creative pack (if it is not associated with any campaigns)",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "creativePackId",
            "required": true,
            "in": "path",
            "description": "The Creative Pack Public ID (24-character hexadecimal string)",
            "schema": {
              "type": "string",
              "minLength": 24,
              "maxLength": 24,
              "pattern": "^[a-f0-9]{24}$"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          },
          "409": {
            "description": "Resource conflict"
          }
        },
        "tags": [
          "creative-packs"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}/attribution": {
      "get": {
        "operationId": "publicGetApplicationAttribution",
        "summary": "Get application attribution",
        "description": "Returns the attribution configuration for the specified application",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved application attribution",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationAttributionPublicResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "attribution"
        ]
      },
      "patch": {
        "operationId": "publicUpdateApplicationAttribution",
        "summary": "Update application attribution",
        "description": "Updates the attribution URLs for the specified application",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApplicationAttributionPublicRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated application attribution",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationAttributionPublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "attribution"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications": {
      "get": {
        "operationId": "publicOrganizationApplications",
        "summary": "Get applications for an organization",
        "description": "Returns all applications associated with a specific organization",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved organization applications",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ApplicationPublicResponseDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "applications"
        ]
      },
      "post": {
        "operationId": "publicCreateApplication",
        "summary": "Create an application",
        "description": "Creates a new application for a specific organization",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "dryrun",
            "required": false,
            "in": "query",
            "description": "Dry-run mode. When `true`, the request is fully validated but no changes are persisted (DB writes are rolled back and external calls are skipped). The response echoes the would-be result with an `x-dry-run: true` header. For application create/update, dry-run validates the request and business rules only — it does not reserve names or guarantee downstream acceptance.",
            "schema": {
              "example": false,
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateApplicationPublicDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully created application",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationPublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          }
        },
        "tags": [
          "applications"
        ]
      }
    },
    "/public/v1/organizations/{organizationId}/applications/{applicationId}": {
      "get": {
        "operationId": "publicGetApplicationById",
        "summary": "Get an application by ID",
        "description": "Returns application metadata for a specific application within an organization",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved application",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationPublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          }
        },
        "tags": [
          "applications"
        ]
      },
      "patch": {
        "operationId": "publicUpdateApplication",
        "summary": "Update an application",
        "description": "Updates an existing application for a specific organization (partial update)",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The Genesis ID of the organization",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "applicationId",
            "required": true,
            "in": "path",
            "description": "The Unity App ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dryrun",
            "required": false,
            "in": "query",
            "description": "Dry-run mode. When `true`, the request is fully validated but no changes are persisted (DB writes are rolled back and external calls are skipped). The response echoes the would-be result with an `x-dry-run: true` header. For application create/update, dry-run validates the request and business rules only — it does not reserve names or guarantee downstream acceptance.",
            "schema": {
              "example": false,
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApplicationPublicDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated application",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationPublicResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data"
          },
          "401": {
            "description": "Authentication error"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Resource not found"
          },
          "409": {
            "description": "Resource conflict"
          }
        },
        "tags": [
          "applications"
        ]
      }
    }
  },
  "tags": [
    {
      "name": "creatives",
      "description": "Advertiser creatives"
    },
    {
      "name": "campaigns",
      "description": "Advertiser campaigns"
    },
    {
      "name": "creative-packs",
      "description": "Advertiser creative packs"
    },
    {
      "name": "campaign-management",
      "description": "Advertiser campaign management"
    },
    {
      "name": "attribution",
      "description": "Advertiser application attribution"
    },
    {
      "name": "applications",
      "description": "Advertiser applications"
    }
  ],
  "components": {
    "schemas": {
      "CreativePublicFileDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "File display name",
            "example": "H264_high.mp4"
          },
          "url": {
            "type": "string",
            "description": "File URL",
            "example": "https://example.com/assets/H264_high.mp4"
          }
        },
        "required": [
          "name",
          "url"
        ]
      },
      "CreativePublicResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Creative public ID",
            "example": "abc123def456ghi789jkl012"
          },
          "name": {
            "type": "string",
            "description": "Creative name",
            "example": "Spring Campaign Video"
          },
          "language": {
            "type": "string",
            "description": "Creative language",
            "example": "en"
          },
          "type": {
            "type": "string",
            "description": "Creative type",
            "enum": [
              "end_card_pair",
              "end_card_square",
              "video_landscape",
              "video_portrait",
              "playable_responsive",
              "playable_landscape",
              "playable_portrait",
              "banner"
            ],
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Aggregated creative status",
            "enum": [
              "uploaded",
              "processing",
              "processingFailed",
              "pendingModeration",
              "approved",
              "rejected"
            ]
          },
          "files": {
            "description": "Creative files",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreativePublicFileDto"
            }
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Creation timestamp",
            "example": "2026-04-21T12:34:56.000Z"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Last updated timestamp",
            "example": "2026-04-21T13:00:00.000Z"
          }
        },
        "required": [
          "id",
          "name",
          "language",
          "type",
          "status",
          "files",
          "createdAt",
          "updatedAt"
        ]
      },
      "PublicPaginationMetaDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "description": "Total number of items",
            "example": 100
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of items returned",
            "example": 100
          },
          "offset": {
            "type": "number",
            "description": "Number of items skipped",
            "example": 0
          }
        },
        "required": [
          "total",
          "limit",
          "offset"
        ]
      },
      "CreativePublicListResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "description": "List of creatives",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreativePublicResponseDto"
            }
          },
          "meta": {
            "description": "Pagination metadata",
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicPaginationMetaDto"
              }
            ]
          }
        },
        "required": [
          "items",
          "meta"
        ]
      },
      "CreativePublicUpdateRequestDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Creative name",
            "example": "Spring Campaign Video"
          }
        },
        "required": [
          "name"
        ]
      },
      "CreateCampaignDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Campaign name",
            "example": "Clash of Clans Campaign"
          },
          "optimizationType": {
            "type": "string",
            "description": "Optimization Type",
            "enum": [
              "cpi",
              "legacyRetention",
              "roas",
              "appEventConversion"
            ],
            "example": "appEventConversion"
          },
          "cpiType": {
            "type": "string",
            "description": "CPI Type - used only when creating a campaign (not persisted to DB). Manual or AutomaticMaxBid for CPI optimization.",
            "enum": [
              "manual",
              "automaticMaxBid"
            ],
            "example": "manual"
          },
          "postInstallWindow": {
            "type": "string",
            "description": "Post Install Window",
            "enum": [
              "D0",
              "D1",
              "D3",
              "D7",
              "D14",
              "D28"
            ],
            "example": "D7"
          },
          "appEventType": {
            "type": "string",
            "description": "App Event Type for App Event Conversion Optimization Campaign",
            "enum": [
              "registration",
              "levelComplete",
              "purchase",
              "retention",
              "custom"
            ],
            "example": "purchase"
          },
          "roasType": {
            "type": "string",
            "description": "Roas Type for Roas Optimization Campaign",
            "enum": [
              "iap",
              "adRevenue",
              "hybrid"
            ]
          },
          "isCreativeTesting": {
            "type": "boolean",
            "description": "Set this campaign for creative testing",
            "example": true
          },
          "start": {
            "format": "date-time",
            "type": "string",
            "description": "Start date of the campaign",
            "example": "2026-01-28T10:00:00.000Z"
          },
          "sdkEventNames": {
            "description": "SDK event names",
            "example": [
              "purchase",
              "level_complete"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "optimizationType",
          "isCreativeTesting",
          "start"
        ]
      },
      "AllowlistCountrySubdivisionResponseDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "subdivisions": {
            "description": "Subdivision IDs",
            "example": [
              1,
              2,
              3
            ],
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "country",
          "subdivisions"
        ]
      },
      "AttributionResponseDto": {
        "type": "object",
        "properties": {
          "clickUrl": {
            "type": "string",
            "description": "Attribution click URL",
            "example": "https://app.adjust.com/abc123"
          },
          "startUrl": {
            "type": "string",
            "description": "Attribution start URL",
            "example": "https://app.adjust.com/start/abc123"
          },
          "viewUrl": {
            "type": "string",
            "description": "Attribution view URL",
            "example": "https://app.adjust.com/view/abc123"
          },
          "partner": {
            "type": "string",
            "description": "Attribution partner",
            "enum": [
              "other",
              "adjust",
              "airbridge",
              "appsflyer",
              "branch",
              "bytebrew",
              "kochava",
              "mailru",
              "singular",
              "tenjin",
              "yandex"
            ],
            "example": "adjust"
          },
          "type": {
            "type": "string",
            "description": "Attribution type",
            "enum": [
              "userLevel",
              "nonUserLevel",
              "mixed"
            ],
            "example": "userLevel"
          },
          "isMMPAttributionDisabled": {
            "type": "boolean",
            "description": "Whether MMP attribution is disabled",
            "example": false
          }
        },
        "required": [
          "clickUrl",
          "startUrl",
          "partner"
        ]
      },
      "AppleDeviceTargetingResponseDto": {
        "type": "object",
        "properties": {
          "deviceBlocklist": {
            "description": "Device blocklist for Apple devices",
            "example": [
              "iPhone6,1",
              "iPhone6,2"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "osMinVersion": {
            "type": "string",
            "description": "Minimum OS version for Apple devices",
            "example": "14.0"
          }
        },
        "required": [
          "deviceBlocklist",
          "osMinVersion"
        ]
      },
      "AndroidDeviceTargetingResponseDto": {
        "type": "object",
        "properties": {
          "manufacturerAllowlist": {
            "description": "Manufacturer allowlist for Android devices",
            "example": [
              "Samsung",
              "Google"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "manufacturerBlocklist": {
            "description": "Manufacturer blocklist for Android devices",
            "example": [
              "Huawei"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "modelBlocklist": {
            "description": "Model blocklist for Android devices",
            "example": [
              "SM-G950U"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "osMinVersion": {
            "type": "string",
            "description": "Minimum OS version for Android devices",
            "example": "10.0"
          }
        },
        "required": [
          "manufacturerAllowlist",
          "manufacturerBlocklist",
          "modelBlocklist",
          "osMinVersion"
        ]
      },
      "DeviceTargetingResponseDto": {
        "type": "object",
        "properties": {
          "apple": {
            "description": "Apple device targeting settings",
            "example": {
              "deviceBlocklist": [
                "iPhone6,1",
                "iPhone6,2"
              ],
              "osMinVersion": "14.0"
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/AppleDeviceTargetingResponseDto"
              }
            ]
          },
          "android": {
            "description": "Android device targeting settings",
            "example": {
              "manufacturerAllowlist": [
                "Samsung",
                "Google"
              ],
              "manufacturerBlocklist": [
                "Huawei"
              ],
              "modelBlocklist": [
                "SM-G950U"
              ],
              "osMinVersion": "10.0"
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/AndroidDeviceTargetingResponseDto"
              }
            ]
          }
        }
      },
      "ApplicationResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Application ID",
            "example": "app-uuid"
          },
          "name": {
            "type": "string",
            "description": "Application name",
            "example": "My Game"
          },
          "advertiserGameId": {
            "type": "number",
            "description": "Advertiser game ID",
            "example": 1234567890,
            "nullable": true
          },
          "storeId": {
            "type": "string",
            "description": "Store ID",
            "example": "com.example.game",
            "nullable": true
          },
          "store": {
            "type": "string",
            "description": "Store",
            "example": "AppleAppStore",
            "enum": [
              "GooglePlay",
              "AppleAppStore",
              "SamsungGalaxy",
              "AmazonAppStore",
              "MacAppStore",
              "UDP",
              "MicrosoftStore",
              "HuaweiAppGallery",
              "APK"
            ]
          },
          "platform": {
            "type": "string",
            "description": "Operating system",
            "example": "iOS",
            "enum": [
              "Android",
              "iOS",
              "OSX",
              "Windows",
              "Linux",
              "WebGL",
              "Windows_Store",
              "PS4",
              "PS5",
              "XboxOne",
              "tvOS",
              "Switch",
              "VisionOS"
            ]
          },
          "iconUrl": {
            "type": "string",
            "description": "Application icon URL",
            "nullable": true,
            "example": "https://example.com/icon.png"
          }
        },
        "required": [
          "id",
          "name",
          "advertiserGameId",
          "storeId",
          "store",
          "platform",
          "iconUrl"
        ]
      },
      "ManualBidResponseDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "bid": {
            "type": "string",
            "description": "Bid amount in micros",
            "example": "1000000"
          }
        },
        "required": [
          "country",
          "bid"
        ]
      },
      "ManualSourceBidResponseDto": {
        "type": "object",
        "properties": {
          "bid": {
            "type": "string",
            "description": "Bid amount in micros",
            "example": "1000000"
          },
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "sourceAppId": {
            "type": "string",
            "description": "Source app ID",
            "example": "a1b2c3d4e5f6"
          }
        },
        "required": [
          "bid",
          "country",
          "sourceAppId"
        ]
      },
      "AppEventBidResponseDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "bid": {
            "type": "string",
            "description": "Bid amount in micros",
            "example": "1000000"
          }
        },
        "required": [
          "country",
          "bid"
        ]
      },
      "RoasBidResponseDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "maxBid": {
            "type": "string",
            "description": "Maximum bid amount in micros (0 = downstream default)",
            "example": "2000000"
          },
          "target": {
            "type": "number",
            "description": "Target ROAS value",
            "example": 1.5
          }
        },
        "required": [
          "country",
          "maxBid",
          "target"
        ]
      },
      "RetentionBidResponseDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "bid": {
            "type": "string",
            "description": "Bid amount in micros",
            "example": "1000000"
          },
          "maxBid": {
            "type": "string",
            "description": "Maximum bid amount in micros",
            "example": "2000000"
          }
        },
        "required": [
          "country",
          "bid",
          "maxBid"
        ]
      },
      "CountryGroupDailyLimitResponseDto": {
        "type": "object",
        "properties": {
          "countries": {
            "description": "Countries in the group",
            "example": [
              "US",
              "CA"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "limit": {
            "type": "string",
            "description": "Daily limit for the country group",
            "example": "10000"
          },
          "name": {
            "type": "string",
            "description": "Name of the country group",
            "example": "North America"
          }
        },
        "required": [
          "countries",
          "limit",
          "name"
        ]
      },
      "BudgetResponseDto": {
        "type": "object",
        "properties": {
          "campaignLimitType": {
            "type": "string",
            "description": "Campaign limit type",
            "enum": [
              "unlimited",
              "total"
            ],
            "example": "total"
          },
          "pacingType": {
            "type": "string",
            "description": "Budget pacing strategy",
            "enum": [
              "THROTTLED",
              "DISCOUNTED"
            ],
            "example": "THROTTLED"
          },
          "dailyLimitType": {
            "type": "string",
            "description": "Daily limit type",
            "enum": [
              "daily",
              "countryDaily",
              "unlimited"
            ],
            "example": "daily"
          },
          "total": {
            "type": "string",
            "description": "Total budget in micros",
            "example": "1000000000"
          },
          "daily": {
            "type": "string",
            "description": "Daily budget in micros",
            "example": "100000000"
          },
          "countryGroupDailyLimits": {
            "description": "Country group daily limits",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CountryGroupDailyLimitResponseDto"
            }
          }
        },
        "required": [
          "campaignLimitType",
          "pacingType",
          "total",
          "daily",
          "countryGroupDailyLimits"
        ]
      },
      "CampaignPublicResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Campaign unique identifier",
            "example": "abc123def456ghi789jkl012"
          },
          "applicationId": {
            "type": "string",
            "description": "Application Id linked to the campaign",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "name": {
            "type": "string",
            "description": "Campaign name",
            "example": "Clash of Clans Campaign"
          },
          "billingType": {
            "type": "string",
            "description": "Campaign billing type",
            "example": "cpi",
            "enum": [
              "cpi",
              "cpm"
            ]
          },
          "postInstallWindow": {
            "type": "string",
            "description": "Campaign Post Install Window",
            "enum": [
              "D0",
              "D1",
              "D3",
              "D7",
              "D14",
              "D28"
            ],
            "example": "D7",
            "nullable": true
          },
          "optimizationType": {
            "type": "string",
            "description": "Campaign Optimization Type",
            "enum": [
              "cpi",
              "legacyRetention",
              "roas",
              "appEventConversion"
            ],
            "example": "appEventConversion"
          },
          "roasType": {
            "type": "string",
            "description": "ROAS type",
            "enum": [
              "iap",
              "adRevenue",
              "hybrid"
            ],
            "example": "iap",
            "nullable": true
          },
          "appEventType": {
            "type": "string",
            "description": "App event type",
            "enum": [
              "registration",
              "levelComplete",
              "purchase",
              "retention",
              "custom"
            ],
            "example": "purchase",
            "nullable": true
          },
          "autoFilling": {
            "type": "boolean",
            "description": "Whether campaign is auto-filling",
            "example": false
          },
          "sdkEventNames": {
            "description": "SDK event names",
            "example": [
              "purchase",
              "level_complete"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "blocklistSources": {
            "description": "Blocklist Sources",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "allowlistSources": {
            "description": "Allowlist Sources",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "bidConfigurationMethod": {
            "type": "string",
            "description": "Bid configuration method",
            "enum": [
              "manual",
              "auto"
            ],
            "example": "manual",
            "nullable": true
          },
          "budgetPacingType": {
            "type": "string",
            "description": "Budget pacing type",
            "enum": [
              "THROTTLED",
              "DISCOUNTED"
            ],
            "example": "DISCOUNTED"
          },
          "forcePausedEnabled": {
            "type": "boolean",
            "description": "Whether force pause is enabled",
            "example": true
          },
          "forcePauseReason": {
            "type": "string",
            "description": "Force pause reason",
            "enum": [
              "installPostbackIssue",
              "manual"
            ],
            "example": "manual",
            "nullable": true
          },
          "apptopiaSourceCategoriesAllowlist": {
            "description": "Apptopia source categories allowlist",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "apptopiaSourceCategoriesBlocklist": {
            "description": "Apptopia source categories blocklist",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sensorTowerSourceCategoriesAllowlist": {
            "description": "Sensor Tower source categories allowlist",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sensorTowerSourceCategoriesBlocklist": {
            "description": "Sensor Tower source categories blocklist",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "allowlistCountrySubdivisions": {
            "description": "Allowlist country subdivisions",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllowlistCountrySubdivisionResponseDto"
            }
          },
          "isCreativeTesting": {
            "type": "boolean",
            "description": "Whether campaign is in creative testing mode",
            "example": false
          },
          "isNonCoppaOnly": {
            "type": "boolean",
            "description": "Whether campaign is non-COPPA only",
            "example": false
          },
          "paused": {
            "type": "boolean",
            "description": "Whether campaign is paused",
            "example": true
          },
          "start": {
            "type": "string",
            "description": "Campaign Start Date",
            "example": "2024-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "description": "Campaign End Date",
            "example": "2025-01-01T00:00:00.000Z",
            "nullable": true,
            "format": "date-time"
          },
          "autoStart": {
            "type": "string",
            "description": "Auto-start status of the campaign",
            "example": "ENABLED",
            "enum": [
              "ENABLED",
              "DISABLED",
              "CANCELED_REJECTED",
              "CANCELED_LESS_THAN_TWO_PACK"
            ]
          },
          "isAutoEligible": {
            "type": "boolean",
            "description": "Whether campaign is eligible for auto optimization",
            "example": true
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Campaign creation date",
            "example": "2024-01-01T00:00:00.000Z"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Campaign last update date",
            "example": "2024-01-15T00:00:00.000Z"
          },
          "lastStartedAt": {
            "type": "string",
            "description": "Campaign Last Started Date",
            "example": "2025-01-01T00:00:00.000Z",
            "nullable": true,
            "format": "date-time"
          },
          "editorId": {
            "type": "string",
            "description": "ID of the last editor of the campaign",
            "example": "editor-123",
            "nullable": true
          },
          "correlationId": {
            "type": "string",
            "description": "Correlation ID for tracking",
            "example": "corr-456",
            "nullable": true
          },
          "attribution": {
            "description": "Campaign attribution settings",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/AttributionResponseDto"
              }
            ]
          },
          "deviceTargeting": {
            "description": "Device targeting settings",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceTargetingResponseDto"
              }
            ]
          },
          "application": {
            "description": "Application associated with the campaign. Included when `application` is requested.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplicationResponseDto"
              }
            ]
          },
          "manualBids": {
            "description": "Campaign-level manual bids (not tied to a source app). Included when `bids` is requested.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualBidResponseDto"
            }
          },
          "manualSourceBids": {
            "description": "Manual source level bids. Included when `bids` is requested.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualSourceBidResponseDto"
            }
          },
          "appEventBids": {
            "description": "App event bids. Included when `bids` is requested.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppEventBidResponseDto"
            }
          },
          "roasBids": {
            "description": "ROAS bids. Included when `bids` is requested.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoasBidResponseDto"
            }
          },
          "retentionBids": {
            "description": "Legacy retention bids. Included when `bids` is requested.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RetentionBidResponseDto"
            }
          },
          "budget": {
            "description": "Campaign budget settings. Included when `budget` is requested.",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/BudgetResponseDto"
              }
            ]
          },
          "creativePackIds": {
            "description": "Public IDs of the creative packs assigned to the campaign. Included when `creativePacks` is requested.",
            "example": [
              "abc123def456ghi789jkl012"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "applicationId",
          "name",
          "billingType",
          "optimizationType",
          "autoFilling",
          "sdkEventNames",
          "blocklistSources",
          "allowlistSources",
          "budgetPacingType",
          "forcePausedEnabled",
          "apptopiaSourceCategoriesAllowlist",
          "apptopiaSourceCategoriesBlocklist",
          "sensorTowerSourceCategoriesAllowlist",
          "sensorTowerSourceCategoriesBlocklist",
          "allowlistCountrySubdivisions",
          "isCreativeTesting",
          "isNonCoppaOnly",
          "paused",
          "start",
          "autoStart",
          "isAutoEligible",
          "createdAt",
          "updatedAt"
        ]
      },
      "UpdateCampaignAttributionLinksDto": {
        "type": "object",
        "properties": {
          "clickUrl": {
            "type": "string",
            "description": "Attribution click URL",
            "example": "https://app.adjust.com/abc123"
          },
          "startUrl": {
            "type": "string",
            "description": "Attribution start URL",
            "example": "https://app.adjust.com/start/abc123"
          },
          "viewUrl": {
            "type": "string",
            "description": "Attribution view URL",
            "example": "https://app.adjust.com/view/abc123",
            "nullable": true
          }
        },
        "required": [
          "clickUrl",
          "startUrl"
        ]
      },
      "UpdateCampaignPublicDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Campaign name",
            "example": "Clash of Clans Campaign"
          },
          "start": {
            "format": "date-time",
            "type": "string",
            "description": "Start date of the campaign",
            "example": "2026-01-28T10:00:00.000Z"
          },
          "end": {
            "type": "string",
            "description": "End date of the campaign",
            "example": "2026-12-31T23:59:59.000Z",
            "format": "date-time",
            "nullable": true
          },
          "autoStart": {
            "type": "string",
            "description": "Auto-start status of the campaign",
            "example": "ENABLED",
            "enum": [
              "ENABLED",
              "DISABLED"
            ]
          },
          "paused": {
            "type": "boolean",
            "description": "Whether the campaign is paused",
            "example": false
          },
          "attributionLinks": {
            "description": "Attribution links for the campaign",
            "allOf": [
              {
                "$ref": "#/components/schemas/UpdateCampaignAttributionLinksDto"
              }
            ]
          }
        }
      },
      "CampaignPublicAttributionLinksResponseDto": {
        "type": "object",
        "properties": {
          "clickUrl": {
            "type": "string",
            "description": "Attribution click URL",
            "example": "https://app.adjust.com/abc123"
          },
          "startUrl": {
            "type": "string",
            "description": "Attribution start URL",
            "example": "https://app.adjust.com/start/abc123"
          },
          "viewUrl": {
            "type": "string",
            "description": "Attribution view URL",
            "example": "https://app.adjust.com/view/abc123",
            "nullable": true
          }
        },
        "required": [
          "clickUrl",
          "startUrl"
        ]
      },
      "CampaignPublicDetailsResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Campaign unique identifier",
            "example": "abc123def456ghi789jkl012"
          },
          "name": {
            "type": "string",
            "description": "Campaign name",
            "example": "Clash of Clans Campaign"
          },
          "start": {
            "type": "string",
            "description": "Campaign Start Date",
            "example": "2024-01-01T00:00:00.000Z",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "description": "Campaign End Date",
            "example": "2025-01-01T00:00:00.000Z",
            "nullable": true,
            "format": "date-time"
          },
          "autoStart": {
            "type": "string",
            "description": "Auto-start status of the campaign",
            "example": "ENABLED",
            "enum": [
              "ENABLED",
              "DISABLED",
              "CANCELED_REJECTED",
              "CANCELED_LESS_THAN_TWO_PACK"
            ]
          },
          "paused": {
            "type": "boolean",
            "description": "Whether campaign is paused",
            "example": true
          },
          "attributionLinks": {
            "description": "Attribution links for the campaign",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/CampaignPublicAttributionLinksResponseDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "start",
          "autoStart",
          "paused"
        ]
      },
      "CountryGroupDailyLimitDto": {
        "type": "object",
        "properties": {
          "countries": {
            "description": "List of ISO 3166-1 alpha-2 country codes in the group",
            "example": [
              "US",
              "CA"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "limit": {
            "type": "string",
            "description": "Daily limit for the country group in microdollars",
            "example": "1000000"
          },
          "name": {
            "type": "string",
            "description": "Name of the country group",
            "example": "North America"
          }
        },
        "required": [
          "countries",
          "limit",
          "name"
        ]
      },
      "PatchBudgetCapDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "string",
            "description": "Total budget in microdollars",
            "example": "1000000000"
          },
          "daily": {
            "type": "string",
            "description": "Daily budget in microdollars",
            "example": "100000000"
          },
          "countryGroupDailyLimits": {
            "description": "Country group daily limits",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CountryGroupDailyLimitDto"
            }
          }
        }
      },
      "CampaignPublicBudgetCapResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Campaign public ID",
            "example": "abc123def456ghi789jkl012"
          },
          "campaignLimitType": {
            "type": "string",
            "description": "Campaign limit type",
            "enum": [
              "unlimited",
              "total"
            ],
            "example": "total"
          },
          "dailyLimitType": {
            "type": "string",
            "description": "Daily limit type",
            "enum": [
              "daily",
              "countryDaily",
              "unlimited"
            ],
            "example": "daily"
          },
          "total": {
            "type": "string",
            "description": "Total budget in microdollars (string to safely store bigints)",
            "example": "1000000000"
          },
          "daily": {
            "type": "string",
            "description": "Daily budget in microdollars (string to safely store bigints)",
            "example": "100000000"
          },
          "countryGroupDailyLimits": {
            "description": "Country group daily limits",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CountryGroupDailyLimitResponseDto"
            }
          }
        },
        "required": [
          "id",
          "campaignLimitType",
          "dailyLimitType",
          "total",
          "daily",
          "countryGroupDailyLimits"
        ]
      },
      "RoasBidDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "target": {
            "type": "number",
            "description": "Target ROAS value",
            "example": 1.5
          },
          "maxBid": {
            "type": "number",
            "description": "Maximum bid amount in micros",
            "example": 1000000
          }
        },
        "required": [
          "country",
          "target"
        ]
      },
      "ManualSourceBidDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "bid": {
            "type": "number",
            "description": "Bid amount in micros",
            "example": 1000000
          },
          "sourceAppId": {
            "type": "string",
            "description": "Source app ID",
            "example": "a1b2c3d4e5f6"
          }
        },
        "required": [
          "country",
          "bid",
          "sourceAppId"
        ]
      },
      "ManualBidDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "bid": {
            "type": "number",
            "description": "Bid amount in micros",
            "example": 1000000
          }
        },
        "required": [
          "country",
          "bid"
        ]
      },
      "AppEventBidDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "bid": {
            "type": "number",
            "description": "Bid amount in micros",
            "example": 1000000
          }
        },
        "required": [
          "country",
          "bid"
        ]
      },
      "UpdateCampaignPublicBidDto": {
        "type": "object",
        "properties": {
          "roasBids": {
            "description": "ROAS bids",
            "example": [
              {
                "country": "US",
                "target": 1.5,
                "maxBid": 1000000
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoasBidDto"
            }
          },
          "manualSourceBids": {
            "description": "Manual source level bids",
            "example": [
              {
                "country": "US",
                "bid": 1000000,
                "sourceAppId": "a1b2c3d4e5f6"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualSourceBidDto"
            }
          },
          "manualBids": {
            "description": "Manual bids",
            "example": [
              {
                "country": "US",
                "bid": 1000000
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualBidDto"
            }
          },
          "appEventBids": {
            "description": "App event bids",
            "example": [
              {
                "country": "US",
                "bid": 1000000
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppEventBidDto"
            }
          }
        }
      },
      "CampaignPublicBidResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Campaign public ID",
            "example": "abc123def456ghi789jkl012"
          },
          "roasBids": {
            "description": "ROAS bids",
            "nullable": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoasBidResponseDto"
            }
          },
          "manualBids": {
            "description": "Manual bids",
            "nullable": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualBidResponseDto"
            }
          },
          "manualSourceBids": {
            "description": "Manual source level bids",
            "nullable": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualSourceBidResponseDto"
            }
          },
          "appEventBids": {
            "description": "App event bids",
            "nullable": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppEventBidResponseDto"
            }
          }
        },
        "required": [
          "id"
        ]
      },
      "AppleDeviceTargetingUpdateDto": {
        "type": "object",
        "properties": {
          "deviceBlocklist": {
            "description": "Device blocklist for Apple devices",
            "example": [
              "iPhone6,1",
              "iPhone6,2"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "osMinVersion": {
            "type": "string",
            "description": "Minimum OS version for Apple devices",
            "example": "14.0"
          }
        }
      },
      "AndroidDeviceTargetingUpdateDto": {
        "type": "object",
        "properties": {
          "manufacturerAllowlist": {
            "description": "Manufacturer allowlist for Android devices",
            "example": [
              "Samsung",
              "Google"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "manufacturerBlocklist": {
            "description": "Manufacturer blocklist for Android devices",
            "example": [
              "Huawei"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "modelBlocklist": {
            "description": "Model blocklist for Android devices",
            "example": [
              "SM-G950U"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "osMinVersion": {
            "type": "string",
            "description": "Minimum OS version for Android devices",
            "example": "10.0"
          }
        }
      },
      "CountrySubdivisionUpdateDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country code",
            "example": "US"
          },
          "subdivisions": {
            "description": "Subdivision IDs",
            "example": [
              1,
              2,
              3
            ],
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "country",
          "subdivisions"
        ]
      },
      "UpdateCampaignPublicTargetingDto": {
        "type": "object",
        "properties": {
          "appleDevice": {
            "description": "Apple device targeting settings",
            "allOf": [
              {
                "$ref": "#/components/schemas/AppleDeviceTargetingUpdateDto"
              }
            ]
          },
          "androidDevice": {
            "description": "Android device targeting settings",
            "allOf": [
              {
                "$ref": "#/components/schemas/AndroidDeviceTargetingUpdateDto"
              }
            ]
          },
          "allowlistCountrySubdivisions": {
            "description": "Regional targeting - allowlisted country subdivisions",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CountrySubdivisionUpdateDto"
            }
          },
          "apptopiaSourceCategoriesAllowlist": {
            "description": "Apptopia source categories allowlist",
            "example": [
              "games",
              "entertainment"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "apptopiaSourceCategoriesBlocklist": {
            "description": "Apptopia source categories blocklist",
            "example": [
              "gambling"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sensorTowerSourceCategoriesAllowlist": {
            "description": "Sensor Tower source categories allowlist (granular game targeting)",
            "example": [
              "action",
              "casual"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sensorTowerSourceCategoriesBlocklist": {
            "description": "Sensor Tower source categories blocklist",
            "example": [
              "simulation"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "blocklistSources": {
            "description": "Blocklisted sources (app targeting)",
            "example": [
              "source-a",
              "source-b"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "allowlistSources": {
            "description": "Allowlisted sources (app targeting)",
            "example": [
              "source-x",
              "source-y"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CampaignPublicTargetingResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Campaign unique identifier",
            "example": "abc123def456ghi789jkl012"
          },
          "appleDevice": {
            "description": "Apple device targeting settings",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/AppleDeviceTargetingResponseDto"
              }
            ]
          },
          "androidDevice": {
            "description": "Android device targeting settings",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/AndroidDeviceTargetingResponseDto"
              }
            ]
          },
          "allowlistCountrySubdivisions": {
            "description": "Regional targeting - allowlisted country subdivisions",
            "example": [
              {
                "country": "US",
                "subdivisions": [
                  1,
                  2,
                  3
                ]
              },
              {
                "country": "CA",
                "subdivisions": [
                  10,
                  20
                ]
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllowlistCountrySubdivisionResponseDto"
            }
          },
          "apptopiaSourceCategoriesAllowlist": {
            "description": "Apptopia source categories allowlist",
            "example": [
              "games",
              "entertainment"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "apptopiaSourceCategoriesBlocklist": {
            "description": "Apptopia source categories blocklist",
            "example": [
              "gambling"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sensorTowerSourceCategoriesAllowlist": {
            "description": "Sensor Tower source categories allowlist",
            "example": [
              "action",
              "casual"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sensorTowerSourceCategoriesBlocklist": {
            "description": "Sensor Tower source categories blocklist",
            "example": [
              "simulation"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "blocklistSources": {
            "description": "Blocklisted sources",
            "example": [
              "source-a",
              "source-b"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "allowlistSources": {
            "description": "Allowlisted sources",
            "example": [
              "source-x",
              "source-y"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "allowlistCountrySubdivisions",
          "apptopiaSourceCategoriesAllowlist",
          "apptopiaSourceCategoriesBlocklist",
          "sensorTowerSourceCategoriesAllowlist",
          "sensorTowerSourceCategoriesBlocklist",
          "blocklistSources",
          "allowlistSources"
        ]
      },
      "CampaignPublicAssignCreativePacksRequestDto": {
        "type": "object",
        "properties": {
          "creativePackIds": {
            "description": "List of creative pack public IDs to assign to the campaign",
            "example": [
              "697cd528d6befff74e809084",
              "697cd528d6befff74e809085"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "creativePackIds"
        ]
      },
      "CampaignPublicAssignCreativePacksResponseDto": {
        "type": "object",
        "properties": {
          "creativePackIds": {
            "description": "Full list of creative pack public IDs assigned to the campaign",
            "example": [
              "697cd528d6befff74e809084",
              "697cd528d6befff74e809085"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "creativePackIds"
        ]
      },
      "CampaignPublicUnassignCreativePacksRequestDto": {
        "type": "object",
        "properties": {
          "creativePackIds": {
            "description": "List of creative pack public IDs to unassign from the campaign",
            "example": [
              "697cd528d6befff74e809084",
              "697cd528d6befff74e809085"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "creativePackIds"
        ]
      },
      "CampaignPublicUnassignCreativePacksResponseDto": {
        "type": "object",
        "properties": {
          "creativePackIds": {
            "description": "Full list of creative pack public IDs that remain assigned to the campaign",
            "example": [
              "697cd528d6befff74e809084"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "creativePackIds"
        ]
      },
      "CampaignPublicListResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "description": "List of campaigns",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CampaignPublicResponseDto"
            }
          },
          "meta": {
            "description": "Pagination metadata",
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicPaginationMetaDto"
              }
            ]
          }
        },
        "required": [
          "items",
          "meta"
        ]
      },
      "EligibilityResultDto": {
        "type": "object",
        "properties": {
          "eventOptimizationType": {
            "type": "string",
            "description": "The app event optimization type",
            "example": "level_complete"
          },
          "countries": {
            "description": "Countries eligible for this optimization type",
            "example": [
              "US",
              "GB"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "eventOptimizationType",
          "countries"
        ]
      },
      "CampaignManagementEligibilityResponseDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "description": "Total number of returned results",
            "example": 2
          },
          "results": {
            "description": "Eligibility results grouped by event optimization type",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EligibilityResultDto"
            }
          }
        },
        "required": [
          "total",
          "results"
        ]
      },
      "SdkEventNameResultDto": {
        "type": "object",
        "properties": {
          "eventOptimizationType": {
            "type": "string",
            "description": "The event optimization type",
            "example": "levelComplete"
          },
          "sdkEventNames": {
            "description": "List of SDK event names for this event optimization type",
            "example": [
              "level_complete_01",
              "level_complete_02"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "eventOptimizationType",
          "sdkEventNames"
        ]
      },
      "SdkEventNamesResponseDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "description": "Total number of returned results",
            "example": 1
          },
          "results": {
            "description": "SDK event names grouped by event optimization type",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SdkEventNameResultDto"
            }
          }
        },
        "required": [
          "total",
          "results"
        ]
      },
      "CreateCreativePackPublicDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Creative pack name",
            "example": "Summer Campaign Creatives"
          },
          "appleProductPageId": {
            "type": "string",
            "description": "Apple product page ID",
            "example": "12345678-1234-1234-1234-123456789012",
            "nullable": true
          },
          "androidStoreListing": {
            "type": "string",
            "description": "Android store listing ID",
            "example": "summer-listing",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Creative pack type. Each type requires a specific combination of creatives — see the endpoint description.",
            "enum": [
              "video",
              "playable",
              "video+playable",
              "banner"
            ],
            "example": "video"
          },
          "creativeIds": {
            "description": "Public identifiers of the creatives to include in the creative pack",
            "example": [
              "crt_abc123xyz456def7890ghij",
              "crt_endcard123xyz456def7890g"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "type",
          "creativeIds"
        ]
      },
      "CreativePackPublicResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Public identifier for the creative pack",
            "example": "abc123def456ghi789jkl012"
          },
          "applicationId": {
            "type": "string",
            "description": "Public identifier of the application the creative pack belongs to",
            "example": "12345678-1234-1234-1234-123456789012"
          },
          "name": {
            "type": "string",
            "description": "Creative pack name",
            "example": "Summer Campaign Creatives"
          },
          "type": {
            "type": "string",
            "description": "Creative pack type",
            "enum": [
              "video",
              "playable",
              "video+playable",
              "banner"
            ],
            "example": "video"
          },
          "appleProductPageId": {
            "type": "string",
            "description": "Apple product page ID",
            "example": "12345678-1234-1234-1234-123456789012",
            "nullable": true
          },
          "androidStoreListing": {
            "type": "string",
            "description": "Android store listing ID",
            "example": "summer-listing",
            "nullable": true
          },
          "moderationStatus": {
            "type": "string",
            "description": "Aggregated moderation status from all creatives",
            "enum": [
              "pending",
              "approved",
              "rejected"
            ],
            "example": "approved",
            "nullable": true
          },
          "ageRating": {
            "type": "number",
            "description": "Age rating",
            "example": 18,
            "nullable": true
          },
          "creativeIds": {
            "description": "Public identifiers of the creatives associated with the creative pack",
            "example": [
              "crt_abc123xyz456def7890ghij"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Created at",
            "example": "2024-01-01T00:00:00.000Z"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Updated at",
            "example": "2024-01-01T00:00:00.000Z"
          },
          "assignedCampaignIds": {
            "description": "Campaign IDs this creative pack is assigned to",
            "example": [
              "abc123def456ghi789jkl012",
              "abc123def456ghi789jkl013"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "applicationId",
          "name",
          "type",
          "appleProductPageId",
          "androidStoreListing",
          "moderationStatus",
          "ageRating",
          "creativeIds",
          "createdAt",
          "updatedAt",
          "assignedCampaignIds"
        ]
      },
      "CreativePackPublicListResponseDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "description": "Total number of creative packs matching the query",
            "example": 42
          },
          "offset": {
            "type": "number",
            "description": "Number of results skipped",
            "example": 0
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results returned",
            "example": 700
          },
          "results": {
            "description": "List of creative packs",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreativePackPublicResponseDto"
            }
          }
        },
        "required": [
          "total",
          "offset",
          "limit",
          "results"
        ]
      },
      "UpdateCreativePackPublicDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Creative pack name",
            "example": "Summer Campaign Creatives"
          },
          "appleProductPageId": {
            "type": "string",
            "description": "Apple product page ID",
            "example": "12345678-1234-1234-1234-123456789012",
            "nullable": true
          },
          "androidStoreListing": {
            "type": "string",
            "description": "Android store listing ID",
            "example": "summer-listing",
            "nullable": true
          }
        }
      },
      "ApplicationAttributionPublicResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Application ID",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "startUrl": {
            "type": "string",
            "description": "Attribution start URL",
            "example": "https://app.adjust.com/start/abc123"
          },
          "clickUrl": {
            "type": "string",
            "description": "Attribution click URL",
            "example": "https://app.adjust.com/abc123"
          },
          "viewUrl": {
            "type": "string",
            "description": "Attribution view URL",
            "example": "https://app.adjust.com/view/abc123",
            "nullable": true
          },
          "partner": {
            "type": "string",
            "description": "Attribution partner",
            "enum": [
              "other",
              "adjust",
              "airbridge",
              "appsflyer",
              "branch",
              "bytebrew",
              "kochava",
              "mailru",
              "singular",
              "tenjin",
              "yandex"
            ],
            "example": "adjust"
          },
          "type": {
            "type": "string",
            "description": "Attribution type",
            "enum": [
              "userLevel",
              "nonUserLevel",
              "mixed"
            ],
            "example": "userLevel",
            "nullable": true
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Timestamp when the attribution was created",
            "example": "2026-04-21T12:34:56.000Z"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Timestamp when the attribution was last updated",
            "example": "2026-04-21T13:00:00.000Z"
          }
        },
        "required": [
          "id",
          "startUrl",
          "clickUrl",
          "viewUrl",
          "partner",
          "createdAt",
          "updatedAt"
        ]
      },
      "UpdateApplicationAttributionPublicRequestDto": {
        "type": "object",
        "properties": {
          "startUrl": {
            "type": "string",
            "description": "Attribution start URL",
            "example": "https://app.adjust.com/start/abc123"
          },
          "clickUrl": {
            "type": "string",
            "description": "Attribution click URL",
            "example": "https://app.adjust.com/abc123"
          },
          "viewUrl": {
            "type": "string",
            "description": "Attribution view URL",
            "example": "https://app.adjust.com/view/abc123"
          }
        }
      },
      "ApplicationPublicResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Application unique identifier",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "name": {
            "type": "string",
            "description": "Application name",
            "example": "My Game App"
          },
          "gameId": {
            "type": "number",
            "description": "Publisher game id associated with the application",
            "nullable": true,
            "example": 12345
          },
          "platform": {
            "type": "string",
            "description": "Application platform",
            "enum": [
              "Android",
              "iOS",
              "OSX",
              "Windows",
              "Linux",
              "WebGL",
              "Windows_Store",
              "PS4",
              "PS5",
              "XboxOne",
              "tvOS",
              "Switch",
              "VisionOS"
            ],
            "example": "iOS"
          },
          "iconUrl": {
            "type": "string",
            "description": "Application icon URL",
            "nullable": true,
            "example": "https://example.com/icon.png"
          },
          "projectId": {
            "type": "string",
            "description": "Project the application belongs to",
            "format": "uuid",
            "nullable": true,
            "example": "5a8591dd-4039-49df-9202-96385ba3eff8"
          },
          "storeId": {
            "type": "string",
            "description": "Store identifier (bundle id / package name)",
            "nullable": true,
            "example": "com.example.app"
          },
          "store": {
            "type": "string",
            "description": "Store the application is published in",
            "enum": [
              "GooglePlay",
              "AppleAppStore",
              "SamsungGalaxy",
              "AmazonAppStore",
              "MacAppStore",
              "UDP",
              "MicrosoftStore",
              "HuaweiAppGallery",
              "APK"
            ],
            "nullable": true,
            "example": "AppleAppStore"
          },
          "testMode": {
            "type": "string",
            "description": "Application Test Mode",
            "enum": [
              "forceAll",
              "forceOff"
            ],
            "example": "forceAll",
            "nullable": true
          },
          "kidsSettings": {
            "type": "boolean",
            "description": "Kids settings flag",
            "example": false
          },
          "coppa": {
            "type": "boolean",
            "description": "COPPA compliance flag",
            "nullable": true,
            "example": false
          },
          "mixedAudience": {
            "type": "boolean",
            "description": "Mixed audience flag",
            "nullable": true,
            "example": false
          }
        },
        "required": [
          "id",
          "name",
          "gameId",
          "platform",
          "iconUrl",
          "projectId",
          "storeId",
          "store",
          "testMode",
          "kidsSettings",
          "coppa",
          "mixedAudience"
        ]
      },
      "PrivacyPublicDto": {
        "type": "object",
        "properties": {
          "coppa": {
            "type": "boolean",
            "description": "COPPA compliance flag"
          },
          "mixedAudience": {
            "type": "boolean",
            "description": "Mixed audience flag"
          }
        },
        "required": [
          "coppa",
          "mixedAudience"
        ]
      },
      "CreateApplicationPublicDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Application name"
          },
          "platform": {
            "type": "string",
            "description": "Application platform"
          },
          "iconUrl": {
            "type": "string",
            "description": "Application icon URL",
            "format": "uri"
          },
          "storeId": {
            "type": "string",
            "description": "Store identifier"
          },
          "store": {
            "type": "string",
            "description": "Store name"
          },
          "privacy": {
            "description": "Privacy settings",
            "allOf": [
              {
                "$ref": "#/components/schemas/PrivacyPublicDto"
              }
            ]
          },
          "projectId": {
            "type": "string",
            "description": "ID of the project to associate the new app with",
            "format": "uuid"
          },
          "projectName": {
            "type": "string",
            "description": "Name for a new project to create and associate the app with. Only used when projectId is not provided; defaults to the application name when omitted."
          }
        },
        "required": [
          "name",
          "platform"
        ]
      },
      "PrivacyUpdatePublicDto": {
        "type": "object",
        "properties": {
          "coppa": {
            "type": "boolean",
            "description": "COPPA compliance flag"
          },
          "mixedAudience": {
            "type": "boolean",
            "description": "Mixed audience flag"
          }
        }
      },
      "UpdateApplicationPublicDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Application name"
          },
          "storeId": {
            "type": "string",
            "description": "Store identifier"
          },
          "store": {
            "type": "string",
            "description": "Store name"
          },
          "privacy": {
            "description": "Privacy settings",
            "allOf": [
              {
                "$ref": "#/components/schemas/PrivacyUpdatePublicDto"
              }
            ]
          },
          "kidsSettings": {
            "type": "boolean",
            "description": "Kids settings flag. When true, triggers a USF update with coppa=true."
          }
        }
      }
    }
  }
}
```